15:55:17 <ryangoulding> #startmeeting kernel projects
15:55:17 <odl_meetbot> Meeting started Tue Sep  5 15:55:17 2017 UTC.  The chair is ryangoulding. Information about MeetBot at http://ci.openstack.org/meetbot.html.
15:55:17 <odl_meetbot> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
15:55:17 <odl_meetbot> The meeting name has been set to 'kernel_projects'
15:55:25 <ryangoulding> #topic agenda bashing
15:55:35 <ryangoulding> #info FYI Tooling to find the real root cause culprit of memory leaks related to non-closed transactions (and tx chains)
15:55:42 <ryangoulding> #info Checkstyle more rulez
15:55:52 <ryangoulding> #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:56:00 <ryangoulding> #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:56:08 <ryangoulding> #info errorprone! https://git.opendaylight.org/gerrit/#/c/62090/
15:56:17 <ryangoulding> #info How to determine a good poll interval in async tests given a timeout? Util to (exponentially?) increase? See discussion in https://git.opendaylight.org/gerrit/#/c/61927/
15:56:24 <ryangoulding> #info JavaDoc sites, next step? Merge https://git.opendaylight.org/gerrit/#/c/60213/
15:56:33 <ryangoulding> #info Thoughts / objections re. https://git.opendaylight.org/gerrit/#/c/50905/ ?
15:56:49 <ryangoulding> #info kernel projects status for Nitrogen
15:56:59 <ryangoulding> #info [Next week, with Stephen] 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.
16:02:33 <ryangoulding> #link https://bugs.opendaylight.org/show_bug.cgi?id=9033
16:02:46 <ryangoulding> #link https://bugs.opendaylight.org/show_bug.cgi?id=8987
16:04:25 <vorburger> sorry, I'm late, just joining now
16:04:59 <klou> #link https://docs.google.com/spreadsheets/d/1MYyGLFWN2RzUkJl8XMzXQ-3zWuOrUCQpIS6ORbmf4_U/edit#gid=794930820 - nitrogen CSIT problems
16:05:48 <ryangoulding> #topic Blocker Bugs
16:05:58 <ryangoulding> #link https://bugs.opendaylight.org/show_bug.cgi?id=9033
16:06:14 <ryangoulding> #info increased status to blocker
16:09:38 <vrpolak> Are we talking about 9033 or https://bugs.opendaylight.org/show_bug.cgi?id=9055 ?
16:10:23 <vrpolak> Probably the same thing reprted from different point of view.
16:13:31 <ryangoulding> #link https://bugs.opendaylight.org/show_bug.cgi?id=8987
16:15:14 <ryangoulding> #link https://logs.opendaylight.org/releng/jenkins092/bgpcep-csit-1node-gate-userfeatures-only-nitrogen/7/odl1_karaf.log.gz
16:15:20 <ryangoulding> #info something putting null in payload
16:15:26 <ryangoulding> #info either something wrong with test or restconf
16:15:47 <ryangoulding> #link https://bugs.opendaylight.org/show_bug.cgi?id=8988
16:16:17 <ryangoulding> #info the oproblem is likely test related in the XML payload
16:16:26 <ryangoulding> #info may be related to the boot process
16:16:38 <ryangoulding> #info when ODL is fully booted this does not appear to happen
16:16:49 <ryangoulding> #info this may only occur in a transient booting state
16:17:44 <ryangoulding> #link https://docs.google.com/spreadsheets/d/1MYyGLFWN2RzUkJl8XMzXQ-3zWuOrUCQpIS6ORbmf4_U/edit#gid=794930820
16:19:51 <ryangoulding> #link https://bugs.opendaylight.org/show_bug.cgi?id=9092
16:20:10 <ryangoulding> #info is this being looked at?
16:20:44 <ryangoulding> #info rovarga notes that instead the code should use normalized node, use NormalizedNodeCodec, then output to JSON directly
16:20:51 <ryangoulding> #info skitt says he will look at this later today
16:21:10 <skitt> #info tomorrow rather (Wednesday)
16:21:11 <ryangoulding> #info this is the websocket stuff for reference
16:21:41 <ryangoulding> #topic FYI Tooling to find the real root cause culprit of memory leaks related to non-closed transactions (and tx chains)
16:21:51 <ryangoulding> #link https://bugs.opendaylight.org/show_bug.cgi?id=9060
16:22:00 <ryangoulding> #link https://git.opendaylight.org/gerrit/#/q/topic:bug/9060
16:22:35 <ryangoulding> #info mdsal trace augmentations
16:22:52 <ryangoulding> #info now when you install, it adds a CLI to karaf “trace-transactions”
16:23:04 <ryangoulding> #info keeps track of the md-sal transactions using a new Broker Facade
16:23:19 <ryangoulding> #info helps find Transaction(s) that aren’t closed
16:23:32 <ryangoulding> #info includes the stack trace for unclosed transactions
16:23:42 <ryangoulding> #info this is mostly apublic disclosure that it is available
16:24:28 <ryangoulding> #action rgoulding to add documentation to “trace-transactions” command
16:24:55 <ryangoulding> #topic Checkstyle more rulez
16:25:02 <ryangoulding> #link https://lists.opendaylight.org/pipermail/odlparent-dev/2017-August/001316.html
16:25:59 <ryangoulding> #info Any objections to merging https://git.opendaylight.org/gerrit/#/c/43324/ ?
16:26:09 <ryangoulding> #info https://git.opendaylight.org/gerrit/#/c/62145/ (split off from https://git.opendaylight.org/gerrit/#/c/43331/)
16:26:17 <ryangoulding> #info Discussion 20/80% re. https://git.opendaylight.org/gerrit/#/c/43331/
16:27:11 <ryangoulding> #info https://git.opendaylight.org/gerrit/#/c/43324/ is incompatible so should only be in 3.X branch
16:27:20 <ryangoulding> #info odlparent 3.X is scheduled for Oxygen
16:27:55 <ryangoulding> #info changes will be picked up there
16:28:21 <ryangoulding> #link https://git.opendaylight.org/gerrit/#/c/43331/
16:28:25 <ryangoulding> #info maybe not a good idea?
16:29:23 <ryangoulding> #info must chain exception(s) if you are reacting to a different exception
16:30:07 <ryangoulding> #info vorburger if you log and propagate, then you may havecontext info you want to provide
16:31:14 <ryangoulding> #info raises the point that supressing the warnings for checkstyle is already pretty superfluorous
16:31:25 <ryangoulding> #info may not be a good idea for future code
16:31:38 <ryangoulding> #info -1 vs -2 was given because it was two rules and only one was contentious
16:31:55 <ryangoulding> #info skitt would two sets of rules be useful?
16:32:19 <ryangoulding> #info skitt this rule is nice to make sure that errors are only logged in one place where you have all of the context
16:32:44 <ryangoulding> #info kernel is more prone to “retrhowing” the exceptions
16:32:56 <ryangoulding> #info either that or dump tons of data into message, which isn’t great either
16:33:06 <ryangoulding> #info other thing is to add fields to Exception(s)
16:33:40 <ryangoulding> #info sometimes this isn’t great because the fields are not extracted in consumers
16:33:47 <ryangoulding> #info the information is available but not dumped into the log
16:33:58 <ryangoulding> #info that is somewhat worrisome (also fomratting becomes an issue)
16:34:58 <ryangoulding> #info vorburger will abandon https://git.opendaylight.org/gerrit/#/c/43331/
16:35:23 <ryangoulding> #info next odlparent release may require downstream consumers to reformat code
16:35:46 <ryangoulding> #info maybe revisit the abandoned idea in a future odlparent release
16:35:58 <ryangoulding> #topic 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?
16:36:20 <ryangoulding> #info FYI there are some IMHO neat utilities in infrautils around this now, see the ThreadFactoryProvider or directly the LoggingThreadUncaughtExceptionHandler, which we could use use (but don't have to, of course)
16:36:45 <ryangoulding> #info background threads may blow up and not get logged
16:36:50 <ryangoulding> #info these are written to system.out
16:37:38 <ryangoulding> #info rgoulding these will also get pushed into data/log/karaf.out
16:37:46 <ryangoulding> #info vorburger should we push these all in karaf.log?
16:37:58 <ryangoulding> #info is there a way to set the uncaughtexceptionhandler everywhere
16:37:59 <ryangoulding> ?
16:38:19 <ryangoulding> #info rovarga the semantic question is how do you deal with exceptions in a generic way?  you dont
16:38:36 <ryangoulding> #info if an exception is automatically recoverable, it is not an exception by definition
16:39:36 <ryangoulding> #info vorburger means log and re-throw, just so it is put in the proper log file
16:40:04 <ryangoulding> #info rethrowing will then propagate the exception, making the thread die
16:40:21 <ryangoulding> #info the idea is that there may be several uncaught exceptions that are never even seen
16:40:35 <ryangoulding> #info these are bad problems that get hidden under the radar unles syou start watching karaf.out
16:41:13 <ryangoulding> #info rovarga says it is aJVM level error and is thus handling it by only using whats available (stdout/stderr)
16:42:15 <ryangoulding> #info this could be handled via using ThreadPools or ThreadFactories that can be preconfigured to utilize a default handler
16:42:42 <ryangoulding> #info do a checkstyle plugin to check for instantiation of “naked” Threads and forbid it?
16:42:57 <ryangoulding> #info it is a tradeoff of what we let people do with the platform v.s., how consistent and what mistakes they can make
16:43:14 <ryangoulding> #info if we dont let them spin threads they wont make this mistake, but they also wont get to use thread instantiation
16:43:58 <ryangoulding> #info bala could we redirect karaf.out to karaf.log
16:44:19 <ryangoulding> #info rovarga then you would have to do line buffering into karaf.log since there are mutliple writers to karaf.log
16:47:14 <ryangoulding> #topic 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?
16:48:17 <ryangoulding> #info errorprone!
16:48:19 <ryangoulding> #link https://git.opendaylight.org/gerrit/#/c/62090/
16:48:23 <ryangoulding> #info have to switch compiler
16:48:28 <ryangoulding> #info not the default one
16:49:08 <ryangoulding> #info we would maybe be able to do this as a regular job vs part of the standard build process
16:49:12 <ryangoulding> #info act in a reactive way
16:49:44 <ryangoulding> #info people will automatically just do a get to get around this
16:49:53 <ryangoulding> #info there is room for abuse
16:50:22 <ryangoulding> #info checkstyle isn’t really capable
16:50:24 <ryangoulding> #info maybe findbugs
16:51:14 <ryangoulding> #topic How to determine a good poll interval in async tests given a timeout? Util to (exponentially?) increase? See discussion in https://git.opendaylight.org/gerrit/#/c/61927/
16:51:28 <ryangoulding> #link https://git.opendaylight.org/gerrit/#/c/61927/
16:52:40 <ryangoulding> #info intended audience?
16:52:47 <ryangoulding> #info are they waiting for uSec, minutes, etc?
16:52:59 <ryangoulding> #info this is the typical question you get in a utility dumping ground without users
16:53:12 <ryangoulding> #info it is probably fine for most users
16:53:17 <ryangoulding> #info this is used in Genius
16:53:37 <ryangoulding> #info is it the type of test in Geniuys that should eventually be rewritten to not rely upon timeouts?
16:53:51 <ryangoulding> #info testing something that required queue drainiage
16:54:05 <ryangoulding> #info in int/test something similar exists
16:54:16 <ryangoulding> #info require clients to define the configurable parameters
16:54:35 <ryangoulding> #info brought up by vrpolak
16:54:50 <ryangoulding> #info rovarga what is the use of this utility?  this then becomes a very thin wrapper
16:55:28 <ryangoulding> #info vorburger points out that its just 10 lines that he doesn’t want to copy and paste all over tests
16:58:27 <ryangoulding> #info who is allocating the queues?
17:00:51 <ryangoulding> #link https://bugs.opendaylight.org/show_bug.cgi?id=8927
17:01:42 <ryangoulding> #action jmorvay to take a look after blocker bugs are resolved
17:02:35 <ryangoulding> #endmeeting