Tags: cnxtech/servo
Tags
add a checkArgument that avoids varargs (Netflix#465) Avoids varargs and the allocation overhead of creating a string array. During application profiling found that some allocation can be avoided if we explicitly invoke the checkArgument method without varargs Allocation profiling via async-profiler: ``` --- 1451114625215846968 bytes (21.40%), 10371 samples [ 0] java.lang.String[] [ 1] com.netflix.servo.tag.BasicTag.checkNotEmpty [ 2] com.netflix.servo.tag.BasicTag.<init> [ 3] com.netflix.servo.tag.Tags.newTag [ 4] com.netflix.servo.monitor.MonitorConfig$Builder.withTag ```
do not warn if global registry used for context (Netflix#463) If the Spectator global registry is used for the SpectatorContext, then do not log a warning. In some legacy apps the context must be set early to the global registry to avoid missing some metrics. It can then be overwritten by the primary registry after it has been created later in the startup process.
warn if SpectatorContext registry is overwritten (Netflix#458) Adds a warning level log message if the registry used with the SpectatorContext is overwritten. This should help with debugging cases where Servo metrics are not being reported properly because of initialization bugs in the application.
avoid mem leak for improper use of registerObject (Netflix#451) Calling `Monitors.registerObject` with a monitor such as a `BasicCounter` instance will register an empty composite monitor with an id like `default:class=BasicCounter`. When using the spectator integration this would result is a memory leak because it needs to track the instances to be able to aggregate the results. This change updates the registration to remove any previous copies and overwrite which is the default for servo. It also double checks if it is an empty basic composite and just ignores those since they will never have any monitors to collect. It is a bit difficult to test without a bunch of reflection to dig into the guts of the meter state. I did reproduce in a debugger using the following test case and confirm the state is no longer growing: ```java @test public void testBasicCounterLoop() { for (int i = 0; i < 1000; ++i) { BasicCounter c = new BasicCounter(CONFIG); Monitors.registerObject(c); c.increment(); } assertEquals(1000, registry.counter(ID).count()); } ```
base StatsMonitor expiration on writes (Netflix#450) Before it was using calls to `getMonitors` to update the last used time. That method will not get called when delegating to Spectator and thus it will always expire 15 minutes after registration and never come back. This changes the last used time to get updated when values are recorded rather than when they are read using `getMonitors`.
getting indiv props instead of reading all props (Netflix#444) Secured applications may not have access to all system properties on a server. Making this change to prevent reading all the system properties and just read the properties that are required for creating the DefaultMonitorRegistry instance. Fixes Netflix#443.
fix name of publish env variable (Netflix#440) It was `BINTRAY_PUBLISH` in the travis config but the script is checking `GRADLE_PUBLISH`.
PreviousNext