-
Bug
-
Resolution: Fixed
-
Medium
-
9.6.3, 9.6.10, 10.2.3, 9.6.11
-
None
-
3
-
Severity 2 - Major
-
4
-
Issue Summary
When plans refer to Linked/Project repositories and the linked repository is deleted, entries from the ACL tables( acl_object_identity,acl_entry) will be deleted but not from the plan_vcs_history table. The repository is still shown in the plan configuration > Repositories tab. When we access those by clicking on Linked repositories/Project repositories, this issue occurs and throws this error: "Could not find ACL."
1.
2.
3.
Steps to Reproduce
- Create a Linked/Project repository
- Create a plan with the above created repository
- Delete the linked repository now and wait for some time so that it gets deleted.
- Access the repository from the Plan configuration > Repositories tab
Expected Results
Bamboo will not remove the repositories under the plan configuration because of having build results with commits linked to that repository. This is expected behaviour.
However, Bamboo should handle this in a pleasant way when users access the repositories tab under plan configuration and shouldn't throw an error like "Could not find ACL."
Actual Results
Bamboo allows users to access the deleted/inactive linked/project repositories even though they are marked_for_deltion as true in vcs_location table and throws below error when we click on the linked/project repositories link:
The below exception is thrown in the atlassian-bamboo.log file:
2025-04-03 13:41:45,734 WARN [http-nio-8085-exec-579] [BambooRuntimeExceptionMapper] Unexpected error from REST call org.acegisecurity.acls.NotFoundException: Could not find ACL at com.atlassian.bamboo.security.acegi.acls.HibernateMutableAclServiceImpl.readMutableAclById(HibernateMutableAclServiceImpl.java:183) ~[atlassian-bamboo-core-9.6.7.jar:?] at jdk.internal.reflect.GeneratedMethodAccessor4361.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.39-atlassian-1.jar:5.3.39-atlassian-1] at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.39-atlassian-1.jar:5.3.39-atlassian-1] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.39-atlassian-1.jar:5.3.39-atlassian-1] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.39-atlassian-1.jar:5.3.39-atlassian-1] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.39-atlassian-1.jar:5.3.39-atlassian-1] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.39-atlassian-1.jar:5.3.39-atlassian-1] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.39-atlassian-1.jar:5.3.39-atlassian-1] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:241) ~[spring-aop-5.3.39-atlassian-1.jar:5.3.39-atlassian-1] at com.sun.proxy.$Proxy175.readMutableAclById(Unknown Source) ~[?:?] at com.atlassian.bamboo.repository.DefaultRepositoryPermissionsService.getAclForRepository(DefaultRepositoryPermissionsService.java:87) ~[atlassian-bamboo-core-9.6.7.jar:?] at com.atlassian.bamboo.repository.DefaultRepositoryPermissionsService.listGroupsWithPermissionsForRepository(DefaultRepositoryPermissionsService.java:154) ~[atlassian-bamboo-core-9.6.7.jar:?] at jdk.internal.reflect.GeneratedMethodAccessor6607.invoke(Unknown Source) ~[?:?] at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?] ........
Workaround
As of now, the workaround is to remove any references to the deleted repository from the Plans and create a new linked repository with the same configuration in case you want that repository in the plan.
Or else delete the repositories under plan configuration if you dont require those repositories in the plan anymore.
Reach out to Atlassian support in case of any doubts on how to perform this action for detailed steps.