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