Skip to content

Commit

Permalink
Fix assertion at end of forceRefreshes (#37559)
Browse files Browse the repository at this point in the history
This commit ensures that we only change refreshListeners to a list if we're actually adding
something to the list.
  • Loading branch information
ywelsch committed Jan 17, 2019
1 parent 855801a commit fc4a1d9
Showing 1 changed file with 9 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -129,24 +129,25 @@ public boolean addOrNotify(Translog.Location location, Consumer<Boolean> listene
return true;
}
synchronized (this) {
List<Tuple<Translog.Location, Consumer<Boolean>>> listeners = refreshListeners;
if (listeners == null) {
if (closed) {
throw new IllegalStateException("can't wait for refresh on a closed index");
}
listeners = new ArrayList<>();
refreshListeners = listeners;
if (closed) {
throw new IllegalStateException("can't wait for refresh on a closed index");
}
if (refreshForcers == 0 && listeners.size() < getMaxRefreshListeners.getAsInt()) {
List<Tuple<Translog.Location, Consumer<Boolean>>> listeners = refreshListeners;
final int maxRefreshes = getMaxRefreshListeners.getAsInt();
if (refreshForcers == 0 && maxRefreshes > 0 && (listeners == null || listeners.size() < maxRefreshes)) {
ThreadContext.StoredContext storedContext = threadContext.newStoredContext(true);
Consumer<Boolean> contextPreservingListener = forced -> {
try (ThreadContext.StoredContext ignore = threadContext.stashContext()) {
storedContext.restore();
listener.accept(forced);
}
};
if (listeners == null) {
listeners = new ArrayList<>();
}
// We have a free slot so register the listener
listeners.add(new Tuple<>(location, contextPreservingListener));
refreshListeners = listeners;
return false;
}
}
Expand Down

0 comments on commit fc4a1d9

Please sign in to comment.