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