15:57:12 <rgoulding> #startmeeting kernel projects 15:57:12 <odl_meetbot> 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 <odl_meetbot> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 15:57:12 <odl_meetbot> The meeting name has been set to 'kernel_projects' 15:57:17 <rgoulding> #topic agenda bashing 15:57:32 <rgoulding> #info Carbon blocker: BUG-9028 15:57:39 <rgoulding> #info Execution Origins 15:57:53 <rgoulding> #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 <rgoulding> #info Checkstyle more rulez 15:58:14 <rgoulding> #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 <rgoulding> #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 <rgoulding> #info errorprone! https://git.opendaylight.org/gerrit/#/c/62090/ 15:58:43 <rgoulding> #info JavaDoc sites, next step? Merge https://git.opendaylight.org/gerrit/#/c/60213/ 15:58:51 <rgoulding> #info 15:58:53 <rgoulding> #undo 15:58:53 <odl_meetbot> Removing item from minutes: <MeetBot.ircmeeting.items.Info object at 0x144b0d0> 15:58:55 <rgoulding> #info Thoughts / objections re. https://git.opendaylight.org/gerrit/#/c/50905/ ? 15:59:10 <rgoulding> #info merged/pending patches 16:04:27 <rgoulding> #topic Execution Origins 16:04:46 <rgoulding> #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 <rgoulding> #info agree together on next step re. actually using this new infra 16:05:01 <rgoulding> #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 <rgoulding> #info (re)intro https://git.opendaylight.org/gerrit/#/c/60828/ into odlparent (reverted in https://git.opendaylight.org/gerrit/#/c/60857/) 16:05:15 <rgoulding> #info quid https://git.opendaylight.org/gerrit/#/c/61499/ re. log4j instead of slf4j-simple for test - any better ideas, anyone? 16:05:43 <rgoulding> #link https://git.opendaylight.org/gerrit/#/q/topic:mdc 16:05:52 <rgoulding> #info could be helpful to correlate log events 16:06:09 <rgoulding> #info could be useful to know that log messages are coming from common events 16:06:55 <rgoulding> #info pass an identifier down through the corresponding calls, so that you can correlate as you propagate down further into code 16:07:21 <rgoulding> #info mdc provides helpers for slf4j that allows you to set the “execution origin” id 16:09:16 <rgoulding> #info rovarga asks how this propagates into slf4j and how does it propagate across threads 16:09:34 <rgoulding> #info vorburger says mdc has an mdc API that allows insertion of this metadata 16:09:55 <rovarga> #info MDC == Mapped Diagnostic Context 16:10:57 <rgoulding> #info “execution origin” is a cross-event correlator, and is just a linear counter 16:11:15 <rgoulding> #info you don’t put any contextual string or anything in it 16:11:53 <rgoulding> #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 <rgoulding> #info rovarga you cannot just stick it in there, you need to assign it to an origin and wrap it 16:12:23 <rgoulding> #info how do you ensure that the generated identifier is unique? 16:13:04 <rgoulding> #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 <rgoulding> #info propagation of ids cross-thread 16:14:10 <rgoulding> #info we don’t have control over where Thread(s) are created 16:14:23 <rgoulding> #info we could use the wrapper called CrossThreadContextHolder 16:14:30 <rgoulding> #info a small wrapper around slf4j api 16:14:36 <rgoulding> #link https://git.opendaylight.org/gerrit/#/c/61524/3/common/util/src/main/java/org/opendaylight/infrautils/utils/mdc/CrossThreadContextHolder.java 16:14:48 <rgoulding> #info use set/get wherever you switch threads 16:15:03 <rgoulding> #info this must be done manually 16:16:24 <rgoulding> #info rovarga people will forget to propagate the context, which makes scaing difficult 16:16:31 <rgoulding> #info there is implicit state expressed in the ThreadLocal 16:17:20 <rgoulding> #info this is not limited to a single JVM which can make tracking this difficult 16:19:05 <rgoulding> #info any logs from a registered listener would have the same execution origin id 16:19:09 <rgoulding> #info that is problematic through akka 16:19:17 <rgoulding> #info there is no straight path for a transaction commit 16:21:23 <rgoulding> #info potential impllications on performance that are far from trivial, especially wrt to lambdas 16:22:00 <rgoulding> #info tpantelis you may be able to propagate the ID through the existing message id as a threadlocal 16:22:42 <rgoulding> #info i.e., attach it to the transaction ID 16:24:47 <rgoulding> #info propagation through md-sal there are a ton of problems that need to be solved 16:25:13 <rgoulding> #info tpantelis says maybe try just propagating for RPC(s) first 16:26:30 <rgoulding> #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 <rgoulding> #topic BUG-9028 16:39:26 <rgoulding> #info rovarga what are the avenues in which we can fix this 16:42:17 <rgoulding> #info this is happening in the operational data store in 3-node cluster (with followers) 17:01:04 <rovarga> #link https://git.opendaylight.org/gerrit/#/c/62096/1 17:03:27 <rgoulding> #endmeeting