diff --git a/google-cloud-clients/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingImpl.java b/google-cloud-clients/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingImpl.java index 7c572af069b5..32cc296f29d9 100644 --- a/google-cloud-clients/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingImpl.java +++ b/google-cloud-clients/google-cloud-logging/src/main/java/com/google/cloud/logging/LoggingImpl.java @@ -37,6 +37,7 @@ import com.google.cloud.MonitoredResourceDescriptor; import com.google.cloud.PageImpl; import com.google.cloud.logging.spi.v2.LoggingRpc; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; @@ -595,6 +596,9 @@ private void writeLogEntries(Iterable logEntries, WriteOption... write case ASYNC: default: final ApiFuture writeFuture = writeAsync(logEntries, writeOptions); + synchronized (writeLock) { + pendingWrites.add(writeFuture); + } ApiFutures.addCallback( writeFuture, new ApiFutureCallback() { @@ -619,9 +623,6 @@ public void onFailure(Throwable t) { } } }); - synchronized (writeLock) { - pendingWrites.add(writeFuture); - } break; } } @@ -707,4 +708,11 @@ public void close() throws Exception { } return optionMap; } + + @VisibleForTesting + int getNumPendingWrites() { + synchronized (writeLock) { + return pendingWrites.size(); + } + } } diff --git a/google-cloud-clients/google-cloud-logging/src/test/java/com/google/cloud/logging/LoggingImplTest.java b/google-cloud-clients/google-cloud-logging/src/test/java/com/google/cloud/logging/LoggingImplTest.java index 7c711cd44a78..55f231a320e1 100644 --- a/google-cloud-clients/google-cloud-logging/src/test/java/com/google/cloud/logging/LoggingImplTest.java +++ b/google-cloud-clients/google-cloud-logging/src/test/java/com/google/cloud/logging/LoggingImplTest.java @@ -1186,6 +1186,7 @@ public void testWriteLogEntries() { EasyMock.replay(rpcFactoryMock, loggingRpcMock); logging = options.getService(); logging.write(ImmutableList.of(LOG_ENTRY1, LOG_ENTRY2)); + assertEquals(0, ((LoggingImpl) logging).getNumPendingWrites()); } @Test