d7eac10 | brharrington | 30 July 2016, 21:36:24 UTC | misc build cleanup (#404) | 30 July 2016, 21:36:24 UTC |
cff596e | Brian Harrington | 30 July 2016, 21:26:18 UTC | fix unused import and parens warnings | 30 July 2016, 21:26:18 UTC |
136943f | Brian Harrington | 30 July 2016, 21:14:30 UTC | store creds before doing snapshot build Update snapshot make target to store the credentials first before doing the publish build. This is necessary because if the creds file does not exist when the build starts the bintray plugin will no longer be enabled. | 30 July 2016, 21:14:30 UTC |
e2036dc | Brian Harrington | 30 July 2016, 21:11:55 UTC | fix storeBintrayCredentials task Fixes the storeBintrayCredentials to work when the bintray plugin is disabled. This allows us to generate the file needed by the bintray plugin using the environment variables available in the travis build. | 30 July 2016, 21:11:55 UTC |
c44b865 | Brian Harrington | 30 July 2016, 20:53:04 UTC | reduce repetition across sub-projects | 30 July 2016, 20:53:04 UTC |
b4a61dc | Brian Harrington | 30 July 2016, 20:40:04 UTC | disable bintray unless credentials are present Disables the bintray plugin unless the credentials file is present. This avoids many regular warnings such as: ``` Missing bintray credentials /Users/brharrington/.bintray/.credentials. Some bintray features depend on this. [warn] Credentials file /Users/brharrington/.bintray/.credentials does not exist ``` | 30 July 2016, 20:40:04 UTC |
d1dd88e | Brian Harrington | 30 July 2016, 20:05:43 UTC | fix "wrong forward reference" warnings | 30 July 2016, 20:05:43 UTC |
9235297 | Brian Harrington | 30 July 2016, 17:28:24 UTC | add jsr305 dependency This gets rid of the warnings like: ``` Class javax.annotation.CheckForNull not found - continuing with a stub. ``` This dependency can be removed after we update to scala 2.12. For details see: https://issues.scala-lang.org/browse/SI-9673 | 30 July 2016, 17:28:24 UTC |
b166659 | Brian Harrington | 30 July 2016, 17:04:48 UTC | switch from Build.scala to build.sbt Support for Build.scala is going away in future versions. See discussion for more details: https://groups.google.com/forum/#!searchin/sbt-dev/build.scala%7Csort:relevance/sbt-dev/S-pr2nZQ3KY/YhUtksKf5PoJ Migration was surprisingly painless: just rename, delete some of the scaffolding (imports and build object), and cleanup whitespace (`%s/^ //`). | 30 July 2016, 17:04:48 UTC |
117764b | Brian Harrington | 30 July 2016, 16:53:28 UTC | sbt-dependency-graph 0.8.2 | 30 July 2016, 16:53:28 UTC |
50ffd7b | Brian Harrington | 30 July 2016, 16:48:37 UTC | remove unnecessary whitespace for plugins | 30 July 2016, 16:48:37 UTC |
2894903 | brharrington | 30 July 2016, 02:33:02 UTC | make it easier to reuse access logging (#403) Splits out a helper class for doing the access logging based on the spray http classes. Makes it easier to reuse in other contexts, in particular, for use with clients. | 30 July 2016, 02:33:02 UTC |
0e5b51f | brharrington | 25 July 2016, 23:27:02 UTC | fix #401, add scala version to artifact id (#402) Makes it easier to automatically detect for tools that want to index scala libraries. | 25 July 2016, 23:27:02 UTC |
4c360d3 | brharrington | 21 July 2016, 16:27:13 UTC | move appender setup to log4j config (#400) For more details see: http://netflix.github.io/spectator/en/latest/ext/log4j2/ Which is a bit out of date, with the change below the ordering issues are no longer a problem when using the appender via the config: https://github.com/Netflix/spectator/commit/33825db0b96e3337f68b85e9ecbc78567071aecc#diff-9bc272482ec3aa21411ff595a1f4225f | 21 July 2016, 16:27:13 UTC |
4188e3b | brharrington | 21 July 2016, 16:14:25 UTC | remove diff helper, can be done with lib if needed (#399) | 21 July 2016, 16:14:25 UTC |
857888c | brharrington | 21 July 2016, 16:14:09 UTC | create module packages for akka/webapi (#398) Pulls the setup logic in standalone into modules that we can just include in other projects. We don't use the standalone jar internally it is just for simple testing. This change allows us to further reduce deviation from oss and internal. | 21 July 2016, 16:14:09 UTC |
59024bb | brharrington | 21 July 2016, 04:42:08 UTC | inject config and actor system (#396) Updates the akka helpers to be more DI friendly. In particular, it removes the dependency on `atlas-config` and injects the `Config` as well as the `ActorSystem`. A helper setting `atlas.akka.actors` is now available in the config to configure an actor to load into the system. | 21 July 2016, 04:42:08 UTC |
0331af8 | brharrington | 21 July 2016, 03:25:47 UTC | remove aws lib (#397) Replaced by [iep-module-aws](https://github.com/Netflix/iep/tree/master/iep-module-aws). | 21 July 2016, 03:25:47 UTC |
b9dc6d5 | brharrington | 19 July 2016, 12:49:39 UTC | update dependencies (#395) | 19 July 2016, 12:49:39 UTC |
42232fc | brharrington | 19 July 2016, 12:41:52 UTC | update jmh plugin (#394) Newer version has convenient option for profiling with flight recorder: `-prof jmh.extras.JFR`. | 19 July 2016, 12:41:52 UTC |
f21cd0e | Brian Harrington | 19 July 2016, 12:36:51 UTC | aws-java-sdk 1.11.18 | 19 July 2016, 12:36:51 UTC |
8cd5bef | Brian Harrington | 19 July 2016, 12:36:16 UTC | akka 2.4.8 | 19 July 2016, 12:36:16 UTC |
992668f | Brian Harrington | 19 July 2016, 12:35:35 UTC | equalsverifier 2.1.3 | 19 July 2016, 12:35:35 UTC |
4d1d769 | Brian Harrington | 19 July 2016, 12:34:17 UTC | log4j 2.6.2 | 19 July 2016, 12:34:17 UTC |
a8e3711 | brharrington | 15 July 2016, 21:12:07 UTC | fix #392, use random port for server in MainSuite (#393) | 15 July 2016, 21:12:07 UTC |
198bfd7 | brharrington | 10 July 2016, 15:21:46 UTC | make set load factor consistent with map (#391) See #390 for further details. Deployments with the map changes look good overnight. Changing set to be consistent. | 10 July 2016, 15:21:46 UTC |
7e015e8 | brharrington | 09 July 2016, 19:38:44 UTC | adjust load factor for primitive maps (#390) Changes the primitive maps to resize at 50% full rather than 70%. The 70% factor was originally chosen to keep the memory use lower and for the primary use-cases we didn't see much performance degradation at the time. Rolling it out to more systems though we have started seeing cases where it performs quite badly and 50% does an order of magnitude better. JMH test with a simple example included. ``` 0.7 [info] Benchmark Mode Cnt Score Error Units [info] IntIntMap.testIntIntHashMap800 thrpt 10 10374.640 ± 782.568 ops/s [info] IntIntMap.testIntIntHashMap8k thrpt 10 589.537 ± 8.124 ops/s [info] IntIntMap.testJavaHashMap800 thrpt 10 4051.768 ± 499.362 ops/s [info] IntIntMap.testJavaHashMap8k thrpt 10 2846.103 ± 14.858 ops/s 0.5 [info] Benchmark Mode Cnt Score Error Units [info] IntIntMap.testIntIntHashMap800 thrpt 10 11713.871 ± 271.158 ops/s [info] IntIntMap.testIntIntHashMap8k thrpt 10 3963.805 ± 59.359 ops/s [info] IntIntMap.testJavaHashMap800 thrpt 10 4371.380 ± 93.346 ops/s [info] IntIntMap.testJavaHashMap8k thrpt 10 2709.591 ± 71.376 ops/s ``` | 09 July 2016, 19:38:44 UTC |
0c0fb6c | Michael Graff | 08 July 2016, 20:37:42 UTC | cleanup state management for expressions (#389) For future work, we will want to render the internal state to JSON or similar. This change set adds a side object for OnlineDes and OnlineSlidingDes which is a simple case class, easily rendered to JSON. This state class is used in the :des and :sdes operators to store and restore internal state, which allows this to be rendered to JSON as well. Additionally, the state passed into StatefulExpression eval() methods is not modified in any expression. | 08 July 2016, 20:37:42 UTC |
2bafcbc | brharrington | 07 July 2016, 04:09:51 UTC | Merge pull request #388 from brharrington/rm-println remove println statements in trend test | 07 July 2016, 04:09:51 UTC |
f119955 | Brian Harrington | 07 July 2016, 03:57:21 UTC | remove println statements in trend test | 07 July 2016, 03:57:21 UTC |
02e014a | brharrington | 07 July 2016, 03:32:27 UTC | Merge pull request #387 from brharrington/docs docs: update multi-y palette docs (#386) | 07 July 2016, 03:32:27 UTC |
2632a2e | Brian Harrington | 07 July 2016, 03:21:03 UTC | docs: add desc for :line, :area, and :stack | 07 July 2016, 03:21:03 UTC |
fbc1267 | Brian Harrington | 07 July 2016, 03:07:59 UTC | docs: update description for :ls | 07 July 2016, 03:07:59 UTC |
0b473c7 | Brian Harrington | 07 July 2016, 02:52:24 UTC | docs: update description and expample for :vspan | 07 July 2016, 02:54:52 UTC |
936a5f5 | Brian Harrington | 07 July 2016, 02:23:13 UTC | docs: update multi-y palette docs (#386) | 07 July 2016, 02:23:13 UTC |
60b2c8f | brharrington | 07 July 2016, 01:43:22 UTC | Merge pull request #386 from brharrington/multi-y-palette use color per line by default in multi-y | 07 July 2016, 01:43:22 UTC |
7152047 | brharrington | 07 July 2016, 01:37:48 UTC | Merge pull request #385 from brharrington/dependency-updates iep 0.4.4 | 07 July 2016, 01:37:48 UTC |
bacebe7 | Brian Harrington | 07 July 2016, 01:16:47 UTC | use color per line by default in multi-y Previously, multi-y would enable a mode where there would be one color use per axis by default. This is to discourage creating confusing graphs where it is difficult or impossible to figure out which axis a line corresponds with. It is still recommended to avoid using more that one line per axis when using multi-y. This change modifies the behavior of the palette so that by default each line will take the next color from the main palette. This behavior seems to be less confusing to most users, though it doesn't help to discourage the anti-pattern of creating confusing charts where the lines cannot be accurately associated with an axis. The behavior if an explicit palette is specified for a given axis is not changed. | 07 July 2016, 01:16:47 UTC |
9feb2ed | Brian Harrington | 06 July 2016, 23:38:21 UTC | equalsverifier 2.1.2 | 06 July 2016, 23:38:21 UTC |
c73af35 | Brian Harrington | 06 July 2016, 23:37:51 UTC | aws-java-sdk 1.11.14 | 06 July 2016, 23:37:51 UTC |
ffd07ae | Brian Harrington | 06 July 2016, 23:36:45 UTC | iep 0.4.4 | 06 July 2016, 23:36:45 UTC |
df0bf3d | brharrington | 05 July 2016, 18:04:53 UTC | Merge pull request #384 from skandragon/trend-streaming add a test case for Trend streaming | 05 July 2016, 18:04:53 UTC |
275501a | Michael Graff | 05 July 2016, 17:52:05 UTC | add a test case for Trend streaming | 05 July 2016, 17:52:05 UTC |
7e8db84 | Michael Graff | 05 July 2016, 17:30:19 UTC | fix :sdes to handle streaming updates Refactors the `:sdes` operator to properly handle evaluation with incremental updates. Before the `pos` was never getting updated, so the first value would get set to `NaN` and all others would not be modified. As part of this change the code was refactored a bit so that the `OnlineSlidingDes` instance is now part of the state object. This means that the state passed in to eval will get modified. For now that is ok, but the plan is to clean it up in future commits as part of making the state serializable. | 05 July 2016, 17:30:19 UTC |
ed361fb | brharrington | 18 June 2016, 22:49:08 UTC | Merge pull request #380 from brharrington/legend-decode hex decoding for legend values (bug 1271) | 18 June 2016, 22:49:08 UTC |
0661cc4 | brharrington | 18 June 2016, 22:39:24 UTC | Merge pull request #379 from brharrington/dep-updates refresh dependencies | 18 June 2016, 22:39:24 UTC |
d42af89 | Brian Harrington | 18 June 2016, 22:15:31 UTC | hex decoding for legend values (bug 1271) Provides a style operator, `:decode`, that can be used to perform hex decoding of the legend text. Background: internally we restrict input to simple alpha-numeric characters, `.`, `-`, and `_`. if characters are used the data will get dropped as invalid. If using the servo-atlas module, then it will convert invalid characters to `_`. Most commonly that was done for spaces. The restriction is to ensure that it is easy and safe to craft the query expressions and include them as part of the URI in a variety of contexts. Precise linkability is extremely important and should not be compromised. Some users do their own url encoding and the `%` then gets converted to an `_`. This allows them to undo the restriction and get the original characters back. With this change that decoding can now be specified as part of the expression. There are quite a few misgivings about this feature. In my view this feature encourages bad behavior such as trying to encode structural information into tag values or trying to abuse it as a more general purpose data store. The compromise for now is supporting the decode with a clear warning in the docs and we'll see how it goes. | 18 June 2016, 22:15:31 UTC |
4fcacad | Brian Harrington | 18 June 2016, 20:23:19 UTC | update launcher version | 18 June 2016, 20:23:19 UTC |
a62d7f0 | Brian Harrington | 18 June 2016, 20:21:19 UTC | iep 0.4.3 | 18 June 2016, 20:21:19 UTC |
10ba7c8 | Brian Harrington | 18 June 2016, 20:19:20 UTC | aws-java-sdk 1.11.8 | 18 June 2016, 20:19:20 UTC |
3f8a19c | Brian Harrington | 18 June 2016, 20:18:30 UTC | spectator 0.40.0 | 18 June 2016, 20:18:30 UTC |
d273399 | Brian Harrington | 18 June 2016, 20:17:39 UTC | log4j 2.6.1 | 18 June 2016, 20:17:39 UTC |
59f56d1 | Brian Harrington | 18 June 2016, 20:17:01 UTC | caffeine 2.3.1 | 18 June 2016, 20:17:01 UTC |
3e00f4a | Brian Harrington | 18 June 2016, 20:16:28 UTC | equalsverifier 2.1.1 | 18 June 2016, 20:16:28 UTC |
d6aed41 | Brian Harrington | 18 June 2016, 20:08:59 UTC | guice 4.1.0 | 18 June 2016, 20:08:59 UTC |
4aec834 | brharrington | 13 June 2016, 15:58:50 UTC | Merge pull request #378 from brharrington/query-idx-memuse reduce memory use for query index | 13 June 2016, 15:58:50 UTC |
7fe80d9 | Brian Harrington | 11 June 2016, 23:03:41 UTC | improve performance of misses with SmallHashMap The default apply will create a map with the exact size of the input to optimize for memory use. This results in terrible performance for lookups of items that are not in the map because the entire array has to be scanned. In this case we use the builder and give 2x the size of the input so there will be 50% unused entries. Since we expect many misses this gives us better performance and memory overhead isn't too bad. It is still much lower than default immutable map since we don't need entry objects. **Performance Using Default Map** ``` [info] Benchmark Mode Cnt Score Error Units [info] QueryIndexMatching.index_100 thrpt 10 1495308.867 ± 54215.813 ops/s [info] QueryIndexMatching.index_1000 thrpt 10 1447373.235 ± 60491.960 ops/s [info] QueryIndexMatching.index_10000 thrpt 10 1343245.217 ± 82847.803 ops/s [info] QueryIndexMatching.index_100000 thrpt 10 1290678.687 ± 68877.756 ops/s [info] QueryIndexMatching.loop_100 thrpt 10 734350.577 ± 57604.617 ops/s [info] QueryIndexMatching.loop_1000 thrpt 10 65103.998 ± 3152.273 ops/s [info] QueryIndexMatching.loop_10000 thrpt 10 3895.021 ± 406.819 ops/s [info] QueryIndexMatching.loop_100000 thrpt 10 385.435 ± 14.239 ops/s ``` **Performance Before Change with SmallHashMap** ``` [info] Benchmark Mode Cnt Score Error Units [info] QueryIndexMatching.index_100 thrpt 10 77343.378 ± 16091.544 ops/s [info] QueryIndexMatching.index_1000 thrpt 10 7452.957 ± 131.788 ops/s [info] QueryIndexMatching.index_10000 thrpt 10 938.720 ± 22.593 ops/s [info] QueryIndexMatching.index_100000 thrpt 10 51.562 ± 4.846 ops/s [info] QueryIndexMatching.loop_100 thrpt 10 739149.328 ± 38309.430 ops/s [info] QueryIndexMatching.loop_1000 thrpt 10 73096.869 ± 4677.274 ops/s [info] QueryIndexMatching.loop_10000 thrpt 10 4290.191 ± 496.381 ops/s [info] QueryIndexMatching.loop_100000 thrpt 10 344.407 ± 56.982 ops/s ``` **Performance After Change with SmallHashMap** ``` [info] Benchmark Mode Cnt Score Error Units [info] QueryIndexMatching.index_100 thrpt 10 1386693.379 ± 52800.430 ops/s [info] QueryIndexMatching.index_1000 thrpt 10 1275380.749 ± 34382.363 ops/s [info] QueryIndexMatching.index_10000 thrpt 10 1346079.349 ± 37157.088 ops/s [info] QueryIndexMatching.index_100000 thrpt 10 1281227.628 ± 24131.273 ops/s [info] QueryIndexMatching.loop_100 thrpt 10 738372.264 ± 49134.852 ops/s [info] QueryIndexMatching.loop_1000 thrpt 10 69248.131 ± 1878.153 ops/s [info] QueryIndexMatching.loop_10000 thrpt 10 6038.581 ± 2779.993 ops/s [info] QueryIndexMatching.loop_100000 thrpt 10 404.772 ± 35.624 ops/s ``` **Memory Usage** Memmory use for 100 queries from logs: ``` Object Size (bytes) ------------------------------------------- Query index default map 466,632 Query index small before 246,568 Query index small after 241,064 ``` Note that the reduction here is because there are many small maps with less than 5 items. These now keep the special cased default maps for those sizes. So we see a bit of a reduction overall even though the size of the actual SmallHashMap intances will be larger. | 11 June 2016, 23:03:41 UTC |
6a5761b | Brian Harrington | 11 June 2016, 21:45:04 UTC | use SmallHashMap for children of QueryIndex The small hash map class uses quite a bit less memory than the default immutable map in scala. For a sample dataset of 100 queries pulled from logs the index size is reduced by about 50%: ``` Object Size (bytes) ------------------------------------------- Query index default Map 466,632 Query index SmallHashMap 246,568 ``` | 11 June 2016, 21:45:04 UTC |
e5900e7 | Brian Harrington | 11 June 2016, 21:21:34 UTC | reuse common sub-indexes The query index was just recursively building the query index tree resulting in many common sub-trees. This is wasteful for both computation and memory use. This change adds a simple map to lookup if a sub-index has already been computed. For the naive test query set it doesn't result in all that big of a reduction: ``` Object Size (bytes) ------------------------------------------- Input queries 22,896 Query index 27,560 Query index w/ reuse 24,968 ``` Subtracting out the size of the input queries: ``` Object Size (bytes) ------------------------------------------- Query index 4,664 Query index w/ reuse 2,072 ``` Around 50% reduction in overhead for the index. Looking at a real dataset of 100 queries pulled from logs we see a much bigger reduction: ``` Object Size (bytes) ------------------------------------------- Input queries 27,256 Query index 65,700,776 Query index w/ reuse 466,632 ``` Footprint for query index before change: ``` com.netflix.atlas.core.index.QueryIndex@28194a50d footprint: COUNT AVG SUM DESCRIPTION 150 50 7584 [C 2 48 96 [I 23991 43 1050512 [Lscala.collection.immutable.HashMap; 1092317 24 26215608 com.netflix.atlas.core.index.QueryIndex 168 24 4032 com.netflix.atlas.core.index.QueryIndex$Entry 270 24 6480 com.netflix.atlas.core.model.Query$And 140 24 3360 com.netflix.atlas.core.model.Query$Equal 5 24 120 com.netflix.atlas.core.model.Query$In 2 16 32 com.netflix.atlas.core.model.Query$Not 5 24 120 com.netflix.atlas.core.model.Query$Or 5 24 120 com.netflix.atlas.core.model.Query$Regex 1 16 16 com.netflix.atlas.core.model.Query$True$ 2 24 48 com.netflix.atlas.core.util.StringMatcher$Regex 2 24 48 com.netflix.atlas.core.util.StringMatcher$Regex$$anon$1 3 24 72 com.netflix.atlas.core.util.StringMatcher$StartsWith 150 24 3600 java.lang.String 2 72 144 java.util.regex.Pattern 2 16 32 java.util.regex.Pattern$Begin 1 32 32 java.util.regex.Pattern$Curly 1 16 16 java.util.regex.Pattern$Dot 1 16 16 java.util.regex.Pattern$LastNode 1 16 16 java.util.regex.Pattern$Node 2 24 48 java.util.regex.Pattern$Slice 1 16 16 scala.None$ 3 16 48 scala.Some 149671 24 3592104 scala.Tuple2 503625 24 12087000 scala.collection.immutable.$colon$colon 149671 32 4789472 scala.collection.immutable.HashMap$HashMap1 23991 24 575784 scala.collection.immutable.HashMap$HashTrieMap 1 16 16 scala.collection.immutable.Map$EmptyMap$ 375497 24 9011928 scala.collection.immutable.Map$Map1 164983 32 5279456 scala.collection.immutable.Map$Map2 56618 40 2264720 scala.collection.immutable.Map$Map3 16832 48 807936 scala.collection.immutable.Map$Map4 1 16 16 scala.collection.immutable.Nil$ 4 24 96 scala.collection.immutable.Set$Set2 1 32 32 scala.collection.immutable.Set$Set4 2558122 65700776 (total) ``` Footprint for query index after change: ``` com.netflix.atlas.core.index.QueryIndex@50f6ac94d footprint: COUNT AVG SUM DESCRIPTION 150 50 7584 [C 2 48 96 [I 1006 37 37824 [Lscala.collection.immutable.HashMap; 2274 24 54576 com.netflix.atlas.core.index.QueryIndex 141 24 3384 com.netflix.atlas.core.index.QueryIndex$Entry 270 24 6480 com.netflix.atlas.core.model.Query$And 140 24 3360 com.netflix.atlas.core.model.Query$Equal 5 24 120 com.netflix.atlas.core.model.Query$In 2 16 32 com.netflix.atlas.core.model.Query$Not 5 24 120 com.netflix.atlas.core.model.Query$Or 5 24 120 com.netflix.atlas.core.model.Query$Regex 1 16 16 com.netflix.atlas.core.model.Query$True$ 2 24 48 com.netflix.atlas.core.util.StringMatcher$Regex 2 24 48 com.netflix.atlas.core.util.StringMatcher$Regex$$anon$1 3 24 72 com.netflix.atlas.core.util.StringMatcher$StartsWith 150 24 3600 java.lang.String 2 72 144 java.util.regex.Pattern 2 16 32 java.util.regex.Pattern$Begin 1 32 32 java.util.regex.Pattern$Curly 1 16 16 java.util.regex.Pattern$Dot 1 16 16 java.util.regex.Pattern$LastNode 1 16 16 java.util.regex.Pattern$Node 2 24 48 java.util.regex.Pattern$Slice 1 16 16 scala.None$ 3 16 48 scala.Some 4647 24 111528 scala.Tuple2 153 24 3672 scala.collection.immutable.$colon$colon 4647 32 148704 scala.collection.immutable.HashMap$HashMap1 1006 24 24144 scala.collection.immutable.HashMap$HashTrieMap 1 16 16 scala.collection.immutable.Map$EmptyMap$ 250 24 6000 scala.collection.immutable.Map$Map1 446 32 14272 scala.collection.immutable.Map$Map2 530 40 21200 scala.collection.immutable.Map$Map3 398 48 19104 scala.collection.immutable.Map$Map4 1 16 16 scala.collection.immutable.Nil$ 4 24 96 scala.collection.immutable.Set$Set2 1 32 32 scala.collection.immutable.Set$Set4 16256 466632 (total) ``` | 11 June 2016, 21:21:34 UTC |
0bc717b | Brian Harrington | 11 June 2016, 20:48:28 UTC | intern query objects and strings while parsing The biggest chunk of memory usage for the test query set is coming from the query objects themselves. Sizes: ``` Object Size (bytes) ------------------------------------------- Input queries 71,976 Query index 76,640 Input queries w/ interning 22,896 ``` This is just an example as part of the test. It was needed so we could test larger data sets without getting an OOM exception. It is not being rolled into the query index because it would likely need to be done earlier while processing input queries. The mechanism can be copied from the test case for now if it is needed. If a more generic utility is found to be generally useful going forward, then we'll revisit. | 11 June 2016, 20:48:28 UTC |
8ee678a | Brian Harrington | 11 June 2016, 20:37:53 UTC | add test case showing memory use of query index | 11 June 2016, 20:37:53 UTC |
6d3ad5e | brharrington | 10 June 2016, 15:31:16 UTC | Merge pull request #377 from brharrington/issue-373 fixes #373 - return 400 status code for bad object | 10 June 2016, 15:31:16 UTC |
a3acd37 | brharrington | 10 June 2016, 15:15:44 UTC | Merge pull request #375 from brharrington/deprecated-spectator-sandbox move off deprecated BucketCounter | 10 June 2016, 15:15:44 UTC |
78f913d | Brian Harrington | 10 June 2016, 15:13:53 UTC | fixes #373 - return 400 status code for bad object | 10 June 2016, 15:13:53 UTC |
34642be | Brian Harrington | 10 June 2016, 13:17:33 UTC | move off deprecated BucketCounter | 10 June 2016, 13:17:33 UTC |
12e9803 | brharrington | 08 June 2016, 04:11:13 UTC | Merge pull request #372 from brharrington/v2-json-axis-color always add the axis color | 08 June 2016, 04:11:13 UTC |
ca52496 | Brian Harrington | 08 June 2016, 04:00:18 UTC | always add the axis color For the v2.json format always be explicit about the axis color. Before it was optional, but this makes it easier for dynamic rendering without having to worry about the rules the backend uses to assign the color based on the lines. | 08 June 2016, 04:00:18 UTC |
a5dceef | brharrington | 07 June 2016, 14:58:22 UTC | Merge pull request #371 from brharrington/rm-request-id remove legacy request id class | 07 June 2016, 14:58:22 UTC |
c75bbaf | brharrington | 07 June 2016, 14:45:07 UTC | Merge pull request #370 from brharrington/v2-json-plot-ref lines should explicitly refer to axis | 07 June 2016, 14:45:07 UTC |
31e5597 | brharrington | 07 June 2016, 14:42:00 UTC | Merge pull request #368 from brharrington/jackson-2.7.4 jackson 2.7.4 | 07 June 2016, 14:42:00 UTC |
b7fb16e | brharrington | 07 June 2016, 14:41:37 UTC | Merge pull request #369 from brharrington/trusty use trusty build environment | 07 June 2016, 14:41:37 UTC |
bf15345 | Brian Harrington | 07 June 2016, 14:40:33 UTC | remove legacy request id class | 07 June 2016, 14:40:33 UTC |
0a25825 | Brian Harrington | 07 June 2016, 14:31:03 UTC | lines should explicitly refer to axis For the experimental v2.json format this changes the output so that all plot metadata will be emitted first and then the lines will explicitly refer to the axis. Before the metadata for a plot would be emitted followed by all lines on that plot. That would be repeated for each plot. The problem with this is that format becomes cumbersome for a streaming evaluation where we only have data for a single time interval at a time. With this change the same format can be used for the normal evaluation or a streaming evaluation. | 07 June 2016, 14:31:03 UTC |
2c97fd1 | Brian Harrington | 07 June 2016, 12:49:21 UTC | use trusty build environment https://docs.travis-ci.com/user/trusty-ci-environment/ | 07 June 2016, 12:49:21 UTC |
4aa8a62 | Brian Harrington | 07 June 2016, 12:36:19 UTC | aws sdk 1.11.6 | 07 June 2016, 12:36:19 UTC |
7d9ece1 | Brian Harrington | 07 June 2016, 12:34:57 UTC | akka 2.4.7 | 07 June 2016, 12:34:57 UTC |
ca028dd | Brian Harrington | 07 June 2016, 12:28:39 UTC | jackson 2.7.4 Note, scala Option now behaves more like java 8 Optional. The include setting has been changed from NON_NULL to NON_ABSENT. | 07 June 2016, 12:28:39 UTC |
c4b6baf | Jon Schneider | 28 May 2016, 01:05:25 UTC | Updated Bintray API key | 28 May 2016, 01:05:25 UTC |
46b6b15 | brharrington | 23 May 2016, 18:20:09 UTC | Merge pull request #362 from brharrington/des-stream-eval fix incremental des evaluation | 23 May 2016, 18:20:09 UTC |
ecaf3d3 | Brian Harrington | 23 May 2016, 16:54:38 UTC | fix incremental des evaluation Incremental DES evaluation should match a global evaluation with all data available in advance. The pos was being updated such that values after the first datapoint were getting ignored. There is still a problem with `:sdes`, but for now this change just adds a test to illustrate it. We'll look at fixing `:sdes` later. | 23 May 2016, 18:02:07 UTC |
7a62618 | brharrington | 21 May 2016, 03:33:06 UTC | Merge pull request #361 from brharrington/fix-doc-links docs: fix links to spectator wiki | 21 May 2016, 03:33:06 UTC |
4ce583a | Brian Harrington | 20 May 2016, 22:48:21 UTC | docs: fix links to spectator wiki Spectator docs moved off of github wiki. Fix links that were broken with that change. | 20 May 2016, 22:48:21 UTC |
68d3ad7 | brharrington | 20 May 2016, 02:30:21 UTC | Merge pull request #360 from brharrington/putifabsent add putIfAbsent to RefIntHashMap | 20 May 2016, 02:30:21 UTC |
d9dd98f | Brian Harrington | 20 May 2016, 02:18:11 UTC | add putIfAbsent to RefIntHashMap | 20 May 2016, 02:18:11 UTC |
654b698 | brharrington | 19 May 2016, 19:43:25 UTC | Merge pull request #359 from brharrington/dep-updates update akka and aws deps | 19 May 2016, 19:43:25 UTC |
a9dcfd6 | Brian Harrington | 19 May 2016, 17:36:46 UTC | update akka and aws deps | 19 May 2016, 17:36:46 UTC |
13f542e | brharrington | 14 May 2016, 16:15:43 UTC | Merge pull request #358 from brharrington/file-logging logging config to split out access log | 14 May 2016, 16:15:43 UTC |
010283f | Brian Harrington | 14 May 2016, 14:28:15 UTC | logging config to split out access log Add helper logging configuration that writes the data to files instead of stdout and splits out the access log to separate files. | 14 May 2016, 14:28:15 UTC |
1958df5 | brharrington | 09 May 2016, 01:37:54 UTC | Merge pull request #357 from brharrington/remove-trove-dependency remove dependency on trove4j | 09 May 2016, 01:37:54 UTC |
38e17ed | Brian Harrington | 09 May 2016, 01:02:39 UTC | remove dependency on trove | 09 May 2016, 01:20:45 UTC |
177f6dc | Brian Harrington | 09 May 2016, 00:00:09 UTC | add RefIntHashMap using open addressing | 09 May 2016, 01:20:31 UTC |
6252a57 | Brian Harrington | 08 May 2016, 23:09:56 UTC | fix increment signature for DoubleIntHashMap Fix increment on DoubleIntHashMap to take a Double instead of a Long. Improves test coverage for all the primitive collections. | 09 May 2016, 01:20:15 UTC |
0ec6b66 | Brian Harrington | 08 May 2016, 21:41:12 UTC | add DoubleIntHashMap based on LongIntHashMap | 09 May 2016, 01:19:58 UTC |
820a50d | Brian Harrington | 08 May 2016, 21:04:42 UTC | add IntIntHashMap using open addressing | 09 May 2016, 01:19:44 UTC |
ecdfec1 | Brian Harrington | 08 May 2016, 20:09:42 UTC | fix size of set for dedup The size was always getting incremented, even if the item was already present in the set. Now it will only get incremented if it is new. | 09 May 2016, 01:19:27 UTC |
7d19648 | Brian Harrington | 03 May 2016, 23:59:46 UTC | add IntHashSet util for building index Trying to simplify and reduce the dependencies needed by the core project. This change replaces the trove TIntHashSet with a simple open addressing hash set that does just enough for what we need: dedup and extract the final set. Performance and memory overhead are comparable: For a small set (5 items): ``` com.netflix.atlas.core.util.IntHashSet@33afa13bd footprint: COUNT AVG SUM DESCRIPTION 1 64 64 [I 1 32 32 com.netflix.atlas.core.util.IntHashSet 2 96 (total) java.util.HashSet@3590fc5bd footprint: COUNT AVG SUM DESCRIPTION 1 80 80 [Ljava.util.HashMap$Node; 5 16 80 java.lang.Integer 1 16 16 java.lang.Object 1 48 48 java.util.HashMap 5 32 160 java.util.HashMap$Node 1 16 16 java.util.HashSet 14 400 (total) gnu.trove.set.hash.TIntHashSet@62379589d footprint: COUNT AVG SUM DESCRIPTION 1 40 40 [B 1 112 112 [I 1 56 56 gnu.trove.set.hash.TIntHashSet 3 208 (total) ``` For a larger set with 10k values: ``` com.netflix.atlas.core.util.IntHashSet@33afa13bd footprint: COUNT AVG SUM DESCRIPTION 1 102888 102888 [I 1 32 32 com.netflix.atlas.core.util.IntHashSet 2 102920 (total) java.util.HashSet@3590fc5bd footprint: COUNT AVG SUM DESCRIPTION 1 65552 65552 [Ljava.util.HashMap$Node; 10000 16 160000 java.lang.Integer 1 16 16 java.lang.Object 1 48 48 java.util.HashMap 10000 32 320000 java.util.HashMap$Node 1 16 16 java.util.HashSet 20004 545632 (total) gnu.trove.set.hash.TIntHashSet@4c79ca55d footprint: COUNT AVG SUM DESCRIPTION 1 25736 25736 [B 1 102888 102888 [I 1 56 56 gnu.trove.set.hash.TIntHashSet 3 128680 (total) ``` | 09 May 2016, 01:12:38 UTC |
b3f547a | brharrington | 06 May 2016, 03:52:42 UTC | Merge pull request #355 from brharrington/config-classloader work-around for null context classloader | 06 May 2016, 03:52:42 UTC |
878d393 | Brian Harrington | 06 May 2016, 03:33:26 UTC | work-around for null context classloader In some cases we are seeing: ``` Thread.currentThread().getContextClassLoader() == null ``` With this change we'll log a warning and try the classloader for a given class. | 06 May 2016, 03:39:00 UTC |
5d6f47b | brharrington | 03 May 2016, 16:13:34 UTC | Merge pull request #354 from brharrington/caffeine switch from guava to caffeine for cache | 03 May 2016, 16:13:34 UTC |
2152d6f | Brian Harrington | 03 May 2016, 16:04:15 UTC | remove jsr305 dependency | 03 May 2016, 16:04:15 UTC |