Skip to content

Commit

Permalink
Listener fix up
Browse files Browse the repository at this point in the history
Signed-off-by: Bukhtawar Khan <bukhtawa@amazon.com>
  • Loading branch information
Bukhtawar committed Jun 22, 2022
1 parent 831c381 commit 8493976
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.message.ParameterizedMessage;
import org.apache.lucene.store.AlreadyClosedException;
import org.opensearch.ExceptionsHelper;

import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -39,61 +40,71 @@ public CompositeTranslogEventListener(Collection<TranslogEventListener> listener

@Override
public void onAfterTranslogSync() {
List<Exception> exceptionList = new ArrayList<>(listeners.size());
for (TranslogEventListener listener : listeners) {
try {
listener.onAfterTranslogSync();
} catch (Exception ex) {
logger.warn(() -> new ParameterizedMessage("failed to invoke onTranslogSync listener"), ex);
throw ex;
exceptionList.add(ex);
}
}
ExceptionsHelper.maybeThrowRuntimeAndSuppress(exceptionList);
}

@Override
public void onAfterTranslogRecovery() {
List<Exception> exceptionList = new ArrayList<>(listeners.size());
for (TranslogEventListener listener : listeners) {
try {
listener.onAfterTranslogRecovery();
} catch (Exception ex) {
logger.warn(() -> new ParameterizedMessage("failed to invoke onTranslogRecovery listener"), ex);
throw ex;
exceptionList.add(ex);
}
}
ExceptionsHelper.maybeThrowRuntimeAndSuppress(exceptionList);
}

@Override
public void onBeginTranslogRecovery() {
List<Exception> exceptionList = new ArrayList<>(listeners.size());
for (TranslogEventListener listener : listeners) {
try {
listener.onBeginTranslogRecovery();
} catch (Exception ex) {
logger.warn(() -> new ParameterizedMessage("failed to invoke onBeginTranslogRecovery listener"), ex);
throw ex;
exceptionList.add(ex);
}
}
ExceptionsHelper.maybeThrowRuntimeAndSuppress(exceptionList);
}

@Override
public void onFailure(String reason, Exception e) {
List<Exception> exceptionList = new ArrayList<>(listeners.size());
for (TranslogEventListener listener : listeners) {
try {
listener.onFailure(reason, e);
} catch (Exception ex) {
logger.warn(() -> new ParameterizedMessage("failed to invoke onFailure listener"), ex);
throw ex;
exceptionList.add(ex);
}
}
ExceptionsHelper.maybeThrowRuntimeAndSuppress(exceptionList);
}

@Override
public void onTragicFailure(AlreadyClosedException e) {
List<Exception> exceptionList = new ArrayList<>(listeners.size());
for (TranslogEventListener listener : listeners) {
try {
listener.onTragicFailure(e);
} catch (Exception ex) {
logger.warn(() -> new ParameterizedMessage("failed to invoke onTragicFailure listener"), ex);
throw ex;
exceptionList.add(ex);
}
}
ExceptionsHelper.maybeThrowRuntimeAndSuppress(exceptionList);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -108,18 +108,19 @@ public void onTragicFailure(AlreadyClosedException ex) {
);

final List<TranslogEventListener> translogEventListeners = new LinkedList<>(Arrays.asList(listener, throwingListener, listener));
Collections.shuffle(translogEventListeners, random());
TranslogEventListener compositeListener = new CompositeTranslogEventListener(translogEventListeners);
expectThrows(RuntimeException.class, () -> compositeListener.onAfterTranslogRecovery());
expectThrows(RuntimeException.class, () -> compositeListener.onAfterTranslogSync());
expectThrows(RuntimeException.class, () -> compositeListener.onBeginTranslogRecovery());
expectThrows(RuntimeException.class, () -> compositeListener.onFailure("reason", new RuntimeException("reason")));
expectThrows(RuntimeException.class, () -> compositeListener.onTragicFailure(new AlreadyClosedException("reason")));

assertEquals(1, onBeginTranslogRecoveryInvoked.get());
assertEquals(1, onTranslogRecoveryInvoked.get());
assertEquals(1, onTranslogSyncInvoked.get());
assertEquals(1, onFailureInvoked.get());
assertEquals(1, onTragicFailureInvoked.get());
assertEquals(2, onBeginTranslogRecoveryInvoked.get());
assertEquals(2, onTranslogRecoveryInvoked.get());
assertEquals(2, onTranslogSyncInvoked.get());
assertEquals(2, onFailureInvoked.get());
assertEquals(2, onTragicFailureInvoked.get());

}
}

0 comments on commit 8493976

Please sign in to comment.