@Override public void onResult(final AsyncConnection connection, final Throwable t) { if (t != null) { connectionSource.release(); } else { killCursorAsynchronouslyAndReleaseConnectionAndSource(connection, localCursor); } } });
@Override public void onResult(final BsonDocument result, final Throwable t) { connection.release(); connectionSource.release(); } });
public SingleResultCallback<T> releaseConnectionAndGetWrapped() { connection.release(); source.release(); return wrapped; } }
@Override public void onResult(final Void result, final Throwable t) { connection.release(); connectionSource.release(); } });
private void killCursor(final AsyncConnection connection) { ServerCursor localCursor = cursor.getAndSet(null); if (localCursor != null) { killCursorAsynchronouslyAndReleaseConnectionAndSource(connection.retain(), localCursor); } else { connectionSource.release(); } }
@Override public void onResult(final AsyncConnection connection, final Throwable t) { source.release(); if (t != null) { callable.call(null, t); } else { callable.call(connection, null); } } });
@Override public void onResult(final T result, final Throwable t) { connection.release(); source.release(); wrapped.onResult(result, t); }
private void checkRetryableException(final Throwable originalError, final SingleResultCallback<R> releasingCallback) { if (!shouldAttemptToRetry(command, originalError)) { if (isRetryWritesEnabled(command)) { logUnableToRetry(command.getFirstKey(), originalError); } releasingCallback.onResult(null, originalError); } else { oldConnection.release(); oldSource.release(); retryableCommand(originalError); } }
private void handleGetMoreQueryResult(final AsyncConnection connection, final SingleResultCallback<List<T>> callback, final QueryResult<T> result, final boolean tryNext) { if (isClosed()) { connection.release(); callback.onResult(null, new MongoException(format("The cursor was closed before %s completed.", tryNext ? "tryNext()" : "next()"))); return; } cursor.getAndSet(result.getCursor()); if (!tryNext && result.getResults().isEmpty() && result.getCursor() != null) { getMore(connection, result.getCursor(), callback, false); } else { count.addAndGet(result.getResults().size()); if (limitReached()) { killCursor(connection); connection.release(); } else { connection.release(); if (result.getCursor() == null) { connectionSource.release(); } } if (result.getResults().isEmpty()) { callback.onResult(null, null); } else { callback.onResult(result.getResults(), null); } } }
@Override public void onResult(final AsyncConnection connection, final Throwable t) { if (t != null) { connectionSource.release(); } else { killCursorAsynchronouslyAndReleaseConnectionAndSource(connection, localCursor); } } });
public SingleResultCallback<T> releaseConnectionAndGetWrapped() { connection.release(); source.release(); return wrapped; } }
@Override public void onResult(final Void result, final Throwable t) { connection.release(); connectionSource.release(); } });
@Override public void onResult(final BsonDocument result, final Throwable t) { connection.release(); connectionSource.release(); } });
private void killCursor(final AsyncConnection connection) { ServerCursor localCursor = cursor.getAndSet(null); if (localCursor != null) { killCursorAsynchronouslyAndReleaseConnectionAndSource(connection.retain(), localCursor); } else { connectionSource.release(); } }
@Override public void onResult(final AsyncConnection connection, final Throwable t) { source.release(); if (t != null) { callable.call(null, t); } else { callable.call(connection, null); } } });
@Override public void onResult(final T result, final Throwable t) { connection.release(); source.release(); wrapped.onResult(result, t); }
private void checkRetryableException(final Throwable originalError, final SingleResultCallback<R> releasingCallback) { if (!shouldAttemptToRetry(command, originalError)) { if (isRetryWritesEnabled(command)) { logUnableToRetry(command.getFirstKey(), originalError); } releasingCallback.onResult(null, originalError); } else { oldConnection.release(); oldSource.release(); retryableCommand(originalError); } }
private void handleGetMoreQueryResult(final AsyncConnection connection, final SingleResultCallback<List<T>> callback, final QueryResult<T> result, final boolean tryNext) { if (isClosed()) { connection.release(); callback.onResult(null, new MongoException(format("The cursor was closed before %s completed.", tryNext ? "tryNext()" : "next()"))); return; } cursor.getAndSet(result.getCursor()); if (!tryNext && result.getResults().isEmpty() && result.getCursor() != null) { getMore(connection, result.getCursor(), callback, false); } else { count.addAndGet(result.getResults().size()); if (limitReached()) { killCursor(connection); connection.release(); } else { connection.release(); if (result.getCursor() == null) { connectionSource.release(); } } if (result.getResults().isEmpty()) { callback.onResult(null, null); } else { callback.onResult(result.getResults(), null); } } }