forked from airlift/airlift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES
707 lines (505 loc) · 21.6 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
* 0.144
- Use JsonMapperParsingException in SmileMapper.
- Bean Validation is no longer performed for JAX-RS request objects.
* 0.143
- Deprecate usages of CompletableFuture or replace with ListenableFuture,
which is easier to use and less error prone.
- Add MoreFutures methods for ListenableFuture.
- Replace RuntimeIOException with UncheckedIOException in HTTP client.
- Fix sporadic failure due to thread-safety when performing Bean Validation.
- Support using java.time.Instant for event client.
- Validate scheme for HTTP client Request objects.
* 0.142
- Improve performance of QuantileDigest copy constructor, which
could cause contention in Distribution's copy constructor.
* 0.141
- Fix thread-safety issue in Distribution copy constructor.
* 0.140
- Fix rare bug when inserting into Sparse HLL that could result
in corruption.
- Improve performance and memory utilization for QuantileDigest.
- Improve performance when generating trace tokens.
- Add BasicAuthRequestFilter for HttpClient to pre-authenticate
requests with basic authentication.
- Add bindConfigGlobalDefaults to ConfigBinder to customize
defaults for bound config objects.
- Buffer HTTP responses in chunks to avoid allocating big byte arrays.
- Update QuantileDigest serialization to take and produce Slice objects.
* 0.139
- Upgrade to Jetty 9.3.13.M0
- Make jmxutils dependency optional for concurrent
- Add TempFile for use with try-with-resources
- Add unwrapCompletionException to MoreFutures
- Fix incorrect bucket computation in PauseMeter
* 0.138
- Add toJsonWithLengthLimit to JsonCodec
- Fix version check in JMX module to work with -ea Java versions
- Move type name to end of JsonCodec error message
- Add brackets around JSON in HTTP client response handler error messages
- Add utility to measure JVM and OS pauses
* 0.137
- Set ThreadContextClassLoader to null when loading bval
* 0.136
- Revert Jetty to 9.3.9.M1
* 0.135
- Add ThreadLocalCache
- Upgrade to Jackson 2.8.1
- Extract units to a standalone project
- Prevent self-supression in Closeables
* 0.134
- Add ConditionalModule
- Alternative JMX agent implementation for Java 8 vs 9
* 0.133
- Fix issue with IntelliJ mishandling of system-scoped dependencies
* 0.132
- Upgrade Jetty to 9.3.11.v20160721
* 0.131
- Statically configure logging for Jetty HTTP client
* 0.130
- Move Jetty and Jersey dependencies from Airbase
- Add getField method to EventTypeMetadata
* 0.129
- Add CpuTimer to stats
- Add FileBodyGenerator for HTTP client
- Add TrustStore configuration for HTTP client
- Expose EventTypeMetadata and EventFieldMetadata classes
- Remove requirement that nested event classes have no name
- Ignore EOFException (caused by client disconnect) while writing JSON HTTP response
- Upgrade Jetty to 9.3.11.M0. This fixes a race when using async responses
* 0.128
- Remove BoundedThreadPool
- Use default thread count for TestingHttpServerModule
- Support building prefixed configs in AbstractConfigurationAwareModule
* 0.127
- Remove all usage of ThreadGroup
- Make HTTP client response headers case insensitive
- Add HTTP/2 support in HTTP server for HTTP (not HTTPS)
- Add HTTP/2 support in HTTP client for HTTP (off by default)
- Add BoundedThreadPool
* 0.126
- Upgrade Jetty to 9.3.8.v20160314
- Upgrade Jersey to 2.22.2
- Add getQuantilesUpperBound() and getQuantilesLowerBound() to QuantileDigest
* 0.125
- Add JMX stats for HTTP response codes and failures
- Fix broken gzip handling in HTTP server
- Fix typo for keytab option in SpnegoAuthentication
- Fix thread leak in HTTP client when using anonymous pool
* 0.124
- Upgrade to jmxutils 1.19 which fixes issue with LoggingMBean
* 0.123
- Upgrade Jetty to 9.3.7.RC0
- Add ability for TestingHttpClient to send checked exceptions
- Use JDK Function for AsyncSemaphore
* 0.122
- Disable Jackson property mutator inference
- Add allAsList MoreFutures utility
* 0.121
- Fix configuration property to include and exclude HTTPS cipher suites
* 0.120
- Add configuration property to include and exclude HTTPS cipher suites
* 0.119
- Reduce contention during lifecycle tracking
- Add getMaxContentLength to HTTP client
* 0.118
- Improve messages for configuration errors
- Add JMX stat for days until HTTPS certificate expires
* 0.117
- Refresh Kerberos credentials for HTTP client before they expire
* 0.116
- Add configuration for HTTP selector and acceptor thread pools
- Fix config defaults bindings with annotation class
- Fix config defaults bindings for HTTP clients
* 0.115
- Add more MoreFutures utilities
* 0.114
- Make HttpServer logging more configurable
- Make configuration names for Logging and HttpServer logging match
* 0.113
- Change kerberos service principal format to correct serviceName@host
- Replace Guava Optional in TestingNodeModule and JettyHttpClient
- Report correct binding source for custom binders
* 0.112
- Always use keytab for kerberos auth
* 0.111
- Support JSON serialization of Java 7 types
- Add SPNEGO support to HTTP client
- Upgrade Jetty to 9.2.11.v20150529 to fix an issue that causes HTTP requests to hang
- Allow disabling console and file logging simultaneously
* 0.110
- Fix log levels being reset by garbage collection
- Reduce default http response buffer size from 64KB to zero bytes
- Add MoreFutures which contains utility methods for futures
* 0.109
- Add framework to override defaults of any configuration object
* 0.108
- Change default HTTP server accept queue size to 8000 from 50
- Upgrade to Airbase 38
- Exclude link local addresses in NodeInfo
* 0.107
- Remove dependency on SLF4J from log manager
* 0.106
- Upgrade to Airbase 36
- Upgrade to Jetty 9.2.11.M0
- Enable Jetty Client connection sweeper
- Reduce JettyHttpClient selectors to 2
* 0.105
- Upgrade to Airbase 35
- Upgrade to Jetty 9.2.10.v20150310
* 0.104
- Upgrade to Airbase 34
* 0.103
- Upgrade to Airbase 32
- Upgrade to Slice 0.10
* 0.102
- Fix bug when deserializing dense HLL v1 with no overflow bucket
- Verify HLLs have the same bucket count before merging them
- Add thread factory threads to a ThreadGroup
- Add more JettyHttpClient stats and debug operations
* 0.101
- New layout for dense HLL
- Fix bug in cardinality estimates produced by sparse HLL
- Expose request queue depth stats in HttpClient
* 0.100
- New algorithm and representation for sparse HLL
* 0.99
- Java 8 is now required
- Support JSON serialization of Java 8 types
* 0.98
- Expose JettyHttpClient dump methods to JMX
- Make HyperLogLog.addHash public
* 0.97
- Add AsyncSemaphore concurrent utility
- Add /v1/jmx/mbean/{objectName}/{attributeName} to get a single MBean attribute value
* 0.96
- Add AbstractConfigurationAwareModule for accessing config at binding time
- Upgrade to Airbase 28
- Upgrade to Guava 18.0
- Remove server archetype builders
- Remove deprecated AsyncHttpClient and bindAsyncHttpClient()
- Un-deprecate discovery.uri config property
- Show stack traces in HTTP error responses
* 0.95
- Add AsyncResponseHandler utility for building async HTTP responses
- Add Add Announcer.forceAnnounce() and ServiceSelector.refresh()
- Add more utility methods to Closeables
- Name and group Jetty HTTP client threads
- Always use daemon threads in HTTP client
- Add getResponseBytes() and getResponseBody() to FullJsonResponseHandler
- Change Duration.nanosSince() convert to most succinct unit
* 0.94
- Add min/max validators for DataSize
- Allow JettyHttpClient to configure maxRequestsQueuedPerDestination
- Add Jersey AsyncContextDelegateProvider implementation
- Upgrade to Airbase 26
- Always remove GZIP handler from JettyHttpClient
- Switch BoundedExecutor queue to ConcurrentLinkedQueue
* 0.93
- Add JAX-RS mapper for Smile encoded data
- Set thread context class loader in thread factories
* 0.92
- Upgrade to Jersey 2.9.1
- Add JaxrsBinder for explicit resource binding
- Add JaxrsModule constructor parameter to require explicit bindings
- Add missing synchronization on DecayCounter.merge
* 0.91
- Change packaging to not include zip file dependencies
* 0.90
- Add AbstractEventClient
* 0.89
- [Bug] Fix inadvertent masking of errors when detecting jmx agent
- Allow TimeStat unit to be specified at instantiation
- Add BoundedExecutor
* 0.88
- Add HyperLogLog
- [Bug] Max response size in HttpClient was hard-coded
- Optimize buffer management in HttpClient response handler
- Remove GZIP handler from HttpClient
- Fix failing unit tests in Java 8
* 0.87
- Upgrade to Jetty 9.1.3
- [Bug] Expose HttpClient stats via JMX
- Add support for IPv6 addresses to HttpUriBuilder
* 0.86
- Upgrade to Jetty 9.1.2
- Added new JettyHttpClient
- Removed ApacheHttpClient, StandaloneNettyAsyncHttpClient and NettyAsyncHttpClient
* 0.85
- [Bug] Handle locales correctly in Duration and DataSize
- [Bug] Shutdown discovery client executor using LifeCycle
- Upgrade to Guava 16.0.1
- Add validation for nodeId
- Defunct http-server.ip and jetty.ip
- Defunct all legacy HTTP server properties
- Add TestingTicker to testing module
- Capture log messages from commons-logging
- Allow using resources with TestingHttpServer
- Use Guava TypeToken instead of Guice TypeLiteral for JsonCodec
* 0.84
- Add decayed total to Distribution
- Add NOTICE file to airlift distribution tar file if present in source tree
* 0.83
- Upgrade to Guava 15.0
* 0.82
- [Bug] Launch processes from the data directory
* 0.81
- [Bug] Ignore IOException in Closeables.closeQuietly()
- Always return local announcements from service selectors
- Add merge support to CounterStat and DecayCounter
* 0.80
- [Bug] Fix issue in launcher when inspecting etc and plugin symlinks
- [Bug] Fix JSONP support in jaxrs for generic types (like collections)
- [Bug] Fix logging of configs with multiple independent bindings
- Move the HTML user interface for JMX to /v1/jmx
- Don't try to start JMX agent if already running
- Add 1,5,10, and 25 percentiles to Distribution
- Add manual percentile specification to Distribution getPercentiles
- Add byte array methods for JsonCodec
- Change DataSize toString to round to two decimal places
* 0.79
- Replace custom jmx agent with jdk's
- Defunct jmx.rmiserver.hostname property
- Add additional Logger methods for literal messages
- Update RequestStats to use DistributionStat instead of MeterStat
- Deprecate TimedStat and introduce TimeStat
- Add ConfigurationAwareProvider interface to implement custom
configuration providers
- Roll and compress the http request log daily
- [Experimental] Add management wrapper for thread pool executor
- New python-based launcher
* 0.78
- Redesign HttpClient exception handling
- Backwards incompatible change to Duration to align with DataSize
- Bind to localhost when using TestingNodeModule
- Validate discovered address in NodeInfo
- Add Discovery ServiceSelectorManager for forced refreshes
- [Bug] In Discovery retry quicker after a failure
* 0.77
- Implemented QuantileDigest merging
- Added methods for serializing and deserializing QuantileDigest
- Allow adding negative values to QuantileDigest
- Fix handling of missing content type for JSON http responses
* 0.76
- Rack server support has been moved to a separate project: airlift-rack
- Added TestingHttpClient to simplify testing
* 0.75
- Add "X-Content-Type-Options: nosniff" header to all json responses to prevent
broken browsers from rendering the json as html, which is a potential XSS
vulnerability
* 0.74
- Remove experimental from all artifact names
- AsyncHttpClient (Netty based) now shares I/O pools by default. To get a
private IO pool, use withPrivateIoThreadPool() when binding the client.
The pools running user code are still per-client.
* 0.73
- [BUG] Always notify http response handler of errors
- Properly name http client threads
- Add properties to control number of Netty http boss and worker io threads
- Add AsyncHttpResponseFuture with state method for debugging
* 0.72
- Event client supports multiple backend implementations simultaneously
- Move logging management code from log module to new log-manager module
- Drop jax-rs dependencies in clients
- [Bug] launcher would sometimes create empty pid file which resulted in "kill 0" being executed
* 0.71
- JMXAgent now uses NodeInfo to find IP address to bind to.
- Use airbase to build.
- Upgrade to Jetty 8.1.9
- Upgrade to Guava 13.0.1
- Upgrade to Apache BVal 0.5
- Upgrade to slf4j 1.7.2
- Upgrade to logback 1.0.9
- Upgrade to Jersey 1.17
- Upgrade to Joda Time 2.1
- Upgrade to JCommander 1.30
- Upgrade to MySQL Connector 5.1.23
- Upgrade to h2 1.3.170
- Upgrade to TestNG 6.8
- Upgrade to Mockito 1.9.5
- Upgrade to Hamcrest 1.3
- Change io.airlift.log.Logger to use java.util.logging internally
* 0.70
- Upgrade to Jackson 2.1.3
- add support for Jackson modules
- Change AsyncHttpClient to be a true async http client
* 0.69
- Upgrade to jmxutils 1.13
- Upgrade to Jackson 1.9.12
* 0.68
- Dropped support for v1 events
- HTTP clients are now Closeable and shutdown properly
- JsonCodecFactory no longer pretty prints by default
- [Bug] Prevent HTTP tests from hanging on machines with many processors
* 0.67
- Dropped the Cassandra module
- Improvements to EquivalenceTester
- [Bug] Don't send entity in http client if there's no body generator
- [Bug] Use System.nanoTime() instead of System.currentTimeMillis for measuring time intervals
- Upgrade to Apache httpclient 4.2.2
- [Bug] Don't throw an exception from http request logger when wall clock time goes backwards
- Improve validation of H2EmbeddedDataSource config
- Allow use of H2 without an init script
- Enable mvcc support for embedded H2
- DataSize and Duration are now serializable as json
* 0.66
- Java 7 is now required
- Replace EWMA with DecayCounter, an implementation that doesn't require a thread pool
- Add HttpUriBuilder from Airship (Formerly Galaxy)
- Add support for binding Jackson key serializers and deserializers in Guice
- Add support for fromString method in configuration type coercion
- Better testing for nulls and unrelated classes in EquivalenceTester
- [Bug] Http client could attempt to connect to port zero; now throw an exception
- Minor fixes for windows
- Add QuantileDigest for computing approximate quantile statistics
- Deprecate MeterStat in favor of newly introduced DistributionStat
* 0.65
- Repackaged the project under io.airlift
* 0.64
- [Bug] Add missing HttpEventModule to skeleton-server
- Enforce use of HttpClientBinder
* 0.63
- [Bug] Make http-client-experimental a compile dependency
* 0.62
- Removed all dependencies to Ning's Asynchronous HTTP client
- Cleaned up dependency management
- Multiple refactoring commits for readability
- Addition of request filter support to HttpClient
- Removal of deprecated JavaUrlHttpClient
- Removal of the experimental module, segmented into separate modules
* 0.61
- Upgrade to Guava 12.0 for Platform and Rest Server Base
- Tests for keep alives in ApacheHttpClient
* 0.60
- [Bug] Fix announcements for Rack servers
* 0.59
- Replace Hibernate validator with direct dependency on Apache BVal
- [Bug] Fix V1 Events so they can be used with http request events
- Check for duplicate classes in the dependency closure during builds
- Add JsonEventSerializer for external use
- Add support for Rack servers to be able to announce with Discovery
* 0.58
- [Bug] Add new required modules for Rack server
- [Bug] Make media type parser more lenient
- [Experimental] Make JsonResponseHandler success codes configurable
* 0.57
- [Bug] ServiceInventory periodic refresh wasn't working
- Export ServiceInventory through JMX
* 0.56
- Fixed bug that causes HttpRequestEvents to not be published
* 0.55
- Upgrade to Jackson 1.9.5
- Record and event for each http request processed
- Added support for X-FORWARDED-FOR and X-FORWARDED-PROTO in request event and logging
- Add timing filter to http request flow for measuring time to first byte
- Set names of http server threads to a reasonable value
- Service inventory now support file URIs
- [Experimental] Changed HttpClient to not be async and added new AsyncHttpClient
- [Experimental] Replace java.net.URL with Apache HTTP Components in http-client
* 0.54
- [Bug] Don't use doclava in javadoc plugin for servers that use rest-server-base, it's buggy
* 0.53
- Upgrade to jetty 8.1.1 to fix connection leak when clients hang up prematurely
- EOFException while reading a JSON request now results in a 400 instead of a 500
- Add support for binding servlet filters into TestingHttpServer
- [Experimental] Update Rack packaging (JRuby on Rails) for Rails 3.1+
* 0.52
- Use a separate thread pool for http server admin listener
- Make http client connect and read timeout configurable
- Add node.external-address property to specify external routable address
- Server response header is not longer sent
* 0.51
- [Experimental] Trace token support in http server
- Support Map and Multimap for event fields
- Add server binary and config spec in jmx-http-rpc announcement
- [Bug] Announce jmx-http-rpc on admin port instead of main port
- [Bug] Add support for legacy log.config to launcher
* 0.50
- Upgrade to Guava 10.0.1
- Upgrade to TestNG 6.2.1
- Upgrade to Joda time 2.0
- Upgrade to CGlib 2.2.2
- Upgrade to Hibernate validation 4.2.0.Final
- Upgrade to log4j-over-slf4j 1.6.2
- Upgrade to Logback 0.9.30
- [Experimental] Log levels can be configured via JMX
* 0.49
- Upgrade to Jetty 8.0.3. Fixes critical bug where the http server leaks connections and file descriptors
- Sign artifacts for projects that inherit from rest-server-base and rack-server-base-experimental
- Optimize event serializer under high-concurrency
- [Experimental] Discovery client now bootstraps itself by calling out to an optional service inventory API
- [Experimental] Http server and client now expose request stats over JMX
- [Experimental] Support for conditional module binding
- [Experimental] Http-based JMX connector listens on an alternate admin port
- [Bug] Http client now consumes all unread input, otherwise keep-alive doesn't work
- [Bug] RackServlet inherited GEM_HOME and GEM_PATH environment variables
* 0.48
- Upgrade to Guava 10.0 - older version are now banned
- Upgrade to Hector 0.8.0-2
- Upgrade to Jersey 1.9.1
- Upgrade to Jetty 8.0.1
- [Experimental] Added http based JMX remote connector
- [Experimental] User agent if http client is now node.id to make debugging easier
- [Bug] removed broken discovery and event fail-safe logic
* 0.47
- [Bug] Fixed memory leaks in DiscoveryClient and EventClient due to AsyncHttpClient
- [Experimental] Added simplified HttpClient based in java.net.URL
* 0.46
- Launcher script now symlinks etc directory from install dir to data dir
- Launcher now looks for etc/node.properties instead of etc/node.config
* 0.45
- Releases and snapshots are now published to oss.sonatype.org
- HttpServer now allows SSL renegotiation (underlying issue has been fixed in JVM)
- Record request size in http log
- Launcher now supports --node-config for passing node specific data from Galaxy Agent
- Upgrade to async-http-client 1.6.5
- [Experimental] Rewrote event client v2 serialization and deprecated v1
- [Experimental] Added support for nested and iterable event fields in v2
- [Experimental] Changed event client to use java.net.URL instead of AsyncHttpClient due to memory leak
- [Experimental] Upgraded embedded Cassandra to 0.8.5
- [Experimental] Changed default Cassandra partitioner to BYTE_ORDERED
- [Experimental] Added rpc timeout configuration support for embedded Cassandra
- [Experimental] Moved experimental discovery based JDBC driver to pure Ruby
- [Experimental] Removed experimental dbpool-no-dep jar
- [Experimental] JRuby on Rails platform integration and galaxy packaging
- [Experimental] Added toBytes and roundTo methods to DataSize
- [Bug] System out and err redirect to logging does not flush
- [Bug] Fixed race condition in embedded Cassandra lifecycle
- [Bug] Fixed error reporting in event client
- [Bug] Fixed launcher issues with spawn using 'sh -c' on Linux
* 0.44 [BAD]
- This is a bad release. Do not use.
* 0.43
- [Experimental] Added rack servlet for integration with JRuby on Rails
- [Bug] Discovery client fails to reschedule refresh job in some cases
* 0.42
- [Experimental] Embedded cassandra server and testing utilities
- [Experimental] Added DataSize (similar to Duration)
- [Experimental] Added ValidationAssertions.assertValidates and assertFailsValidation
- [Bug] Discovery client fails when consuming static announcements
- [Bug] MySQL connection timeouts using the wrong unit (ms vs s)
- [Bug] Jar manifest using the wrong file names when building snapshot versions
* 0.41
- Removed support for building RPMs
- Launcher now requires MRI Ruby 1.9.2+
- Launcher script now supports arbitrary properties using -Dname=value
- Launcher script now supports restart command
- Launcher script now supports a data directory argument which specifies
the location to which the process should write persistent data files
- Launcher script now writes pid file and launcher log to data directory
- Added location to NodeInfo
- Updated to Surefire 2.8.1 which fixes Guice dependency problems
- Graduated @MinDuration and @MaxDuration to platform units module
- [Experimental] Added service discovery client
- [Experimental] JMX now announces to discovery server
- [Experimental] HTTP event client now uses discovery to find event collectors
- [Experimental] MySQL db pool now uses discovery to find mysql servers
- [Experimental] Added no-dep discovery database driver for use in Rails
- [Bug] Assembly packaging now picks up jars that contain a maven classifier
* 0.40
- Builder-based API for EquivalenceTester
- Improved error reporting for EquivalenceTester
- MockRequest for testing Jax-RS resources
- Bean validation annotations for Durations (@MinDuration, @MaxDuration)
- Log.debug() variant that takes an exception
- http-server.https.keystore.password to http-server.https.keystore.key
- Bug fixes