@Override protected void hookOnError(Throwable throwable) { this.sink.error(throwable); }
@Override protected void hookOnError(Throwable throwable) { this.error.set(throwable); if (this.dataBuffer.get() == null) { this.sink.error(throwable); } }
@Override protected void hookOnError(Throwable throwable) { this.sink.error(throwable); }
@Override public void onError(String message, Throwable cause) { if (this.terminated.getAndIncrement() == 0) { this.sink.error(new RuntimeException(message, cause)); } }
@Override public void failed(Throwable exc, ByteBuffer byteBuffer) { sinkDataBuffer(); this.sink.error(exc); }
@Override public void failed(Throwable exc, DataBuffer dataBuffer) { release(dataBuffer); this.sink.error(exc); }
@Override public void onError(String message, Throwable cause) { if (this.terminated.getAndIncrement() == 0) { this.sink.error(new RuntimeException(message, cause)); } }
@Override protected void hookOnError(Throwable throwable) { this.error.set(throwable); if (this.dataBuffer.get() == null) { this.sink.error(throwable); } }
@Override public void failed(Throwable exc, DataBuffer dataBuffer) { release(dataBuffer); this.sink.error(exc); }
@Override public void failed(Throwable exc, ByteBuffer byteBuffer) { sinkDataBuffer(); this.sink.error(exc); }
@Override public void onError(Throwable throwable) { if (!this.canceled && terminate()) { sink.error(throwable); } }
@Override public void completed(Integer written, ByteBuffer byteBuffer) { long pos = this.position.addAndGet(written); if (byteBuffer.hasRemaining()) { this.channel.write(byteBuffer, pos, byteBuffer, this); return; } sinkDataBuffer(); Throwable throwable = this.error.get(); if (throwable != null) { this.sink.error(throwable); } else if (this.completed.get()) { this.sink.complete(); } else { request(1); } }
@Override protected void hookOnNext(DataBuffer dataBuffer) { try { ByteBuffer byteBuffer = dataBuffer.asByteBuffer(); while (byteBuffer.hasRemaining()) { this.channel.write(byteBuffer); } this.sink.next(dataBuffer); request(1); } catch (IOException ex) { this.sink.next(dataBuffer); this.sink.error(ex); } }
@Override protected void hookOnNext(DataBuffer dataBuffer) { try { ByteBuffer byteBuffer = dataBuffer.asByteBuffer(); while (byteBuffer.hasRemaining()) { this.channel.write(byteBuffer); } this.sink.next(dataBuffer); request(1); } catch (IOException ex) { this.sink.next(dataBuffer); this.sink.error(ex); } }
Flux<String> exponentialRetryScenario() { AtomicInteger i = new AtomicInteger(); return Flux.<String>create(s -> { if (i.incrementAndGet() == 4) { s.next("hey"); } else { s.error(new RuntimeException("test " + i)); } }).retryWhen(repeat -> repeat.zipWith(Flux.range(1, 3), (t1, t2) -> t2) .flatMap(time -> Mono.delay(Duration.ofSeconds(time)))); }
@Test public void fluxCreateLatestError2() { Flux<String> created = Flux.create(s -> { s.error(new Exception("test")); }, FluxSink.OverflowStrategy.LATEST); StepVerifier.create(created) .verifyErrorMessage("test"); }
@Test public void fluxCreateSerializedError2() { Flux<String> created = Flux.create(s -> { s.error(new Exception("test")); }); StepVerifier.create(created) .verifyErrorMessage("test"); }
@Test public void fluxCreateErrorError2() { Flux<String> created = Flux.create(s -> { s.error(new Exception("test")); }, FluxSink.OverflowStrategy.ERROR); StepVerifier.create(created) .verifyErrorMessage("test"); }
@Test public void fluxCreateIgnoreError2() { Flux<String> created = Flux.create(s -> { s.error(new Exception("test")); }, FluxSink.OverflowStrategy.IGNORE); StepVerifier.create(created) .verifyErrorMessage("test"); }
@Test public void fluxCreateIgnoreError() { Flux<String> created = Flux.create(s -> { s.next("test1"); s.next("test2"); s.next("test3"); s.error(new Exception("test")); }, FluxSink.OverflowStrategy.IGNORE); StepVerifier.create(created) .expectNext("test1", "test2", "test3") .verifyErrorMessage("test"); }