{"0":{"blame":["Ryan Stewart <ryan.stewart@rackspace.com>","Ryan Stewart <zzantozz@users.noreply.github.com>","Suman Jakkula <suman.jakkula@gmail.com>","rohitsngh27 <rohitsngh27@gmail.com>"],"builderName":"java-master-ubuntu16.04_x86_64-1","currentStep":null,"eta":null,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/0/steps/git/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/0/steps/shell/logs/stdio"],["interrupt","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/0/steps/shell/logs/interrupt"]],"number":0,"properties":[["branch","master","Build"],["builddir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave"],["buildername","java-master-ubuntu16.04_x86_64-1","Builder"],["buildnumber",0,"Build"],["codebase","","Build"],["codename","xenial","BuildSlave"],["got_revision","4995a3e3706ace41dc92c94a9af43318503ca901","Git"],["project","","Build"],["repository","https://github.com/rax-maas/ele","Build"],["revision","4995a3e3706ace41dc92c94a9af43318503ca901","Build"],["scheduler","java build","Scheduler"],["slave_type","app","BuildSlave"],["slavename","slave-ubuntu16.04_x86_64-1","BuildSlave"],["workdir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave (deprecated)"]],"reason":"scheduler","results":5,"slave":"slave-ubuntu16.04_x86_64-1","sourceStamps":[{"branch":"master","changes":[{"at":"Mon 12 Jun 2023 16:01:14","branch":"master","category":null,"codebase":"","comments":"Update cobertura version to 2.1.1 to get coverage\nWe have to update cobertura version to 2.1.1 to be fully comptabile with java 8. Also excluded few depedencies which were causing conflicts in resolution.","files":[{"name":"java/build.xml"},{"name":"java/ivy.xml"}],"number":17044,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"e760595ac884cd2defd5636ccd5c46fca93af544","revision":"e760595ac884cd2defd5636ccd5c46fca93af544","revlink":"https://github.com/rax-maas/ele/commit/e760595ac884cd2defd5636ccd5c46fca93af544","when":1686585674,"who":"rohitsngh27 <rohitsngh27@gmail.com>"},{"at":"Mon 12 Jun 2023 17:49:32","branch":"master","category":null,"codebase":"","comments":"Added comments to depedency exclusion","files":[{"name":"java/ivy.xml"}],"number":17045,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"49d1dd17b64bb11d9899e51140b048929440ee5d","revision":"49d1dd17b64bb11d9899e51140b048929440ee5d","revlink":"https://github.com/rax-maas/ele/commit/49d1dd17b64bb11d9899e51140b048929440ee5d","when":1686592172,"who":"rohitsngh27 <rohitsngh27@gmail.com>"},{"at":"Mon 12 Jun 2023 18:07:33","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4842 from rax-maas/rohit/CMC-2769-Java-code-coverage-fix\n\nUpdate cobertura version to 2.1.1 to get coverage","files":[{"name":"java/build.xml"},{"name":"java/ivy.xml"}],"number":17046,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"72e8c5e46436b5c0c233d4261950dd3585e30087","revision":"72e8c5e46436b5c0c233d4261950dd3585e30087","revlink":"https://github.com/rax-maas/ele/commit/72e8c5e46436b5c0c233d4261950dd3585e30087","when":1686593253,"who":"Ryan Stewart <zzantozz@users.noreply.github.com>"},{"at":"Wed 09 Aug 2023 17:06:25","branch":"master","category":null,"codebase":"","comments":"enhance logging of cep collector mismatch\n\nWe see this log, \"have data from {} monitoring zones, only expected {}\n...\" quite often, and it's difficult to see what's happening.  Adding\nthe details of the actual and expected collectors may help get to the\nbottom of it.","files":[{"name":"java/src/com/cloudkick/util/MetricHelper.java"}],"number":17196,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"0312b9fcd1ed8d6de8e94b08e85fa15907354291","revision":"0312b9fcd1ed8d6de8e94b08e85fa15907354291","revlink":"https://github.com/rax-maas/ele/commit/0312b9fcd1ed8d6de8e94b08e85fa15907354291","when":1691600785,"who":"Ryan Stewart <ryan.stewart@rackspace.com>"},{"at":"Wed 09 Aug 2023 18:21:50","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4863 from rax-maas/mz-mismatch-logging\n\nenhance logging of cep collector mismatch","files":[{"name":"java/src/com/cloudkick/util/MetricHelper.java"}],"number":17197,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"3eb8234abe21e72fa0057ddac32be59f466fade0","revision":"3eb8234abe21e72fa0057ddac32be59f466fade0","revlink":"https://github.com/rax-maas/ele/commit/3eb8234abe21e72fa0057ddac32be59f466fade0","when":1691605310,"who":"Ryan Stewart <zzantozz@users.noreply.github.com>"},{"at":"Fri 11 Aug 2023 16:04:27","branch":"master","category":null,"codebase":"","comments":"close ScribeClient when ingestor thread finishes\n\nThe grafana \"Collectors\" dashboard shows a really high, and\never-growing, count of established tcp connections for each\ncollector. A while back we noticed that that majority of connections\nshown are actually between the ingestor process and the local scribe\nthat it talks to. It turns out there's a connection leak here that's\nbeen around forever.\n\nWhen the ingestor service starts, it creates a thread pool. When a\nthread is created in this pool, a ScribeClient is created for it,\nwhich opens a connection to the local scribe. Every time the stratcon\nhands off a \"journal file\" (a file containing lots of metrics), the\ningestor delegates one thread from the pool to handle the file.\n\nThe pool is a \"cached thread pool\". In theory, when a thread is\nfinished processing a file, it's returned to the pool to be reused\nlater.  What the original authors seem to have overlooked is that idle\nthreads will eventually be evicted from the pool. As a result, new\nthreads may need to be created later on to keep up with the\nwork. Since there's no code to close the scribe connection when a\nthread finishes, connections just keep piling up.\n\nYou can see evidence that the number of threads is the problem by the\nthread names. Each new thread is named `reader-service-N`, where `N`\nis an incrementing counter. Here are some real thread names from\nproduction right now:\n\n```\ncollector0.syd2.prod.cm.k1k.me: \"reader-service-290955\"\ncollector2.iad2.prod.cm.k1k.me: \"reader-service-378373\"\ncollector3.fra1.prod.cm.k1k.me: \"reader-service-201478\"\ncollector0.hkg1.prod.cm.k1k.me: \"reader-service-431369\"\n```\n\nIt's no wonder, then, that we see so many open connections.\n\nThis attempts to fix the problem by simply making the ScribeClient\nauto-closeable and putting it in a try-with-resources. That should\nensure that, after the thread's work finishes, meaning the run()\nmethod exits or else some uncaught exception is raised, the\nScribeClient, and therefore its underlying connection, will be closed.\n\nTests all pass, but unfortunately coverage for the Ingestor class is\nzero.","files":[{"name":"java/src/com/cloudkick/ingestor/Ingestor.java"},{"name":"java/src/com/cloudkick/ingestor/IngestorScribeClient.java"}],"number":17202,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"3eefc15a0a8016eb4ee7e1fdc3c4a983005cbd6e","revision":"3eefc15a0a8016eb4ee7e1fdc3c4a983005cbd6e","revlink":"https://github.com/rax-maas/ele/commit/3eefc15a0a8016eb4ee7e1fdc3c4a983005cbd6e","when":1691769867,"who":"Ryan Stewart <ryan.stewart@rackspace.com>"},{"at":"Sat 12 Aug 2023 00:21:24","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4865 from rax-maas/ingestor-connection-leak\n\nclose ScribeClient when ingestor thread finishes","files":[{"name":"java/src/com/cloudkick/ingestor/Ingestor.java"},{"name":"java/src/com/cloudkick/ingestor/IngestorScribeClient.java"}],"number":17203,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"ee48a15fd24ee0988f669a7337fdcd5dbb0dd208","revision":"ee48a15fd24ee0988f669a7337fdcd5dbb0dd208","revlink":"https://github.com/rax-maas/ele/commit/ee48a15fd24ee0988f669a7337fdcd5dbb0dd208","when":1691799684,"who":"Suman Jakkula <suman.jakkula@gmail.com>"},{"at":"Fri 11 Aug 2023 21:04:09","branch":"master","category":null,"codebase":"","comments":"exclude logback from classpath\n\nCobertura is pulling logback jars into the test classpath. Logback is\nan SLF4J implementation, and we're already using Log4j. With both on\nthe classpath, you get noisy errors like this:\n\n```\ninstrument-classes:\n[cobertura-instrument] SLF4J: Class path contains multiple SLF4J bindings.\n[cobertura-instrument] SLF4J: Found binding in [jar:file:/opt/ele/java/build/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]\n[cobertura-instrument] SLF4J: Found binding in [jar:file:/opt/ele/java/build/lib/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]\n[cobertura-instrument] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.\n[cobertura-instrument] SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]\n[cobertura-instrument] SLF4J: Class path contains multiple SLF4J bindings.\n[cobertura-instrument] SLF4J: Found binding in [jar:file:/opt/ele/java/build/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]\n[cobertura-instrument] SLF4J: Found binding in [jar:file:/opt/ele/java/build/lib/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]\n[cobertura-instrument] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.\n[cobertura-instrument] Cobertura 2.1.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT fileSLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]\n```\n\nWithout logback, it looks like\n\n```\ninstrument-classes:\n[cobertura-instrument] Cobertura 2.1.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file\n[cobertura-instrument] 23/08/11 20:57:14 INFO coveragedata.CoverageDataFileHandler: Cobertura: Loaded information on 480 classes.\n[cobertura-instrument] 23/08/11 20:57:36 INFO coveragedata.CoverageDataFileHandler: Cobertura: Saved information on 480 classes.\n[cobertura-instrument] 23/08/11 20:57:41 INFO coveragedata.CoverageDataFileHandler: Cobertura: Saved information on 480 classes.\n```","files":[{"name":"java/ivy.xml"}],"number":17204,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"ba5b7e37429d397a2fa21ca90be2cfd130f6dc0c","revision":"ba5b7e37429d397a2fa21ca90be2cfd130f6dc0c","revlink":"https://github.com/rax-maas/ele/commit/ba5b7e37429d397a2fa21ca90be2cfd130f6dc0c","when":1691787849,"who":"Ryan Stewart <ryan.stewart@rackspace.com>"},{"at":"Mon 14 Aug 2023 14:58:18","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4866 from rax-maas/java-exclude-logback\n\nexclude logback from classpath","files":[{"name":"java/ivy.xml"}],"number":17205,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"4995a3e3706ace41dc92c94a9af43318503ca901","revision":"4995a3e3706ace41dc92c94a9af43318503ca901","revlink":"https://github.com/rax-maas/ele/commit/4995a3e3706ace41dc92c94a9af43318503ca901","when":1692025098,"who":"Suman Jakkula <suman.jakkula@gmail.com>"}],"codebase":"","hasPatch":false,"project":"","repository":"https://github.com/rax-maas/ele","revision":"4995a3e3706ace41dc92c94a9af43318503ca901"}],"steps":[{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/0/steps/git/logs/stdio"]],"name":"git","results":[0,[]],"statistics":{},"step_number":0,"text":["update"],"times":[1694730212.018339,1694730256.582803],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/0/steps/shell/logs/stdio"],["interrupt","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/0/steps/shell/logs/interrupt"]],"name":"shell","results":[5,["exception","slave","lost"]],"statistics":{},"step_number":1,"text":["'ant","test'","exception","slave","lost"],"times":[1694730256.587183,1694730267.255077],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":false,"isStarted":false,"logs":[],"name":"shell_1","results":[null,[]],"statistics":{},"step_number":2,"text":[],"times":[null,null],"urls":{}}],"text":["retry","exception","slave","lost"],"times":[1694730212.017358,1694730267.255392]},"1":{"blame":["Ryan Stewart <ryan.stewart@rackspace.com>","Ryan Stewart <zzantozz@users.noreply.github.com>","Suman Jakkula <suman.jakkula@gmail.com>","rohitsngh27 <rohitsngh27@gmail.com>"],"builderName":"java-master-ubuntu16.04_x86_64-1","currentStep":null,"eta":null,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/1/steps/git/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/1/steps/shell/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/1/steps/shell_1/logs/stdio"]],"number":1,"properties":[["branch","master","Build"],["builddir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave"],["buildername","java-master-ubuntu16.04_x86_64-1","Builder"],["buildnumber",1,"Build"],["codebase","","Build"],["codename","xenial","BuildSlave"],["got_revision","4995a3e3706ace41dc92c94a9af43318503ca901","Git"],["project","","Build"],["repository","https://github.com/rax-maas/ele","Build"],["revision","4995a3e3706ace41dc92c94a9af43318503ca901","Build"],["scheduler","java build","Scheduler"],["slave_type","app","BuildSlave"],["slavename","slave-ubuntu16.04_x86_64-1","BuildSlave"],["workdir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave (deprecated)"]],"reason":"scheduler","results":0,"slave":"slave-ubuntu16.04_x86_64-1","sourceStamps":[{"branch":"master","changes":[{"at":"Mon 12 Jun 2023 16:01:14","branch":"master","category":null,"codebase":"","comments":"Update cobertura version to 2.1.1 to get coverage\nWe have to update cobertura version to 2.1.1 to be fully comptabile with java 8. Also excluded few depedencies which were causing conflicts in resolution.","files":[{"name":"java/build.xml"},{"name":"java/ivy.xml"}],"number":17044,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"e760595ac884cd2defd5636ccd5c46fca93af544","revision":"e760595ac884cd2defd5636ccd5c46fca93af544","revlink":"https://github.com/rax-maas/ele/commit/e760595ac884cd2defd5636ccd5c46fca93af544","when":1686585674,"who":"rohitsngh27 <rohitsngh27@gmail.com>"},{"at":"Mon 12 Jun 2023 17:49:32","branch":"master","category":null,"codebase":"","comments":"Added comments to depedency exclusion","files":[{"name":"java/ivy.xml"}],"number":17045,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"49d1dd17b64bb11d9899e51140b048929440ee5d","revision":"49d1dd17b64bb11d9899e51140b048929440ee5d","revlink":"https://github.com/rax-maas/ele/commit/49d1dd17b64bb11d9899e51140b048929440ee5d","when":1686592172,"who":"rohitsngh27 <rohitsngh27@gmail.com>"},{"at":"Mon 12 Jun 2023 18:07:33","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4842 from rax-maas/rohit/CMC-2769-Java-code-coverage-fix\n\nUpdate cobertura version to 2.1.1 to get coverage","files":[{"name":"java/build.xml"},{"name":"java/ivy.xml"}],"number":17046,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"72e8c5e46436b5c0c233d4261950dd3585e30087","revision":"72e8c5e46436b5c0c233d4261950dd3585e30087","revlink":"https://github.com/rax-maas/ele/commit/72e8c5e46436b5c0c233d4261950dd3585e30087","when":1686593253,"who":"Ryan Stewart <zzantozz@users.noreply.github.com>"},{"at":"Wed 09 Aug 2023 17:06:25","branch":"master","category":null,"codebase":"","comments":"enhance logging of cep collector mismatch\n\nWe see this log, \"have data from {} monitoring zones, only expected {}\n...\" quite often, and it's difficult to see what's happening.  Adding\nthe details of the actual and expected collectors may help get to the\nbottom of it.","files":[{"name":"java/src/com/cloudkick/util/MetricHelper.java"}],"number":17196,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"0312b9fcd1ed8d6de8e94b08e85fa15907354291","revision":"0312b9fcd1ed8d6de8e94b08e85fa15907354291","revlink":"https://github.com/rax-maas/ele/commit/0312b9fcd1ed8d6de8e94b08e85fa15907354291","when":1691600785,"who":"Ryan Stewart <ryan.stewart@rackspace.com>"},{"at":"Wed 09 Aug 2023 18:21:50","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4863 from rax-maas/mz-mismatch-logging\n\nenhance logging of cep collector mismatch","files":[{"name":"java/src/com/cloudkick/util/MetricHelper.java"}],"number":17197,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"3eb8234abe21e72fa0057ddac32be59f466fade0","revision":"3eb8234abe21e72fa0057ddac32be59f466fade0","revlink":"https://github.com/rax-maas/ele/commit/3eb8234abe21e72fa0057ddac32be59f466fade0","when":1691605310,"who":"Ryan Stewart <zzantozz@users.noreply.github.com>"},{"at":"Fri 11 Aug 2023 16:04:27","branch":"master","category":null,"codebase":"","comments":"close ScribeClient when ingestor thread finishes\n\nThe grafana \"Collectors\" dashboard shows a really high, and\never-growing, count of established tcp connections for each\ncollector. A while back we noticed that that majority of connections\nshown are actually between the ingestor process and the local scribe\nthat it talks to. It turns out there's a connection leak here that's\nbeen around forever.\n\nWhen the ingestor service starts, it creates a thread pool. When a\nthread is created in this pool, a ScribeClient is created for it,\nwhich opens a connection to the local scribe. Every time the stratcon\nhands off a \"journal file\" (a file containing lots of metrics), the\ningestor delegates one thread from the pool to handle the file.\n\nThe pool is a \"cached thread pool\". In theory, when a thread is\nfinished processing a file, it's returned to the pool to be reused\nlater.  What the original authors seem to have overlooked is that idle\nthreads will eventually be evicted from the pool. As a result, new\nthreads may need to be created later on to keep up with the\nwork. Since there's no code to close the scribe connection when a\nthread finishes, connections just keep piling up.\n\nYou can see evidence that the number of threads is the problem by the\nthread names. Each new thread is named `reader-service-N`, where `N`\nis an incrementing counter. Here are some real thread names from\nproduction right now:\n\n```\ncollector0.syd2.prod.cm.k1k.me: \"reader-service-290955\"\ncollector2.iad2.prod.cm.k1k.me: \"reader-service-378373\"\ncollector3.fra1.prod.cm.k1k.me: \"reader-service-201478\"\ncollector0.hkg1.prod.cm.k1k.me: \"reader-service-431369\"\n```\n\nIt's no wonder, then, that we see so many open connections.\n\nThis attempts to fix the problem by simply making the ScribeClient\nauto-closeable and putting it in a try-with-resources. That should\nensure that, after the thread's work finishes, meaning the run()\nmethod exits or else some uncaught exception is raised, the\nScribeClient, and therefore its underlying connection, will be closed.\n\nTests all pass, but unfortunately coverage for the Ingestor class is\nzero.","files":[{"name":"java/src/com/cloudkick/ingestor/Ingestor.java"},{"name":"java/src/com/cloudkick/ingestor/IngestorScribeClient.java"}],"number":17202,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"3eefc15a0a8016eb4ee7e1fdc3c4a983005cbd6e","revision":"3eefc15a0a8016eb4ee7e1fdc3c4a983005cbd6e","revlink":"https://github.com/rax-maas/ele/commit/3eefc15a0a8016eb4ee7e1fdc3c4a983005cbd6e","when":1691769867,"who":"Ryan Stewart <ryan.stewart@rackspace.com>"},{"at":"Sat 12 Aug 2023 00:21:24","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4865 from rax-maas/ingestor-connection-leak\n\nclose ScribeClient when ingestor thread finishes","files":[{"name":"java/src/com/cloudkick/ingestor/Ingestor.java"},{"name":"java/src/com/cloudkick/ingestor/IngestorScribeClient.java"}],"number":17203,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"ee48a15fd24ee0988f669a7337fdcd5dbb0dd208","revision":"ee48a15fd24ee0988f669a7337fdcd5dbb0dd208","revlink":"https://github.com/rax-maas/ele/commit/ee48a15fd24ee0988f669a7337fdcd5dbb0dd208","when":1691799684,"who":"Suman Jakkula <suman.jakkula@gmail.com>"},{"at":"Fri 11 Aug 2023 21:04:09","branch":"master","category":null,"codebase":"","comments":"exclude logback from classpath\n\nCobertura is pulling logback jars into the test classpath. Logback is\nan SLF4J implementation, and we're already using Log4j. With both on\nthe classpath, you get noisy errors like this:\n\n```\ninstrument-classes:\n[cobertura-instrument] SLF4J: Class path contains multiple SLF4J bindings.\n[cobertura-instrument] SLF4J: Found binding in [jar:file:/opt/ele/java/build/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]\n[cobertura-instrument] SLF4J: Found binding in [jar:file:/opt/ele/java/build/lib/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]\n[cobertura-instrument] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.\n[cobertura-instrument] SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]\n[cobertura-instrument] SLF4J: Class path contains multiple SLF4J bindings.\n[cobertura-instrument] SLF4J: Found binding in [jar:file:/opt/ele/java/build/lib/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]\n[cobertura-instrument] SLF4J: Found binding in [jar:file:/opt/ele/java/build/lib/slf4j-log4j12-1.7.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]\n[cobertura-instrument] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.\n[cobertura-instrument] Cobertura 2.1.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT fileSLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]\n```\n\nWithout logback, it looks like\n\n```\ninstrument-classes:\n[cobertura-instrument] Cobertura 2.1.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file\n[cobertura-instrument] 23/08/11 20:57:14 INFO coveragedata.CoverageDataFileHandler: Cobertura: Loaded information on 480 classes.\n[cobertura-instrument] 23/08/11 20:57:36 INFO coveragedata.CoverageDataFileHandler: Cobertura: Saved information on 480 classes.\n[cobertura-instrument] 23/08/11 20:57:41 INFO coveragedata.CoverageDataFileHandler: Cobertura: Saved information on 480 classes.\n```","files":[{"name":"java/ivy.xml"}],"number":17204,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"ba5b7e37429d397a2fa21ca90be2cfd130f6dc0c","revision":"ba5b7e37429d397a2fa21ca90be2cfd130f6dc0c","revlink":"https://github.com/rax-maas/ele/commit/ba5b7e37429d397a2fa21ca90be2cfd130f6dc0c","when":1691787849,"who":"Ryan Stewart <ryan.stewart@rackspace.com>"},{"at":"Mon 14 Aug 2023 14:58:18","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4866 from rax-maas/java-exclude-logback\n\nexclude logback from classpath","files":[{"name":"java/ivy.xml"}],"number":17205,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"4995a3e3706ace41dc92c94a9af43318503ca901","revision":"4995a3e3706ace41dc92c94a9af43318503ca901","revlink":"https://github.com/rax-maas/ele/commit/4995a3e3706ace41dc92c94a9af43318503ca901","when":1692025098,"who":"Suman Jakkula <suman.jakkula@gmail.com>"}],"codebase":"","hasPatch":false,"project":"","repository":"https://github.com/rax-maas/ele","revision":"4995a3e3706ace41dc92c94a9af43318503ca901"}],"steps":[{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/1/steps/git/logs/stdio"]],"name":"git","results":[0,[]],"statistics":{},"step_number":0,"text":["update"],"times":[1694730267.825941,1694730291.5966],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/1/steps/shell/logs/stdio"]],"name":"shell","results":[0,[]],"statistics":{},"step_number":1,"text":["'ant","test'"],"times":[1694730291.596936,1694730513.668151],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/1/steps/shell_1/logs/stdio"]],"name":"shell_1","results":[0,[]],"statistics":{},"step_number":2,"text":["'ant","dist'"],"times":[1694730513.673258,1694730541.071248],"urls":{}}],"text":["build","successful"],"times":[1694730267.825093,1694730541.072753]},"2":{"blame":["Ryan Stewart <ryan.stewart@rackspace.com>","Suman Jakkula <suman.jakkula@gmail.com>"],"builderName":"java-master-ubuntu16.04_x86_64-1","currentStep":null,"eta":null,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/2/steps/git/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/2/steps/shell/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/2/steps/shell_1/logs/stdio"]],"number":2,"properties":[["branch","master","Build"],["builddir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave"],["buildername","java-master-ubuntu16.04_x86_64-1","Builder"],["buildnumber",2,"Build"],["codebase","","Build"],["codename","xenial","BuildSlave"],["got_revision","02f861f8bdc3a2c3a529fb95ae91e1731a94ee43","Git"],["project","","Build"],["repository","https://github.com/rax-maas/ele","Build"],["revision","02f861f8bdc3a2c3a529fb95ae91e1731a94ee43","Build"],["scheduler","java build","Scheduler"],["slave_type","app","BuildSlave"],["slavename","slave-ubuntu16.04_x86_64-1","BuildSlave"],["workdir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave (deprecated)"]],"reason":"scheduler","results":0,"slave":"slave-ubuntu16.04_x86_64-1","sourceStamps":[{"branch":"master","changes":[{"at":"Wed 14 Feb 2024 22:03:13","branch":"master","category":null,"codebase":"","comments":"limit ingestor process read threads\n\nThe ingestor process lives on collectors and reads metrics from the\nstratcon, which stratcon has aggregated from the local noits. The\nstratcon writes data to files and notifies ingestor each time a new\nfile is ready to be read. For each file, ingestor allocates a thread\nto read it and ingest all the metrics. The threads are kept in a\ncached thread pool with a max size of Integer.MAX_VALUE. This means\nwhen there's any kind of backup in reading metrics, ingestor will\npotentially try to spawn up to Integer.MAX_VALUE threads. We've seen\ncases in staging where over 1 million stratcon files were waiting to\nbe read, and the ingestor can't handle that many. That many threads\nhas too much overhead to get anything useful done.\n\nThis changes the thread pool to a fixed thread pool with a default\nlimit of ten threads, overridable by configuration. When tested in\nstaging on the stratcon with a million files waiting to be consumed,\nten threads burned through them in an hour or so. Now `top` shows a\ndecent amount of IO wait (~25%), which is appropriate when doing\nread-intensive work, instead of a huge amount of CPU being consumed as\na giant number of threads contend with each other.\n\nResources aren't infinite, people! Less is more here.","files":[{"name":"java/src/com/cloudkick/ingestor/Ingestor.java"},{"name":"java/src/com/cloudkick/ingestor/util/Configuration.java"}],"number":17317,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"c9397c13b35a8b9eb09ed12721f5f18ecee38c79","revision":"c9397c13b35a8b9eb09ed12721f5f18ecee38c79","revlink":"https://github.com/rax-maas/ele/commit/c9397c13b35a8b9eb09ed12721f5f18ecee38c79","when":1707948193,"who":"Ryan Stewart <ryan.stewart@rackspace.com>"},{"at":"Wed 14 Feb 2024 22:22:58","branch":"master","category":null,"codebase":"","comments":"Merge pull request #4893 from rax-maas/limit-ingestor-threads\n\nlimit ingestor process read threads","files":[{"name":"java/src/com/cloudkick/ingestor/Ingestor.java"},{"name":"java/src/com/cloudkick/ingestor/util/Configuration.java"}],"number":17318,"project":"","properties":[],"repository":"https://github.com/rax-maas/ele","rev":"02f861f8bdc3a2c3a529fb95ae91e1731a94ee43","revision":"02f861f8bdc3a2c3a529fb95ae91e1731a94ee43","revlink":"https://github.com/rax-maas/ele/commit/02f861f8bdc3a2c3a529fb95ae91e1731a94ee43","when":1707949378,"who":"Suman Jakkula <suman.jakkula@gmail.com>"}],"codebase":"","hasPatch":false,"project":"","repository":"https://github.com/rax-maas/ele","revision":"02f861f8bdc3a2c3a529fb95ae91e1731a94ee43"}],"steps":[{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/2/steps/git/logs/stdio"]],"name":"git","results":[0,[]],"statistics":{},"step_number":0,"text":["update"],"times":[1707949386.574197,1707949467.307032],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/2/steps/shell/logs/stdio"]],"name":"shell","results":[0,[]],"statistics":{},"step_number":1,"text":["'ant","test'"],"times":[1707949467.30969,1707949564.110068],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/2/steps/shell_1/logs/stdio"]],"name":"shell_1","results":[0,[]],"statistics":{},"step_number":2,"text":["'ant","dist'"],"times":[1707949564.111342,1707949586.268312],"urls":{}}],"text":["build","successful"],"times":[1707949386.573455,1707949586.279461]},"3":{"blame":[],"builderName":"java-master-ubuntu16.04_x86_64-1","currentStep":null,"eta":null,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/3/steps/git/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/3/steps/shell/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/3/steps/shell_1/logs/stdio"]],"number":3,"properties":[["branch","","Build"],["builddir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave"],["buildername","java-master-ubuntu16.04_x86_64-1","Builder"],["buildnumber",3,"Build"],["codebase","","Build"],["codename","xenial","BuildSlave"],["force_build_clean",false,"Force Build Form"],["got_revision","52ed972810d69eddef1755fe539c3da888ba21f3","Git"],["owner","","Force Build Form"],["owners",[""],"A build was forced by '': "],["project","","Build"],["pull_url","","Force Build Form"],["reason","","Force Build Form"],["repository","","Build"],["revision","","Build"],["scheduler","force","Scheduler"],["slave_type","app","BuildSlave"],["slavename","slave-ubuntu16.04_x86_64-1","BuildSlave"],["workdir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave (deprecated)"]],"reason":"A build was forced by '': ","results":0,"slave":"slave-ubuntu16.04_x86_64-1","sourceStamps":[{"branch":"","changes":[],"codebase":"","hasPatch":false,"project":"","repository":"","revision":""}],"steps":[{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/3/steps/git/logs/stdio"]],"name":"git","results":[0,[]],"statistics":{},"step_number":0,"text":["update"],"times":[1716209533.788892,1716209583.063431],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/3/steps/shell/logs/stdio"]],"name":"shell","results":[0,[]],"statistics":{},"step_number":1,"text":["'ant","test'"],"times":[1716209583.06574,1716209675.748568],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/3/steps/shell_1/logs/stdio"]],"name":"shell_1","results":[0,[]],"statistics":{},"step_number":2,"text":["'ant","dist'"],"times":[1716209675.753535,1716209697.04171],"urls":{}}],"text":["build","successful"],"times":[1716209533.788674,1716209697.052134]},"4":{"blame":[],"builderName":"java-master-ubuntu16.04_x86_64-1","currentStep":null,"eta":null,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/4/steps/git/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/4/steps/shell/logs/stdio"],["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/4/steps/shell_1/logs/stdio"]],"number":4,"properties":[["branch","","Build"],["builddir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave"],["buildername","java-master-ubuntu16.04_x86_64-1","Builder"],["buildnumber",4,"Build"],["codebase","","Build"],["codename","xenial","BuildSlave"],["force_build_clean",false,"Force Build Form"],["got_revision","10e3d8e1d80e5d721ada77c7ff0c1ef21f60c330","Git"],["owner","","Force Build Form"],["owners",[""],"A build was forced by '': "],["project","","Build"],["pull_url","","Force Build Form"],["reason","","Force Build Form"],["repository","","Build"],["revision","","Build"],["scheduler","force","Scheduler"],["slave_type","app","BuildSlave"],["slavename","slave-ubuntu16.04_x86_64-1","BuildSlave"],["workdir","/home/buildslave/slave-ubuntu16.04_x86_64-1/java-master-ubuntu16_04_x86_64-1","slave (deprecated)"]],"reason":"A build was forced by '': ","results":0,"slave":"slave-ubuntu16.04_x86_64-1","sourceStamps":[{"branch":"","changes":[],"codebase":"","hasPatch":false,"project":"","repository":"","revision":""}],"steps":[{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/4/steps/git/logs/stdio"]],"name":"git","results":[0,[]],"statistics":{},"step_number":0,"text":["update"],"times":[1723749796.799684,1723749887.725686],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/4/steps/shell/logs/stdio"]],"name":"shell","results":[0,[]],"statistics":{},"step_number":1,"text":["'ant","test'"],"times":[1723749887.728463,1723749975.947637],"urls":{}},{"eta":null,"expectations":[],"hidden":false,"isFinished":true,"isStarted":true,"logs":[["stdio","https://ele-buildbot.cm.k1k.me/builders/java-master-ubuntu16.04_x86_64-1/builds/4/steps/shell_1/logs/stdio"]],"name":"shell_1","results":[0,[]],"statistics":{},"step_number":2,"text":["'ant","dist'"],"times":[1723749975.948869,1723749996.971757],"urls":{}}],"text":["build","successful"],"times":[1723749796.79946,1723749996.97224]}}