Details
-
Bug
-
Resolution: Fixed
-
Medium
-
9.0.1
-
None
-
0
-
Severity 2 - Major
-
Description
Problem
This is reproducible in Data Center:
DelayedDeletionThread tries to delete Artifacts from S3 even if that artifact handler is disabled.
Environment
Bamboo 8.2, 9.0, 9.1
Steps to Reproduce
- Configure an S3 artifact handler and run some builds to upload artifacts to it
- Unset the S3 artifact handler
- Remove or expire the S3 Access keys/credentials
- Delete the Plan/Plan branch that has the artifacts
- Observe <bamboo-home>/logs/atlassian-bamboo.log for the DelayedDeletionThread messages
Expected Results
Bamboo should not connect to S3 if the S3 artifact handler is not enabled
Actual Results
Bamboo tries to connect to the S3 bucket and fails (because we had expired the previous Access keys). It should not even try to connect.
2022-11-21 17:47:45,587 INFO [https-jsse-nio-45910-exec-23] [ImmutablePlanCacheServiceImpl] Invalidating PROJ-PLAN0 2022-11-21 17:48:02,488 INFO [https-jsse-nio-45910-exec-17] [DeprecatedIdNameAttribute] The use of 'id' deprecated. Use 'var' instead. Params: {} 2022-11-21 17:48:06,129 INFO [https-jsse-nio-45910-exec-28] [DeletionServiceImpl] Stopping any running builds for PROJ-PLAN0 2022-11-21 17:48:06,130 INFO [https-jsse-nio-45910-exec-28] [DeletionServiceImpl] Scheduling plan [PROJ-PLAN0] for deletion 2022-11-21 17:48:06,134 INFO [https-jsse-nio-45910-exec-28] [DeletionServiceImpl] Stopping any running builds for PROJ-PLAN0-JOB1 2022-11-21 17:48:38,032 INFO [DelayedDeletionThread] [DeletionServiceHelper] Deleting 1 TopLevelPlan(s) and/or ChainBranch(es) marked for deletion 2022-11-21 17:48:38,033 INFO [DelayedDeletionThread] [DeletionServiceHelper] Deleting PROJ-PLAN0 2022-11-21 17:48:45,083 ERROR [DelayedDeletionThread] [BambooPluginUtils] class com.atlassian.bamboo.build.artifact.S3ArtifactHandler was unable to delete artifacts for PROJ-PLAN0 com.amazonaws.services.s3.model.AmazonS3Exception: The specified bucket does not exist (Service: Amazon S3; Status Code: 404; Error Code: NoSuchBucket; Request ID: WY1H8531ERVS55AH; S3 Extended Request ID: z67UAXZ8V28qwjVwXCnmVjNbMawODj82/4sT1Jrr/6WwdH97NdC8PX3uIoiJ/gQbkvs+zgNPG1M=; Proxy: proxy.osalva.net) at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1862) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleServiceErrorResponse(AmazonHttpClient.java:1415) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1384) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1154) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:811) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:779) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:753) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:713) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:695) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:559) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:539) ~[aws-java-sdk-core-1.12.153.jar:?] at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5453) ~[aws-java-sdk-s3-1.12.153.jar:?] at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5400) ~[aws-java-sdk-s3-1.12.153.jar:?] at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:5394) ~[aws-java-sdk-s3-1.12.153.jar:?] at com.amazonaws.services.s3.AmazonS3Client.listObjects(AmazonS3Client.java:928) ~[aws-java-sdk-s3-1.12.153.jar:?] at com.atlassian.aws.utils.FullListObjectsResult$ContinuousObjectListing.getS3ObjectSummaries(FullListObjectsResult.java:121) ~[atlassian-aws-1.0.187.jar:?] at com.atlassian.bamboo.build.artifact.S3ArtifactHandler.deleteRecursively(S3ArtifactHandler.java:515) ~[atlassian-bamboo-agent-remote-9.1.0-rc2.jar:?] at com.atlassian.bamboo.build.artifact.S3ArtifactHandler.removeArtifactsFromStorage(S3ArtifactHandler.java:508) ~[atlassian-bamboo-agent-remote-9.1.0-rc2.jar:?] at com.atlassian.bamboo.build.artifact.AbstractArtifactManager$6.run(AbstractArtifactManager.java:518) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.plugin.BambooPluginUtils$Runnable.call(BambooPluginUtils.java:108) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.plugin.BambooPluginUtils$Runnable.call(BambooPluginUtils.java:101) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.plugin.BambooPluginUtils.callUnsafeCode(BambooPluginUtils.java:55) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.build.artifact.AbstractArtifactManager.removeArtifactsFromStorage(AbstractArtifactManager.java:515) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.build.artifact.LocalArtifactManager.removeArtifactsFromStorage(LocalArtifactManager.java:66) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.deletion.DeletionServiceHelper.doDeletePlan(DeletionServiceHelper.java:250) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.deletion.DeletionServiceHelper.doDeletePlans(DeletionServiceHelper.java:217) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.deletion.DeletionServiceHelper.executeDelayedDeletionInternal(DeletionServiceHelper.java:188) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.deletion.DeletionServiceHelper.executeDelayedDeletion(DeletionServiceHelper.java:126) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at com.atlassian.bamboo.deletion.DeletionServiceImpl.executeDelayedDeletion(DeletionServiceImpl.java:468) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at jdk.internal.reflect.GeneratedMethodAccessor493.invoke(Unknown Source) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?] at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.23.jar:5.3.23] at com.atlassian.bamboo.security.acegi.intercept.aopalliance.AuthorityOverrideMethodSecurityInterceptor.invoke(AuthorityOverrideMethodSecurityInterceptor.java:22) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5.3.23.jar:5.3.23] at com.sun.proxy.$Proxy344.executeDelayedDeletion(Unknown Source) ~[?:?] at com.atlassian.bamboo.deletion.DeletionServiceJob.execute(DeletionServiceJob.java:16) ~[atlassian-bamboo-core-9.1.0-rc2.jar:?] at org.quartz.core.JobRunShell.run(JobRunShell.java:202) ~[quartz-2.3.2.jar:?] at com.atlassian.bamboo.utils.BambooRunnables$1.run(BambooRunnables.java:48) ~[atlassian-bamboo-api-9.1.0-rc2.jar:?] at com.atlassian.bamboo.security.ImpersonationHelper.runWith(ImpersonationHelper.java:26) ~[atlassian-bamboo-api-9.1.0-rc2.jar:?] at com.atlassian.bamboo.security.ImpersonationHelper.runWithSystemAuthority(ImpersonationHelper.java:17) ~[atlassian-bamboo-api-9.1.0-rc2.jar:?] at com.atlassian.bamboo.security.ImpersonationHelper$1.run(ImpersonationHelper.java:41) ~[atlassian-bamboo-api-9.1.0-rc2.jar:?] at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) ~[quartz-2.3.2.jar:?]
Workaround
Set bucket name in S3 Artifact Handler config to an empty string