Skip to content

Commit e6007d5

Browse files
authored
fix: cancel the future in RemoteStorageHelper#forceDelete when TimeoutException happens (#3136)
1 parent 22e72e9 commit e6007d5

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

google-cloud-storage/src/main/java/com/google/cloud/storage/testing/RemoteStorageHelper.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.google.cloud.storage.StorageException;
3131
import com.google.cloud.storage.StorageOptions;
3232
import com.google.common.base.Strings;
33+
import com.google.common.util.concurrent.ThreadFactoryBuilder;
3334
import java.io.IOException;
3435
import java.io.InputStream;
3536
import java.time.Duration;
@@ -41,6 +42,7 @@
4142
import java.util.concurrent.ExecutorService;
4243
import java.util.concurrent.Executors;
4344
import java.util.concurrent.Future;
45+
import java.util.concurrent.ThreadFactory;
4446
import java.util.concurrent.TimeUnit;
4547
import java.util.concurrent.TimeoutException;
4648
import java.util.logging.Level;
@@ -153,11 +155,14 @@ public static Boolean forceDelete(Storage storage, String bucket, long timeout,
153155
public static Boolean forceDelete(
154156
Storage storage, String bucket, long timeout, TimeUnit unit, String userProject)
155157
throws InterruptedException, ExecutionException {
156-
ExecutorService executor = Executors.newSingleThreadExecutor();
158+
ThreadFactory threadFactory =
159+
new ThreadFactoryBuilder().setDaemon(true).setNameFormat("forceDelete-%s").build();
160+
ExecutorService executor = Executors.newSingleThreadExecutor(threadFactory);
157161
Future<Boolean> future = executor.submit(new DeleteBucketTask(storage, bucket, userProject));
158162
try {
159163
return future.get(timeout, unit);
160164
} catch (TimeoutException ex) {
165+
future.cancel(true);
161166
return false;
162167
} finally {
163168
executor.shutdown();

0 commit comments

Comments
 (0)