Fix timeout for repository settings api
This commit is contained in:
		
							parent
							
								
									e000761fac
								
							
						
					
					
						commit
						c4155fb706
					
				@ -29,16 +29,13 @@ import com.google.common.util.concurrent.Futures;
 | 
			
		||||
import com.google.common.util.concurrent.ListenableFuture;
 | 
			
		||||
import com.google.common.util.concurrent.MoreExecutors;
 | 
			
		||||
import io.swagger.v3.oas.annotations.Parameter;
 | 
			
		||||
import io.swagger.v3.oas.annotations.media.Content;
 | 
			
		||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
 | 
			
		||||
import jakarta.servlet.http.Cookie;
 | 
			
		||||
import jakarta.servlet.http.HttpServletRequest;
 | 
			
		||||
import jakarta.servlet.http.HttpServletResponse;
 | 
			
		||||
import lombok.RequiredArgsConstructor;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.context.annotation.Lazy;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.http.HttpStatus;
 | 
			
		||||
import org.springframework.http.MediaType;
 | 
			
		||||
import org.springframework.security.access.prepost.PreAuthorize;
 | 
			
		||||
import org.springframework.web.bind.annotation.GetMapping;
 | 
			
		||||
import org.springframework.web.bind.annotation.PathVariable;
 | 
			
		||||
@ -120,6 +117,9 @@ public class AdminController extends BaseController {
 | 
			
		||||
    private final SystemInfoService systemInfoService;
 | 
			
		||||
    private final AuditLogService auditLogService;
 | 
			
		||||
 | 
			
		||||
    @Value("${queue.vc.request-timeout:180000}")
 | 
			
		||||
    private int vcRequestTimeout;
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "Get the Administration Settings object using key (getAdminSettings)",
 | 
			
		||||
            notes = "Get the Administration Settings object using specified string key. Referencing non-existing key will cause an error." + SYSTEM_AUTHORITY_PARAGRAPH)
 | 
			
		||||
    @PreAuthorize("hasAuthority('SYS_ADMIN')")
 | 
			
		||||
@ -308,7 +308,7 @@ public class AdminController extends BaseController {
 | 
			
		||||
            savedSettings.setPrivateKey(null);
 | 
			
		||||
            savedSettings.setPrivateKeyPassword(null);
 | 
			
		||||
            return savedSettings;
 | 
			
		||||
        }, MoreExecutors.directExecutor()));
 | 
			
		||||
        }, MoreExecutors.directExecutor()), vcRequestTimeout);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "Delete repository settings (deleteRepositorySettings)",
 | 
			
		||||
@ -319,7 +319,7 @@ public class AdminController extends BaseController {
 | 
			
		||||
    @ResponseStatus(value = HttpStatus.OK)
 | 
			
		||||
    public DeferredResult<Void> deleteRepositorySettings() throws Exception {
 | 
			
		||||
        accessControlService.checkPermission(getCurrentUser(), Resource.VERSION_CONTROL, Operation.DELETE);
 | 
			
		||||
        return wrapFuture(versionControlService.deleteVersionControlSettings(getTenantId()));
 | 
			
		||||
        return wrapFuture(versionControlService.deleteVersionControlSettings(getTenantId()), vcRequestTimeout);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "Check repository access (checkRepositoryAccess)",
 | 
			
		||||
@ -331,7 +331,7 @@ public class AdminController extends BaseController {
 | 
			
		||||
            @RequestBody RepositorySettings settings) throws Exception {
 | 
			
		||||
        accessControlService.checkPermission(getCurrentUser(), Resource.VERSION_CONTROL, Operation.READ);
 | 
			
		||||
        settings = checkNotNull(settings);
 | 
			
		||||
        return wrapFuture(versionControlService.checkVersionControlAccess(getTenantId(), settings));
 | 
			
		||||
        return wrapFuture(versionControlService.checkVersionControlAccess(getTenantId(), settings), vcRequestTimeout);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation(value = "Get auto commit settings (getAutoCommitSettings)",
 | 
			
		||||
 | 
			
		||||
@ -119,6 +119,7 @@ public class VersionControlTest extends AbstractControllerTest {
 | 
			
		||||
    protected User tenantAdmin2;
 | 
			
		||||
 | 
			
		||||
    private String repoKey;
 | 
			
		||||
    private String branch;
 | 
			
		||||
 | 
			
		||||
    @Before
 | 
			
		||||
    public void beforeEach() throws Exception {
 | 
			
		||||
@ -146,6 +147,7 @@ public class VersionControlTest extends AbstractControllerTest {
 | 
			
		||||
        this.tenantAdmin2 = createUser(tenantAdmin2, tenantAdmin2.getEmail());
 | 
			
		||||
 | 
			
		||||
        this.repoKey = UUID.randomUUID().toString();
 | 
			
		||||
        this.branch = "test_" + repoKey;
 | 
			
		||||
        configureRepository(tenantId1);
 | 
			
		||||
        configureRepository(tenantId2);
 | 
			
		||||
 | 
			
		||||
@ -618,7 +620,7 @@ public class VersionControlTest extends AbstractControllerTest {
 | 
			
		||||
    private String createVersion(String name, EntityType... entityTypes) throws Exception {
 | 
			
		||||
        ComplexVersionCreateRequest request = new ComplexVersionCreateRequest();
 | 
			
		||||
        request.setVersionName(name);
 | 
			
		||||
        request.setBranch("test");
 | 
			
		||||
        request.setBranch(branch);
 | 
			
		||||
        request.setSyncStrategy(SyncStrategy.MERGE);
 | 
			
		||||
        request.setEntityTypes(Arrays.stream(entityTypes).collect(Collectors.toMap(t -> t, entityType -> {
 | 
			
		||||
            EntityTypeVersionCreateConfig config = new EntityTypeVersionCreateConfig();
 | 
			
		||||
@ -645,7 +647,7 @@ public class VersionControlTest extends AbstractControllerTest {
 | 
			
		||||
    private String createVersion(String name, EntityId... entities) throws Exception {
 | 
			
		||||
        ComplexVersionCreateRequest request = new ComplexVersionCreateRequest();
 | 
			
		||||
        request.setVersionName(name);
 | 
			
		||||
        request.setBranch("test");
 | 
			
		||||
        request.setBranch(branch);
 | 
			
		||||
        request.setSyncStrategy(SyncStrategy.MERGE);
 | 
			
		||||
        request.setEntityTypes(new HashMap<>());
 | 
			
		||||
        Map<EntityType, List<EntityId>> entitiesByType = Arrays.stream(entities)
 | 
			
		||||
@ -677,11 +679,13 @@ public class VersionControlTest extends AbstractControllerTest {
 | 
			
		||||
        return result.getVersion().getId();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Map<EntityType, EntityTypeLoadResult> loadVersion(String versionId, EntityType... entityTypes) {
 | 
			
		||||
    private Map<EntityType, EntityTypeLoadResult> loadVersion(String versionId, EntityType... entityTypes) throws Exception {
 | 
			
		||||
        return loadVersion(versionId, config -> {}, entityTypes);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Map<EntityType, EntityTypeLoadResult> loadVersion(String versionId, Consumer<EntityTypeVersionLoadConfig> configModifier, EntityType... entityTypes) {
 | 
			
		||||
    private Map<EntityType, EntityTypeLoadResult> loadVersion(String versionId, Consumer<EntityTypeVersionLoadConfig> configModifier, EntityType... entityTypes) throws Exception {
 | 
			
		||||
        assertThat(listVersions()).extracting(EntityVersion::getId).contains(versionId);
 | 
			
		||||
 | 
			
		||||
        EntityTypeVersionLoadRequest request = new EntityTypeVersionLoadRequest();
 | 
			
		||||
        request.setVersionId(versionId);
 | 
			
		||||
        request.setRollbackOnError(true);
 | 
			
		||||
@ -698,17 +702,14 @@ public class VersionControlTest extends AbstractControllerTest {
 | 
			
		||||
 | 
			
		||||
        UUID requestId = doPost("/api/entities/vc/entity", request, UUID.class);
 | 
			
		||||
        VersionLoadResult result = await().atMost(30, TimeUnit.SECONDS)
 | 
			
		||||
                .until(() -> doGet("/api/entities/vc/entity/" + requestId + "/status", VersionLoadResult.class), r -> {
 | 
			
		||||
                    if (r.getError() != null) {
 | 
			
		||||
                        throw new RuntimeException("Failed to load version: " + r.getError());
 | 
			
		||||
                    }
 | 
			
		||||
                    return r.isDone();
 | 
			
		||||
                });
 | 
			
		||||
                .until(() -> doGet("/api/entities/vc/entity/" + requestId + "/status", VersionLoadResult.class), VersionLoadResult::isDone);
 | 
			
		||||
        if (result.getError() != null) {
 | 
			
		||||
            throw new RuntimeException("Failed to load version: " + result);
 | 
			
		||||
        }
 | 
			
		||||
        return result.getResult().stream().collect(Collectors.toMap(EntityTypeLoadResult::getEntityType, r -> r));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private List<EntityVersion> listVersions() throws Exception {
 | 
			
		||||
        String branch = "test";
 | 
			
		||||
        PageData<EntityVersion> versions = doGetAsyncTyped("/api/entities/vc/version?branch=" + branch + "&pageSize=100&page=0&sortProperty=timestamp&sortOrder=DESC", new TypeReference<PageData<EntityVersion>>() {});
 | 
			
		||||
        return versions.getData();
 | 
			
		||||
    }
 | 
			
		||||
@ -716,7 +717,7 @@ public class VersionControlTest extends AbstractControllerTest {
 | 
			
		||||
    private void configureRepository(TenantId tenantId) throws Exception {
 | 
			
		||||
        RepositorySettings repositorySettings = new RepositorySettings();
 | 
			
		||||
        repositorySettings.setLocalOnly(true);
 | 
			
		||||
        repositorySettings.setDefaultBranch("test");
 | 
			
		||||
        repositorySettings.setDefaultBranch(branch);
 | 
			
		||||
        repositorySettings.setAuthMethod(RepositoryAuthMethod.USERNAME_PASSWORD);
 | 
			
		||||
        repositorySettings.setRepositoryUri(repoKey);
 | 
			
		||||
        versionControlService.saveVersionControlSettings(tenantId, repositorySettings).get();
 | 
			
		||||
 | 
			
		||||
@ -81,8 +81,6 @@ public class DefaultGitRepositoryService implements GitRepositoryService {
 | 
			
		||||
        GitRepository repository = checkRepository(commit.getTenantId());
 | 
			
		||||
        String branch = commit.getBranch();
 | 
			
		||||
        try {
 | 
			
		||||
            repository.fetch();
 | 
			
		||||
 | 
			
		||||
            List<String> branches = repository.listBranches().stream().map(BranchInfo::getName).toList();
 | 
			
		||||
            if (repository.getSettings().isLocalOnly()) {
 | 
			
		||||
                if (branches.contains(commit.getBranch())) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user