Version 1.4.0 Release Candidate 6 (Maven Central)
NOTE: This code is believed to be production worthy but is still a "Release Candidate" until these possible functional or design issues are resolved.
- Pull 534 Bump RxJava to 1.0.4
- Pull 532 Hystrix-Clojure: Fix typo
- Pull 531 Move onThreadStart execution hook after check that wrapping thread timed out
- Pull 530 Add shutdown hook to metrics servlet for WebSphere
- Pull 527 Creating a synthetic exception in the semaphore execution and short-circuited case
- Pull 526 Move onRunSuccess/onRunError and thread-pool book-keeping to Hystrix thread
- Pull 524 Change calls from getExecutedCommands() to getAllExecutedCommands()
- Pull 516 Updated HystrixServoMetricsPublisher initalization of singleton
- Pull 489 Javanica: Request Caching
- Pull 512 Add execution hook Javadoc
- Pull 511 Fix missing onComplete hook call when command short-circuits and missing onRunSuccess hook call in thread-timeout case
- Pull 466 Add unit tests to HystrixCommand and HystrixObservableCommand
- Pull 465 Handle error in construction of HystrixMetricsPoller
- Pull 457 Fixing resettability of HystrixMetricsPublisherFactory
- Pull 451 Removed ExceptionThreadingUtility
- Pull 366 Added support to get command start time in Nanos
- Pull 456 Allow hooks to generate HystrixBadRequestExceptions that get handled appropriately
- Pull 454 Add tests around HystrixRequestLog in HystrixObservableCommand
- Pull 453 Resettable command and thread pool defaults
- Pull 452 Make HystrixPlugins resettable
- Pull 450 Add fallback tests to HystrixObservableCommand
- Pull 449 Move thread completion bookkeeping to end of chain
- Pull 447 Synchronous queue fix
- Pull 376 Javanica README cleanup
- Pull 378 Exection hook call sequences (based on work submitted in Pull 327)
- Pull 374 RequestBatch logging
- Pull 371 Defer creation of IllegalStateException in collapser flow (based on work submitted in Pull 264)
- Pull 369 Added basic auth to Hystrix Dashboard (based on work submitted in Pull 336)
- Pull 367 Added thread pool metrics back to execution flow (based on test submitted in Pull 339)
- Pull 365 Fix Javadoc for HystrixCommand.Setter
- Pull 364 Upgrade servo to 0.7.5
- Pull 362 Fixed hystrix-rxnetty-metrics-stream unit tests
- Pull 359 Fixed Javanica unit tests
- Pull 361 Race condition when creating HystrixThreadPool (initially submitted as Pull 270)
- Pull 358 Fixed Clojure unit tests that failed with RxJava 1.0
- Commit 2edcd5 Upgrade to core-metrics 3.0.2
- Pull 310 Osgi-ify hystrix-core, hystrix-examples
- Pull 340 Race condition when creating HystrixThreadPool
- Pull 343 Added 3 new constructors for common command setup
- Pull 347 Javanica: Allow for @HystrixCommand to be used on parameterized return type
- Pull 353 Fixing a hystrix-examples compilation failure
- Pull 338 API Changes after design review of Issue 321
- Pull 344 Upgrade to Gradle 1.12
- Pull 334 Javanica: Hystrix Error Propagation
- Pull 326 Javanica: Added support for setting threadPoolProperties through @HystrixCommand annotation
- Pull 318 HystrixAsyncCommand and HystrixObservableCommand
- Pull 316 Add support for execution.isolation.semaphore.timeoutInMilliseconds
Version 1.3.20 (Maven Central)
- [Pull 533] (Netflix#533) Upgrade to RxJava 1.0.4
- [Pull 528] (Netflix#528) Pass RuntimeException to onError hook in semaphore-rejection and short-circuit cases, instead of null
- [Pull 520] (Netflix#520) More unit tests for hook ordering
- [Commit 61b77c] (https://github.com/Netflix/Hystrix/commit/61b77c305bda6dbd4dc8c86445b4a6670f981845) Fix flow where ExecutionHook.onComplete was called twice
- [Commit a5e52a] (https://github.com/Netflix/Hystrix/commit/a5e52a6d29cd911c1e14ec107a875a9343472db5) Add call to ExecutionHook.onError in HystrixBadRequestException flow
- [Commit cec25e] (https://github.com/Netflix/Hystrix/commit/cec25ed7c6f10c4c59189b443bda844fa39043d6) Fix hook ordering assertions
- [Pull 508] (Netflix#508) Backport of [Pull 327] (Netflix#327) from master: Add hook assertions to unit tests
- [Pull 507] (Netflix#507) Fix hystrix-clj unit tests
- [Commit 62be49] (https://github.com/Netflix/Hystrix/commit/62be49465ae418509814fd195081ef7611eb6015) RxJava 1.0.2
Version 1.3.19 (Maven Central)
- Pull 348 Javanica: Allow for @HystrixCommand to be used on parameterized return type
- Pull 329 Javanica: allowing configuration of threadPoolProperties through @HystrixCommand annotation
Version 1.4.0 Release Candidate 5 (Maven Central)
NOTE: This code is believed to be production worthy but is still a "Release Candidate" until these possible functional or design issues are resolved.
- Pull 314 RxJava 0.20 and Remove Deprecated Usage
- Pull 307 Dashboard: Avoid NPE when 'origin' parameter not present
Version 1.3.18 (Maven Central)
- Pull 305 Removing deprecated RxJava usage
Version 1.3.17 (Maven Central)
- Pull 291 String optimization for HystrixRequestLog
- Pull 296 Fix Premature Unsubscribe Bug
- Commit 47122e RxJava 0.20.1
Version 1.4.0 Release Candidate 4 (Maven Central)
NOTE: This code is NOT considered production worthy yet, hence the "Release Candidate" status.
This fixes some bugs and changes the HystrixObservableCollapser
signature to support Observable
batches.
- Pull 256 Fix Race Condition on Timeout
- Pull 261 New signature for HystrixObservableCollapser
- Pull 254 Remove jsr305 Dependency
- Pull 260 RxJava 0.18.2
- Pull 253 Handling InterruptedExceptions in the HystrixMetricsStreamServlet
Version 1.4.0 Release Candidate 3 (Maven Central)
NOTE: This code is NOT considered production worthy yet, hence the "Release Candidate" status.
This adds non-blocking support to the collapser via the HystrixObservableCollapser
type, fixes some bugs and upgrades to RxJava 0.18.
- Pull 245 HystrixObservableCollapser
- Pull 246 RxJava 0.18
- Pull 250 Tripped CircuitBreaker Wouldn't Close Under Contention
- Pull 243 Update servo to 0.6
- Pull 240 Add missing reset for CommandExecutionHook in HystrixPlugins.UnitTest
- Pull 244 Javanica: Cleaner error propagation
Version 1.4.0 Release Candidate 2 (Maven Central)
NOTE: This code is NOT considered production worthy yet, hence the "Release Candidate" status.
This fixes a bug found in Release Candidate 1 that caused the semaphore limits to be applied when thread isolation was chosen.
It also stops scheduling callbacks onto new threads and lets the Hystrix threads perform the callbacks.
- Pull 238 Fix for Semaphore vs Thread Isolation Bug
- Pull 230 Javanica Module: Added support for Request Cache and Reactive Execution
Version 1.4.0 Release Candidate 1 (Maven Central)
This is the first release candidate of 1.4.0 that includes HystrixObservableCommand
(Source) that supports bulkheading asynchronous, non-blocking sources.
NOTE: This code is NOT considered production worthy yet, hence the "Release Candidate" status.
It has run for 1 day on a single machine taking production traffic at Netflix. This is sufficient for us to proceed to a release candidate for official canary testing, but we intend to test for a week or two before doing a final release.
Here is a very basic example using Java 8 to make an HTTP call via Netty and receives a stream of chunks back:
public static void main(String args[]) {
HystrixObservableCommand<String> command = bulkheadedNetworkRequest("www.google.com");
command.toObservable()
// using BlockingObservable.forEach for demo simplicity
.toBlockingObservable().forEach(d -> System.out.println(d));
System.out.println("Time: " + command.getExecutionTimeInMilliseconds()
+ " Events: " + command.getExecutionEvents());
}
public static HystrixObservableCommand<String> bulkheadedNetworkRequest(final String host) {
return new HystrixObservableCommand<String>(HystrixCommandGroupKey.Factory.asKey("http")) {
@Override
protected Observable<String> run() {
return directNetworkRequest(host);
}
@Override
protected Observable<String> getFallback() {
return Observable.just("Error 500");
}
};
}
public static Observable<String> directNetworkRequest(String host) {
return RxNetty.createHttpClient(host, 80)
.submit(HttpClientRequest.createGet("/"))
.flatMap(response -> response.getContent())
.map(data -> data.toString(Charset.defaultCharset()));
}
- Pull 218 Hystrix 1.4 - Async/Non-Blocking
- Pull 217 Javanica: Added support for "Reactive Execution" and "Error Propagation"
- Pull 219 Restore HystrixContext* Constructors without ConcurrencyStrategy
Version 1.3.16 (Maven Central)
Version 1.3.15 (Maven Central)
- Pull 248 RxJava 0.18 for Hystrix
- Pull 249 Tripped CircuitBreaker Wouldn't Close Under Contention
- Pull 229 Javanica: Added support for Request Cache and Reactive Execution
- Pull 242 Javanica: Cleaner error propagation
- Pull 228 Upgrade 1.3.x to RxJava 0.17.1
Version 1.3.13 (Maven Central)
- Pull 216 hystrix-javanica contrib-module: annotation support
Version 1.3.12 (Maven Central)
- Pull 214 HystrixContextCallable/Runnable Constructors
Version 1.3.11 (Maven Central)
- We'll ignore this release ever happened. Exact same binary as 1.3.10. (It helps to push code to Github before releasing.)
Version 1.3.10 (Maven Central)
- Pull 211 Update Javassist version to 3.18.1-GA
- Pull 213 BugFix: Timeout does not propagate request context
- Pull 204 deploying hystrix dashboard on tomcat, SLF4J complains about a missing implementation
- Pull 199 Add new module for publishing metrics to Coda Hale Metrics version 3
Version 1.3.9 (Maven Central)
- Pull 210 HystrixContextScheduler was not wrapping the Inner Scheduler
- Pull 206 Bugfix ExceptionThreadingUtility
- Pull 203 Made HystrixTimer initialization thread-safe
Version 1.3.8 (Maven Central)
- Pull 194 BugFix: Do not overwrite user thread duration in case of timeouts
Version 1.3.7 (Maven Central)
- Pull 189 BugFix: Race condition between run() and timeout
- Pull 190 BugFix: ConcurrencyStrategy.wrapCallable was not being used on callbacks
Version 1.3.6 (Maven Central)
- Pull 181 [hystrix-contrib/hystrix-clj] Making Command keys quantified by namespaces
- Pull 182 Removing unused Legend component latent. Removed from html templates/css
- Pull 183 Bugfix to HystrixBadRequestException handling
- Pull 184 BugFix: queue() BadRequestException Handling on Cached Response
- Pull 185 BugFix: Observable.observeOn Scheduler Lost RequestContext
- 0fb0d3d RxJava 0.14
Version 1.3.5 (Maven Central)
- Pull 179 RxJava 0.13
Version 1.3.4 (Maven Central)
- f68fa23c RxJava [0.11,0.12)
Version 1.3.3 (Maven Central)
- 858e334f RxJava 0.11
Version 1.3.2 (Maven Central)
- Pull 173 Fix Exception vs Throwable typo in preparation for RxJava 0.11.0
Version 1.3.1 (Maven Central)
- Pull 170 Add rx support to hystrix-clj
Version 1.3.0 (Maven Central)
This version integrations Hystrix with RxJava to enable non-blocking reactive execution and functional composition.
Async execution can now be done reactively with the observe()
method and it will callback when the value is received:
Observable<String> s = new CommandHelloWorld("World").observe();
A simple example of subscribing to the value (using a Groovy lambda instead of anonymous inner class):
s.subscribe({ value -> println(value) })
A "Hello World" example of reactive execution can be found on the wiki.
More can be learned about RxJava and the composition features at https://github.com/Netflix/RxJava/wiki
This release is a major refactoring of the Hystrix codebase. To assert correctness and performance it was run in production canary servers on the Netflix API several times during development and for over a week during release candidate stages. Prior to this release the 1.3.0.RC1 version has been running in full Netflix API production for several days performing billions of executions a day.
Version 1.2.18 (Maven Central)
- Pull 152 Escape meta-characters to fix dashboard
- Pull 156 Improve hystrix-clj docs
- Pull 155 Reset Hystrix after hystrix-clj tests have run
Version 1.2.17 (Maven Central)
- Pull 138 Eclipse and IDEA Config
- Pull 141 Upgrade Clojuresque (hystrix-clj builds)
- Pull 139 Fix dashboard math bug on thread pool rate calculations
- Pull 149 Allow getFallback to query failure states
Version 1.2.16 (Maven Central)
- Pull 132 Add
with-context
macro for conviently wrapping collapsers in thier own context - Pull 136 Fixed the mock stream
- Pull 137 Limit scope of CurrentThreadExecutingCommand
Version 1.2.15 (Maven Central)
This is fixing a bug introduced in the last release that affects semaphore isolated commands that use request caching.
- Pull 133 Fix NoSuchElement Exception
Version 1.2.14 (Maven Central)
- Issue 116 Mechanism for Auditing Network Access Not Isolated by Hystrix
A new module for instrumenting network access to identify calls not wrapped by Hystrix.
See the module README for more information: https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-network-auditor-agent
Version 1.2.13 (Maven Central)
- Issue 127 Add destroy() method to MetricsServlet
Version 1.2.12 (Maven Central)
- Issue 124 NPE if Hystrix.reset() called when it's already shutdown
Version 1.2.11 (Maven Central)
- Issue 113 IllegalStateException: Future Not Started (on thread pool rejection with response caching)
- Issue 118 Semaphore counter scope was global instead of per-key
- Pull 121 Concurrent execution metric for semaphore and thread isolation
Version 1.2.10 (Maven Central)
- Issue 80 HystrixCollapser Concurrency and Performance Fixes
Version 1.2.9 (Maven Central)
- Issue 109 Hystrix.reset() now shuts down HystrixTimer
- Pull 110 hystrix-clj cleanup
- Pull 112 Further work on HystrixCollapser IllegalStateException (Issue 80)
Version 1.2.8 (Maven Central)
- Issue 102 Hystrix.reset() functionality for clean shutdown and resource cleanup
- Pull 103 hystrix-clj cleanup
- Pull 104 javadoc clarification
- Pull 105 Added IntelliJ IDEA support, cleanup to Eclipse support
Version 1.2.7 (Maven Central)
- Pull 99 Experimental Clojure Bindings hystrix-clj
Version 1.2.6 (Maven Central)
- Issue 96 Remove 'final' modifiers to allow mocking
Version 1.2.5 (Maven Central)
- Pull 94 Force character encoding for event stream to utf-8
- Issue 60 Dashboard: Hover for full name (when shortened with ellipsis)
- Issue 53 RequestLog: Reduce Chance of Memory Leak
Version 1.2.4 (Maven Central)
- Pull 91 handle null circuit breaker in HystrixMetricsPoller
Version 1.2.3 (Maven Central)
- Issue 85 hystrix.stream holds connection open if no metrics
- Pull 84 include 'provided' dependencies in Eclipse project classpath
Version 1.2.2 (Maven Central)
- Issue 82 ThreadPool stream should include reportingHosts
Version 1.2.1 (Maven Central)
- Issue 80 IllegalStateException: Future Not Started
- Issue 78 Include more info when collapsed requests remain in queue
Version 1.2.0 (Maven Central)
- Issue 10 HystrixCommand Execution Hooks via Plugin
- Issue 15 Property to disable percentile calculations
- Issue 69 Property to disable fallbacks
- Pull 73 Make servlet-api a provided dependency
- Pull 74 Dashboard problem when using Turbine (Stream not flushing)
Version 1.1.7 (Maven Central)
- Pull 67 Unit tests for request log and checked exceptions
- Pull 66 Making provided scope transtive
- Pull 65 Fixed gitignore definition of build output directories
- Issue 63 Add "throws Exception" to HystrixCommand run() method
- Pull 62 applying js fixes to threadPool ui
- Pull 61 Request log with timeouts
- Issue 55 HysrixRequestLog: Missing Events and Time on Timeouts
- Issue 20 TotalExecutionTime not tracked on queue()
- Pull 57 Dashboard js fix
- Issue 39 HystrixPlugins Bootstrapping Problem - Race Conditions
- Pull 52 Gradle Build Changes
- Pull 51 Merging in gradle-template, specifically provided
- Pull 50 Make javax.servlet-api a 'provided' dependency not 'compile'
- Pull 49 Cleaner design (for metrics) by injecting listener into constructor.
- Pull 47 Support pausing/resuming metrics poller
- Pull 48 Fixing non-deterministic unit test
- README files added to submodules
- Pull 44 Hystrix Dashboard
- Issue 24 Yammer Metrics Support
- Pull 43 Fix the wrong percentile for latencyExecute_percentile_75 in the Servo publisher
- Pull 32 servo-event-stream module
- Pull 33 Remove Servo dependency from core, move to submodule
- Pull 35 Metrics event stream
- Issue 34 Remove Strategy Injection on HystrixCommand
- Pull 36 example webapp
- Pull 37 Migrate metrics stream from org.json.JSONObject to Jackson
- Pull 4 Contrib request context servlet filters
- Pull 16 Change logger from info to debug for property changes
- Issue 12 Use logger.error not logger.debug for fallback failure
- Issue 8 Capture exception from run() and expose getter
- Issue 22 Default Collapser scope to REQUEST if using Setter
- Pull 27 Initialize HealthCounts to non-null value
- Issue 28 Thread pools lost custom names in opensource refactoring
- Pull 30 Simplified access to HystrixCommandMetrics
- Javadoc and README changes
- Javadoc changes
- Initial open source release