)]}'
{"README.md":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"5cbda1470b92c39dde5597bb47c030ee72b21960","unresolved":false,"context_lines":[{"line_number":80,"context_line":"port: UDP port number where the Monasca Agent running a StatsD daemon will consume"},{"line_number":81,"context_line":"      the metrics produced by Storm / Threshold Engine"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"prefix: This string will be prefixed to the internal metric dimensions: A map of"},{"line_number":84,"context_line":"        key/value pairs that will be passed along as dimensions for each metric"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"filter: A regular expression that filters out how much internal Storm / Threshold Engine metrics"}],"source_content_type":"text/x-gfm","patch_set":4,"id":"baa041b7_39c5b13b","line":83,"updated":"2015-04-03 13:40:10.000000000","message":"I think this is supposed to be two lines","commit_id":"8c3817364e149fd59edeab42c50a6a340090af05"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"5cbda1470b92c39dde5597bb47c030ee72b21960","unresolved":false,"context_lines":[{"line_number":81,"context_line":"      the metrics produced by Storm / Threshold Engine"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"prefix: This string will be prefixed to the internal metric dimensions: A map of"},{"line_number":84,"context_line":"        key/value pairs that will be passed along as dimensions for each metric"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"filter: A regular expression that filters out how much internal Storm / Threshold Engine metrics"},{"line_number":87,"context_line":"        will be sent.  There is a default expression configured that allows the monitoring of"}],"source_content_type":"text/x-gfm","patch_set":4,"id":"baa041b7_79d21902","line":84,"updated":"2015-04-03 13:40:10.000000000","message":"additional dimensions","commit_id":"8c3817364e149fd59edeab42c50a6a340090af05"}],"thresh/src/main/java/monasca/thresh/utils/StatsdConfig.java":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"5cbda1470b92c39dde5597bb47c030ee72b21960","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    this.filter \u003d filter;"},{"line_number":45,"context_line":"  }"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  private String filter;"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  public Map\u003cString, String\u003e getDimensions() {"},{"line_number":50,"context_line":"    return dimensions;"}],"source_content_type":"text/x-java","patch_set":4,"id":"baa041b7_f912a9b3","line":47,"updated":"2015-04-03 13:40:10.000000000","message":"This should be before the getter and setter with the other instance properties","commit_id":"8c3817364e149fd59edeab42c50a6a340090af05"}],"thresh/src/main/java/monasca/thresh/utils/StatsdMetricConsumer.java":[{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"5cbda1470b92c39dde5597bb47c030ee72b21960","unresolved":false,"context_lines":[{"line_number":318,"context_line":"    if (udpclient !\u003d null) {"},{"line_number":319,"context_line":"      StringBuilder statsdMessage \u003d new StringBuilder().append(statsdPrefix).append(s);"},{"line_number":320,"context_line":"      /* See if the current metric is one we need to send per config file */"},{"line_number":321,"context_line":"      if (statsdMessage.toString().matches(statsdFilter)) {"},{"line_number":322,"context_line":"        statsdMessage.append(\":\").append(String.valueOf(number)).append(\"|c\")"},{"line_number":323,"context_line":"            .append(statsdDimensions);"},{"line_number":324,"context_line":"        logger.debug(\"reporting: {}\u003d{}{}\", s, number, dimensions);"}],"source_content_type":"text/x-java","patch_set":4,"id":"baa041b7_e450c00c","line":321,"updated":"2015-04-03 13:40:10.000000000","message":"If you configure a bad filter expression, it kills the worker, see below.\n\nIt might be better to compile the regex when it is set and default back to .* if it is bad after logging the error. It would also be more efficient as this regex gets recompiled for each check.\n\njava.lang.RuntimeException: java.util.regex.PatternSyntaxException: Unclosed character class near index 8\n[monasca|\n        ^\n        at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:128) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:80) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at backtype.storm.daemon.executor$fn__5641$fn__5653$fn__5700.invoke(executor.clj:746) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at backtype.storm.util$async_loop$fn__457.invoke(util.clj:431) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]\n        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_75]\nCaused by: java.util.regex.PatternSyntaxException: Unclosed character class near index 8\n[monasca|\n        ^\n        at java.util.regex.Pattern.error(Pattern.java:1924) ~[na:1.7.0_75]\n        at java.util.regex.Pattern.clazz(Pattern.java:2493) ~[na:1.7.0_75]\n        at java.util.regex.Pattern.sequence(Pattern.java:2030) ~[na:1.7.0_75]\n        at java.util.regex.Pattern.expr(Pattern.java:1964) ~[na:1.7.0_75]\n        at java.util.regex.Pattern.compile(Pattern.java:1665) ~[na:1.7.0_75]\n        at java.util.regex.Pattern.\u003cinit\u003e(Pattern.java:1337) ~[na:1.7.0_75]\n        at java.util.regex.Pattern.compile(Pattern.java:1022) ~[na:1.7.0_75]\n        at java.util.regex.Pattern.matches(Pattern.java:1128) ~[na:1.7.0_75]\n        at java.lang.String.matches(String.java:2063) ~[na:1.7.0_75]\n        at monasca.thresh.utils.StatsdMetricConsumer.report(StatsdMetricConsumer.java:321) ~[stormjar.jar:monasca-thresh-1.0.0-SNAPSHOT-2015-04-03T07:26:57-8c3817]\n        at monasca.thresh.utils.StatsdMetricConsumer.handleDataPoints(StatsdMetricConsumer.java:226) ~[stormjar.jar:monasca-thresh-1.0.0-SNAPSHOT-2015-04-03T07:26:57-8c3817]\n        at backtype.storm.metric.MetricsConsumerBolt.execute(MetricsConsumerBolt.java:55) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at backtype.storm.daemon.executor$fn__5641$tuple_action_fn__5643.invoke(executor.clj:631) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at backtype.storm.daemon.executor$mk_task_receiver$fn__5564.invoke(executor.clj:399) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at backtype.storm.disruptor$clojure_handler$reify__745.onEvent(disruptor.clj:58) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:125) ~[storm-core-0.9.2-incubating.jar:0.9.2-incubating]\n        ... 6 common frames omitted\n2015-04-03 13:33:07 b.s.util [INFO] Halting process: (\"Worker died\")","commit_id":"8c3817364e149fd59edeab42c50a6a340090af05"}]}
