Releases: Netflix/Hystrix
Version 1.4.6
- Pull 772 Add try-catch to all hook invocations
- Pull 773 Move threadPool field to end of metrics stream
- Pull 770 Fix AbstractCommand.isCircuitBreakerOpen() return value when circuit is forced open or closed
- Pull 769 Add threadPool to command metrics in event stream
- Pull 767 JMH upgrade and multithreaded benchmark
Artifacts: Maven Central, Bintray
Version 1.4.5
- Pull 764 Upgrade RxJava from 1.0.7 to 1.0.9
- Pull 763 Upgrade Jackson for hystrix-metrics-event-stream from 1.9.2 to 2.5.2
- Pull 760 Set Hystrix-created threads to be daemon
- Pull 757 Update RxNetty version in hystrix-rx-netty-metrics-stream from 0.3.8 to 0.4.7
- Pull 755 Improve Javadoc for HystrixThreadPoolProperties.Setter
- Pull 754 Only fire onFallbackStart/onFallbackError hooks when a user-supplied fallback is invoked
- Pull 753 Add timeout to dashboard for semaphore commands
- Pull 750 First pass at jmh performance benchmarking
- Pull 748 Fix return value of HystrixCircuiBreakerImpl.isOpen when it loses a race to open a circuit
- Pull 746 Improve Javadoc for HystrixCommandProperties.Setter
Artifacts: Maven Central, Bintray
Version 1.4.4
- Pull 743 Proper Javadoc deprecation for command timeouts being thread-specific
- Pull 742 Add flag to disable command timeouts
- Pull 741 Bugfix to java.lang.Error handling
- Pull 735 (Javanica) BatchHystrixCommand
- Pull 739 Mark some java.lang.Errors as unrecoverable and never trigger fallback
- Pull 738 Filter out thread pools with no thread activity from hystrics-metrics-event-stream
- Pull 732 Comment out flaky unit test
Artifacts: Maven Central, Bintray
Version 1.4.3
Version 1.4.2
- Pull 723 Fixed Javanica issue where annotation appeared in superclasses
- Pull 727 Fixed TravisCI issue by raising timeout in fallback rejection unit test
- Pull 724 Fixed backwards-incompatibility where using a custom HystrixConcurrencyStrategy forced use of a non-null HystrixRequestContext
- Pull 717 Added error message to dashboard HTML when connection to metrics source fails
Artifacts: Maven Central, Bintray
Version 1.4.1
- Pull 716 Fixed backwards-incompatibility where .execute(), .queue(), .observe(), .toObservable() were all made final in 1.4.0
Artifacts: Maven Central, Bintray
Version 1.4.0
This version adds HystrixObservableCommand and implements both it and HystrixCommand in terms of Observables.
A HystrixObservableCommand allows for fully non-blocking commands that can be composed as part of a larger Observable chain. See the wiki for more details on usage. Here's an example (using Java 8):
public class ObservableHttpCommand extends HystrixObsverableCommand<BackendResponse> {
@Override
protected Observable<BackendResponse> construct() {
return httpClient.submit(HttpClientRequest.createGet("/mock.json?numItems=" + numItems))
.flatMap((HttpClientResponse<ByteBuf> r) -> r.getContent()
.map(b -> BackendResponse.fromJson(new ByteBufInputStream(b))));
}
@Override
protected Observable<BackendResponse> resumeWithFallback() {
return Observable.just(new BackendResponse(0, numItems, new String[] {}));
}}
Because an Observable represents a stream of data, your HystrixObservableCommand may now return a stream of data, and supply a stream of data as a fallback. The methods to do so are construct()
and resumeWithFallback()
, respectively. All other aspects of the Hystrix state machine work the same in a HystrixCommand. See this wiki page for a diagram of this state machine.
The public API of HystrixCommand is unchanged, though the internals have significantly changed. Some bugfixes are now possible that affect Hystrix semantics:
- Timeouts now apply to semaphore-isolated commands as well as thread-isolated commands. Before 1.4.x, semaphore-isolated commands could not timeout. They now have a timeout registered on another (HystrixTimer) thread, which triggers the timeout flow. If you use semaphore-isolated commands, they will now see timeouts. As all HystrixCommands have a default timeout, this potentially affects all semaphore-isolated commands.
- Timeouts now fire on
HystrixCommand.queue()
, even if the caller never callsget()
on the resulting Future. Before 1.4.x, only calls toget()
triggered the timeout mechanism to take effect.
You can see more in-depth examples of how the new functionality of Hystrix 1.4 is used at Netflix/ReactiveLab.
You can learn more about Observables and RxJava at Netflix/RxJava.
As this was a major refactoring of Hystrix internals, we (Netflix) have run a release candidate of Hystrix 1.4 in canaries and production over the last month to gain confidence.
Artifacts: Maven Central / Bintray
Version 1.4.0 Release Candidate 9
NOTE: This code is believed to be production worthy. As of now, there are no known bugs preventing this becoming 1.4.0. Please report any design issues/questions, bugs, or any observations about this release to the Issues page.
- Pull 697 Add execution event for FALLBACK_REJECTION and unit tests
- Pull 696 Upgrade to RxJava 1.0.7
- Pull 694 Make execution timeout in HystrixCommandProperties work in the case when classes extend HystrixCommandProperties
- Pull 693 Hystrix Dashboard sorting issue
Artifacts: Maven Central / Bintray
Version 1.4.0 Release Candidate 8
NOTE: This code is believed to be production worthy. As of now, there are no known bugs preventing this becoming 1.4.0. Please report any design issues/questions, bugs, or any observations about this release to the Issues page.
- Pull 691 HystrixCommandTest test with large number of semaphores
- Pull 690 Add back ExceptionThreadingUtility
- Pull 688 Add metrics for EMIT and FALLBACK_EMIT
- Pull 687 Fixed issue where fallback rejection was also incrementing fallback failure metric
- Pull 686 HystrixCommandTest Unit test refactoring
- Pull 683 Add and Deprecate pieces of execution hook API to be more consistent
- Pull 681 Add cache hit execution hook
- Pull 680 Add command rejection metrics for HystrixThreadPools
Artifacts: Maven Central / Bintray
Version 1.4.0 Release Candidate 7
NOTE: This code is believed to be production worthy. As of now, there are no known bugs preventing this becoming 1.4.0. Please report any design issues/questions, bugs, or any observations about this release to the Issues page.
- Pull 678 Fix current concurrent execution count
- Pull 676 Add test to confirm that bad requests do not affect circuit breaker's computed error percentage
- Pull 675 Deprecate method names for executionTimeout that are thread-specific
- Pull 672 Limit the thread-interrupt behavior to occur only on timeouts
- Pull 669 Added unit tests to demonstrate non-blocking semaphore timeout
- Pull 667 Added rolling max counter for command execution
- Pull 666 Added missing licenses
- Pull 665 Added comment to HystrixConcurrencyStrategy about non-idempotency of strategy application
- Pull 647 Tie command property to thread interrupt
- Pull 645 Remove incorrect reference to async timeout
- Pull 644 Add RequestCollapser metrics to Yammer Metrics Publisher
- Pull 643 Stress-test HystrixObservalbeCollapser
- Pull 642 Fix flakiness of HystrixObservableCommandTest.testRejectedViaSemaphoreIsolation
- Pull 641 Fix flakiness of testSemaphorePermitsInUse
- Pull 608 Make HystrixObservableCommand handle both sync and async exceptions
- Pull 607 Upgrade RxJava from 1.0.4 to 1.0.5
- Pull 604 Added EMIT and FALLBACK_EMIT event types that get emitted in HystrixObservableCommand
- Pull 599 Added metrics to HystrixObservableCollapser
- Pull 596 Fixed HystrixContextScheduler to conform with RxJava Worker contract
- Pull 583 Style and consistency fixes
- Pull 582 Add more unit tests for non-blocking HystrixCommand.queue()
- Pull 580 Unit test to demonstrate fixed non-blocking timeout for HystrixCommand.queue()
- Pull 579 Remove synchronous timeout
- Pull 577 Upgrade language level to Java7
- Pull 576 Add request collapser metrics
- Pull 573 Fix link to CHANGELOG.md in README.md
- Pull 572 Add bad request metrics at the command granularity
- Pull 567 Comment out flaky unit-tests
- Pull 566 Fix hardcoded groupname in CodaHale metrics publisher
- Commit 6c08d9 Bumped nebula.netflixoss from 2.2.3 to 2.2.5
- Pull 562 Build changes to nebula.netflixoss (initially submitted as Pull 469)
Artifacts: Maven Central / Bintray