/** * Return null if the {@link HystrixRequestContext} has not been initialized for the current thread. * <p> * If {@link HystrixRequestContext} has been initialized then call method in superclass: * {@link HystrixRequestVariableDefault#get()} */ @Override public T get() { if (!HystrixRequestContext.isCurrentThreadInitialized()) { return null; } return super.get(); }
private static void setRequestContextIfNeeded(final HystrixRequestContext currentRequestContext) { if (!HystrixRequestContext.isCurrentThreadInitialized()) { // even if the user Observable doesn't have context we want it set for chained operators HystrixRequestContext.setContextOnCurrentThread(currentRequestContext); } }
@Override public void call(Throwable throwable) { isInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); } })
@Override public void call(Notification<? super Boolean> n) { results.isContextInitializedObserveOn.set(HystrixRequestContext.isCurrentThreadInitialized()); results.observeOnThread.set(Thread.currentThread()); }
@Override public void call(Notification<? super Boolean> n) { results.isContextInitializedObserveOn.set(HystrixRequestContext.isCurrentThreadInitialized()); results.observeOnThread.set(Thread.currentThread()); }
@Override public void call(Notification<? super Boolean> n) { results.isContextInitializedObserveOn.set(HystrixRequestContext.isCurrentThreadInitialized()); results.observeOnThread.set(Thread.currentThread()); }
@Override public void call(Notification<? super Boolean> n) { results.isContextInitializedObserveOn.set(HystrixRequestContext.isCurrentThreadInitialized()); results.observeOnThread.set(Thread.currentThread()); }
@Override public void call(Notification<? super Boolean> n) { results.isContextInitializedObserveOn.set(HystrixRequestContext.isCurrentThreadInitialized()); results.observeOnThread.set(Thread.currentThread()); }
@Override public void call(Notification<? super Boolean> n) { results.isContextInitializedObserveOn.set(HystrixRequestContext.isCurrentThreadInitialized()); results.observeOnThread.set(Thread.currentThread()); }
@Override public void call(Notification<? super Boolean> n) { results.isContextInitializedObserveOn.set(HystrixRequestContext.isCurrentThreadInitialized()); results.observeOnThread.set(Thread.currentThread()); }
@Override public void call(Throwable t1) { System.out.println("onError: " + t1); System.out.println("onError Thread: " + Thread.currentThread()); System.out.println("ThreadContext in onError: " + HystrixRequestContext.isCurrentThreadInitialized()); onErrorThread.set(Thread.currentThread()); isRequestContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); }
@Override public void call(Object t1) { System.out.println("onNext: " + t1); System.out.println("onNext Thread: " + Thread.currentThread()); System.out.println("ThreadContext in onNext: " + HystrixRequestContext.isCurrentThreadInitialized()); onErrorThread.set(Thread.currentThread()); isRequestContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); }
@Override public void call(Throwable t1) { System.out.println("onError: " + t1); System.out.println("onError Thread: " + Thread.currentThread()); System.out.println("ThreadContext in onError: " + HystrixRequestContext.isCurrentThreadInitialized()); onErrorThread.set(Thread.currentThread()); isRequestContextInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); }
@Override public void call(Notification<? super Boolean> n) { System.out.println("timeoutWithFallback notification: " + n + " " + Thread.currentThread()); results.isContextInitializedObserveOn.set(HystrixRequestContext.isCurrentThreadInitialized()); results.observeOnThread.set(Thread.currentThread()); }
@Override protected String run() throws Exception { if (HystrixRequestContext.isCurrentThreadInitialized()) { System.out.println("Executing => Commands: " + HystrixRequestLog.getCurrentRequest().getAllExecutedCommands()); } return "Hello"; }
@Test public void testThreadContextOnTimeout() { final AtomicBoolean isInitialized = new AtomicBoolean(); new TimeoutCommand().toObservable() .doOnError(new Action1<Throwable>() { @Override public void call(Throwable throwable) { isInitialized.set(HystrixRequestContext.isCurrentThreadInitialized()); } }) .materialize() .toBlocking().single(); System.out.println("initialized = " + HystrixRequestContext.isCurrentThreadInitialized()); System.out.println("initialized inside onError = " + isInitialized.get()); assertEquals(true, isInitialized.get()); }
@Override protected String getCacheKey() { if (HystrixRequestContext.isCurrentThreadInitialized()) { StringBuilder sb = new StringBuilder(); sb.append(this.getCommandGroup().name()); sb.append("-"); sb.append(this.getCommandKey().name()); return sb.toString(); } else { return super.getCacheKey(); } }
private List<String> getSourceLabel() { String sourceLabel = null; if (HystrixRequestContext.isCurrentThreadInitialized()) { sourceLabel = RequestVariableHolder.LABEL.get(); } List<String> labels = Collections.emptyList(); if (sourceLabel != null) { labels = Arrays.asList(sourceLabel.split(LABEL_SPLIT)); } return labels; }
@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { if (HystrixRequestContext.isCurrentThreadInitialized()) { HystrixRequestContext.getContextForCurrentThread().shutdown(); } } }
@Override protected String getCacheKey() { if (HystrixRequestContext.isCurrentThreadInitialized()) { StringBuilder sb = new StringBuilder(); sb.append(this.getCommandGroup().name()); sb.append("-"); sb.append(this.getCommandKey().name()); return sb.toString(); } else { return super.getCacheKey(); } }