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