DBService implements RolesProvider { boolean shouldRetryOperation(ResourceException ex, int retryCount) { if (retryCount <= 1) { return false; } boolean retry = false; switch (ex.getCode()) { case ResourceException.CONFLICT: retry = true; break; case ResourceException.GONE: store.clearConnections(); retry = true; break; } if (retry) { if (LOG.isDebugEnabled()) { LOG.debug(": possible deadlock, retries available: " + retryCount); } ZMSUtils.threadSleep(retrySleepTime); } return retry; } DBService(ObjectStore store, AuditLogger auditLogger, ZMSConfig zmsConfig, AuditReferenceValidator auditReferenceValidator); DomainRoleMembers listOverdueReviewRoleMembers(String domainName); @Override List<Role> getRolesByDomain(String domain); ResourceAccessList getResourceAccessList(String principal, String action); AthenzDomain getAthenzDomain(final String domainName, boolean masterCopy); Quota getQuota(String domainName); void executePutRoleSystemMeta(ResourceContext ctx, final String domainName, final String roleName,
           RoleSystemMeta meta, final String attribute, final String auditRef, final String caller); void executePutGroupSystemMeta(ResourceContext ctx, final String domainName, final String groupName,
                                          GroupSystemMeta meta, final String attribute, final String auditRef); void executePutServiceIdentitySystemMeta(ResourceContext ctx, String domainName, String serviceName,
            ServiceIdentitySystemMeta meta, String attribute, String auditRef, String caller); void executePutRoleMeta(ResourceContext ctx, String domainName, String roleName, Role originalRole,
                                   RoleMeta meta, String auditRef, String caller); void executePutGroupMeta(ResourceContext ctx, final String domainName, final String groupName,
                                    GroupMeta meta, final String auditRef); Set<String> getPendingMembershipApproverRoles(int delayDays); Set<String> getPendingGroupMembershipApproverRoles(int delayDays); Map<String, DomainRoleMember> getRoleExpiryMembers(int delayDays); Map<String, DomainRoleMember> getRoleReviewMembers(int delayDays); Map<String, DomainGroupMember> getGroupExpiryMembers(int delayDays); void processExpiredPendingMembers(int pendingRoleMemberLifespan, final String monitorIdentity); void processExpiredPendingGroupMembers(int pendingGroupMemberLifespan, final String monitorIdentity); static int AUDIT_TYPE_ROLE; static int AUDIT_TYPE_POLICY; static int AUDIT_TYPE_SERVICE; static int AUDIT_TYPE_DOMAIN; static int AUDIT_TYPE_ENTITY; static int AUDIT_TYPE_TENANCY; static int AUDIT_TYPE_TEMPLATE; static int AUDIT_TYPE_GROUP; }
@Test public void testShouldRetryOperation() { ZMSConfig zmsConfig = new ZMSConfig(); zmsConfig.setUserDomain("user"); DBService dbService = new DBService(mockObjStore, null, zmsConfig, null); assertFalse(dbService.shouldRetryOperation(null, 0)); assertFalse(dbService.shouldRetryOperation(null, 1)); ResourceException exc = new ResourceException(ResourceException.CONFLICT, "unit-test"); assertTrue(dbService.shouldRetryOperation(exc, 2)); exc = new ResourceException(ResourceException.GONE, "unit-test"); assertTrue(dbService.shouldRetryOperation(exc, 2)); exc = new ResourceException(ResourceException.BAD_REQUEST, "unit-test"); assertFalse(dbService.shouldRetryOperation(exc, 2)); exc = new ResourceException(ResourceException.FORBIDDEN, "unit-test"); assertFalse(dbService.shouldRetryOperation(exc, 2)); exc = new ResourceException(ResourceException.INTERNAL_SERVER_ERROR, "unit-test"); assertFalse(dbService.shouldRetryOperation(exc, 2)); exc = new ResourceException(ResourceException.NOT_FOUND, "unit-test"); assertFalse(dbService.shouldRetryOperation(exc, 2)); }