Releases: Netflix/Hystrix
Version 1.4.0 Release Candidate 2
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
Artifacts: Maven Central
Version 1.3.14
This release did not pass Netflix production canary testing so was not released to Maven Central.
Version 1.4.0 Release Candidate 1
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
Artifacts: Maven Central
Version 1.3.13
- Pull 216 hystrix-javanica contrib-module: annotation support
Artifacts: Maven Central
Version 1.3.12
- Pull 214 HystrixContextCallable/Runnable Constructors
In 1.3.10 changes were made to HystrixContextRunnable
and HystrixContextCallable
that modified their public constructor. These classes are technically not part of the "public API" or Javadocs but in case anyone is using them this restores their original public constructors.
Artifacts: Maven Central
Version 1.3.11
- 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
- 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
Artifacts: Maven Central
Version 1.3.9
- Pull 210 HystrixContextScheduler was not wrapping the Inner Scheduler
- Pull 206 Bugfix ExceptionThreadingUtility
- Pull 203 Made HystrixTimer initialization thread-safe
Artifacts: Maven Central
Version 1.3.8
- Pull 194 BugFix: Do not overwrite user thread duration in case of timeouts
Artifacts: Maven Central
Version 1.3.7
- Pull 189 BugFix: Race condition between run() and timeout
- Pull 190 BugFix: ConcurrencyStrategy.wrapCallable was not being used on callbacks
Artifacts: Maven Central