15:57:12 #startmeeting kernel projects 15:57:12 Meeting started Tue Aug 22 15:57:12 2017 UTC. The chair is rgoulding. Information about MeetBot at http://ci.openstack.org/meetbot.html. 15:57:12 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 15:57:12 The meeting name has been set to 'kernel_projects' 15:57:17 #topic agenda bashing 15:57:32 #info Carbon blocker: BUG-9028 15:57:39 #info Execution Origins 15:57:53 #info Discussion: Should each thing create its own ExecutorService or should we have a single central shared one? Like an EE servers's manged thread pools. 15:57:59 #info Checkstyle more rulez 15:58:14 #info Exceptions lost in log from background threads: How to hunt down ALL usages of thread factories, and make ALL of them use the setUncaughtExceptionHandler() ? Just grep all (kernel project) code? Any volunteers? Or is there any way we could enforce it? 15:58:25 #info Make sure that nobody just ignores returned Future (or CompletionStage, and others..) - how? FindBugs, and/or errorprone, and @CheckReturnValue ? How can we get started to become more serious about this, everywhere? 15:58:35 #info errorprone! https://git.opendaylight.org/gerrit/#/c/62090/ 15:58:43 #info JavaDoc sites, next step? Merge https://git.opendaylight.org/gerrit/#/c/60213/ 15:58:51 #info 15:58:53 #undo 15:58:53 Removing item from minutes: 15:58:55 #info Thoughts / objections re. https://git.opendaylight.org/gerrit/#/c/50905/ ? 15:59:10 #info merged/pending patches 16:04:27 #topic Execution Origins 16:04:46 #info Introduction and explain the idea, please see https://git.opendaylight.org/gerrit/#/q/topic:mdc before if you have the time 16:04:53 #info agree together on next step re. actually using this new infra 16:05:01 #info need a new Servlet Filter with it, and then OK to have restconf use that (and dep. on infrautils), see https://lists.opendaylight.org/pipermail/netconf-dev/2017-July/001343.html ? 16:05:08 #info (re)intro https://git.opendaylight.org/gerrit/#/c/60828/ into odlparent (reverted in https://git.opendaylight.org/gerrit/#/c/60857/) 16:05:15 #info quid https://git.opendaylight.org/gerrit/#/c/61499/ re. log4j instead of slf4j-simple for test - any better ideas, anyone? 16:05:43 #link https://git.opendaylight.org/gerrit/#/q/topic:mdc 16:05:52 #info could be helpful to correlate log events 16:06:09 #info could be useful to know that log messages are coming from common events 16:06:55 #info pass an identifier down through the corresponding calls, so that you can correlate as you propagate down further into code 16:07:21 #info mdc provides helpers for slf4j that allows you to set the “execution origin” id 16:09:16 #info rovarga asks how this propagates into slf4j and how does it propagate across threads 16:09:34 #info vorburger says mdc has an mdc API that allows insertion of this metadata 16:09:55 #info MDC == Mapped Diagnostic Context 16:10:57 #info “execution origin” is a cross-event correlator, and is just a linear counter 16:11:15 #info you don’t put any contextual string or anything in it 16:11:53 #info if you would like to correlate this with other system(s) (i.e., openstack), have them send you the ID and stick taht into the log 16:12:10 #info rovarga you cannot just stick it in there, you need to assign it to an origin and wrap it 16:12:23 #info how do you ensure that the generated identifier is unique? 16:13:04 #info the suggestion, as currently proposed, is to have an internal opendaylight id, and not mix this up with correlating with outside systems (i.e., several openstack nodes etc.) 16:13:39 #info propagation of ids cross-thread 16:14:10 #info we don’t have control over where Thread(s) are created 16:14:23 #info we could use the wrapper called CrossThreadContextHolder 16:14:30 #info a small wrapper around slf4j api 16:14:36 #link https://git.opendaylight.org/gerrit/#/c/61524/3/common/util/src/main/java/org/opendaylight/infrautils/utils/mdc/CrossThreadContextHolder.java 16:14:48 #info use set/get wherever you switch threads 16:15:03 #info this must be done manually 16:16:24 #info rovarga people will forget to propagate the context, which makes scaing difficult 16:16:31 #info there is implicit state expressed in the ThreadLocal 16:17:20 #info this is not limited to a single JVM which can make tracking this difficult 16:19:05 #info any logs from a registered listener would have the same execution origin id 16:19:09 #info that is problematic through akka 16:19:17 #info there is no straight path for a transaction commit 16:21:23 #info potential impllications on performance that are far from trivial, especially wrt to lambdas 16:22:00 #info tpantelis you may be able to propagate the ID through the existing message id as a threadlocal 16:22:42 #info i.e., attach it to the transaction ID 16:24:47 #info propagation through md-sal there are a ton of problems that need to be solved 16:25:13 #info tpantelis says maybe try just propagating for RPC(s) first 16:26:30 #info maybe there is a halfway point where you can propagate through as much as you can without going through the kernel etc. 16:38:55 #topic BUG-9028 16:39:26 #info rovarga what are the avenues in which we can fix this 16:42:17 #info this is happening in the operational data store in 3-node cluster (with followers) 17:01:04 #link https://git.opendaylight.org/gerrit/#/c/62096/1 17:03:27 #endmeeting