-
Bug
-
Resolution: Fixed
-
Medium
-
8.2.3
-
None
-
1
-
Severity 2 - Major
-
Issue Summary
Deleting a deployment environment that has an agent dedication causes org.acegisecurity.acls.NotFoundException: Could not find ACL for HibernateObjectIdentityImpl{Java Type=interface com.atlassian.bamboo.deployments.environments.InternalEnvironment on the deployment dashboard.
This is reproducible on Data Center: yes
Steps to Reproduce
- Create a deployment project and deployment environment
- Dedicate an agent to the deployment environment
- Grant view and edit permissions to both the deployment project and environment to a non-admin user
- Login as that non-admin user
- Delete the environment
- Load the deployment dashboard
Expected Results
Deployment dashboard loads
Actual Results
Deployment dashboard does not load and presents the below error in both the UI and $BAMBOO_HOME/atlassian-bamboo.log
2022-07-08 14:09:16,236 WARN [http-nio-8085-exec-23 url: /bamboo/rest/api/latest/deploy/dashboard/paginate; user: depperm] [BambooRuntimeExceptionMapper] Unexpected error from REST call
com.google.common.util.concurrent.UncheckedExecutionException: org.acegisecurity.acls.NotFoundException: Could not find ACL for HibernateObjectIdentityImpl{Java Type=interface com.atlassian.bamboo.deployments.environments.InternalEnvironment, Identifier=84410388}
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2055)
at com.google.common.cache.LocalCache.get(LocalCache.java:3966)
at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3989)
at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4950)
at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4956)
at com.atlassian.bamboo.security.BambooCachingPermissionManagerFacadeImpl$BambooCachingPermissionManager.readAclById(BambooCachingPermissionManagerFacadeImpl.java:47)
at com.atlassian.bamboo.security.BambooPermissionManagerImpl.hasPermission(BambooPermissionManagerImpl.java:458)
at com.atlassian.bamboo.security.BambooPermissionManagerImpl.hasPermission(BambooPermissionManagerImpl.java:436)
at com.atlassian.bamboo.security.BambooPermissionManagerImpl.hasPermission(BambooPermissionManagerImpl.java:131)
at com.atlassian.bamboo.security.BambooCachingPermissionManagerFacadeImpl.hasPermission(BambooCachingPermissionManagerFacadeImpl.java:87)
at com.atlassian.bamboo.deployments.projects.service.DeploymentProjectServiceImpl.lambda$getPaginatedDeploymentsWithEnvironments$6(DeploymentProjectServiceImpl.java:1194)
at com.atlassian.bamboo.utils.PaginatedDataCollectorImpl$LimitedCumulatedPredicate.test(PaginatedDataCollectorImpl.java:71)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
at com.atlassian.bamboo.utils.PaginatedDataCollectorImpl.collect(PaginatedDataCollectorImpl.java:35)
at com.atlassian.bamboo.deployments.projects.service.DeploymentProjectServiceImpl.getPaginatedDeploymentsWithEnvironments(DeploymentProjectServiceImpl.java:1197)
...
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1647)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.acegisecurity.acls.NotFoundException: Could not find ACL for HibernateObjectIdentityImpl{Java Type=interface com.atlassian.bamboo.deployments.environments.InternalEnvironment, Identifier=84410388}
at com.atlassian.bamboo.security.acegi.acls.HibernateMutableAclServiceImpl.readAclById(HibernateMutableAclServiceImpl.java:81)
at com.atlassian.bamboo.security.acegi.acls.HibernateMutableAclServiceImpl.readAclById(HibernateMutableAclServiceImpl.java:72)
at jdk.internal.reflect.GeneratedMethodAccessor992.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
at com.sun.proxy.$Proxy139.readAclById(Unknown Source)
at com.atlassian.bamboo.security.BambooPermissionManagerImpl.readAclById(BambooPermissionManagerImpl.java:196)
at com.atlassian.bamboo.security.BambooCachingPermissionManagerFacadeImpl$BambooCachingPermissionManager.access$101(BambooCachingPermissionManagerFacadeImpl.java:37)
at com.atlassian.bamboo.security.BambooCachingPermissionManagerFacadeImpl$BambooCachingPermissionManager$1.load(BambooCachingPermissionManagerFacadeImpl.java:41)
at com.atlassian.bamboo.security.BambooCachingPermissionManagerFacadeImpl$BambooCachingPermissionManager$1.load(BambooCachingPermissionManagerFacadeImpl.java:38)
at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3533)
at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2282)
at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2159)
at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2049)
... 293 more
Workarounds
Option 1
As a Bamboo admin, visit $BAMBOO_BASE_URL/deploy/config/configureEnvironmentPermissions.action?environmentId=$ID replacing the $ID with the Identifier from the error message.
E.g.
org.acegisecurity.acls.NotFoundException: Could not find ACL for HibernateObjectIdentityImpl{Java Type=interface com.atlassian.bamboo.deployments.environments.InternalEnvironment, Identifier=84410388}
Becomes: $BAMBOO_BASE_URL/deploy/config/configureEnvironmentPermissions.action?environmentId=84410388
Toggle any permission on this screen to restore the permission cache to a working condition. For example, remove the edit permission for any user and add it back.
Option 2
Alternatively, if you no longer need the deployment environment, you can have a Bamboo administrator permanently delete the deployment environment that caused the problem.
Option 3
For audit purposes, if a user (not an Admin) must delete the deployment environment, ask a Bamboo administrator to remove the Agent dedication configuration from the Environment and to run the steps listed on Option 1 to refresh the cache, then the user can safely remove the deployment environment.
Option 4
Restart Bamboo Server to restore the Deployment dashboard view. If the deployment environment is expected to be deleted, please follow Option 2 or Option 3.