Fix "Future is already done" error in VC
This commit is contained in:
		
							parent
							
								
									7310c62e4d
								
							
						
					
					
						commit
						55729bf3ff
					
				@ -301,7 +301,7 @@ public class AdminController extends BaseController {
 | 
			
		||||
    @PostMapping("/repositorySettings")
 | 
			
		||||
    public DeferredResult<RepositorySettings> saveRepositorySettings(@RequestBody RepositorySettings settings) throws ThingsboardException {
 | 
			
		||||
        accessControlService.checkPermission(getCurrentUser(), Resource.VERSION_CONTROL, Operation.WRITE);
 | 
			
		||||
        settings.setLocalOnly(false); // overriding, since local repositories are supported only for testing
 | 
			
		||||
        settings.setLocalOnly(false); // only to be used in tests
 | 
			
		||||
        ListenableFuture<RepositorySettings> future = versionControlService.saveVersionControlSettings(getTenantId(), settings);
 | 
			
		||||
        return wrapFuture(Futures.transform(future, savedSettings -> {
 | 
			
		||||
            savedSettings.setPassword(null);
 | 
			
		||||
@ -330,7 +330,7 @@ public class AdminController extends BaseController {
 | 
			
		||||
            @Parameter(description = "A JSON value representing the Repository Settings.")
 | 
			
		||||
            @RequestBody RepositorySettings settings) throws Exception {
 | 
			
		||||
        accessControlService.checkPermission(getCurrentUser(), Resource.VERSION_CONTROL, Operation.READ);
 | 
			
		||||
        settings = checkNotNull(settings);
 | 
			
		||||
        settings.setLocalOnly(false); // only to be used in tests
 | 
			
		||||
        return wrapFuture(versionControlService.checkVersionControlAccess(getTenantId(), settings), vcRequestTimeout);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -483,4 +483,5 @@ public class AdminController extends BaseController {
 | 
			
		||||
        adminSettingsService.saveAdminSettings(TenantId.SYS_TENANT_ID, adminSettings);
 | 
			
		||||
        response.sendRedirect(prevUri);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -21,6 +21,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 | 
			
		||||
import com.google.common.util.concurrent.SettableFuture;
 | 
			
		||||
import lombok.SneakyThrows;
 | 
			
		||||
import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.apache.commons.lang3.exception.ExceptionUtils;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Value;
 | 
			
		||||
import org.springframework.context.annotation.Lazy;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
@ -311,7 +312,13 @@ public class DefaultGitVersionControlQueueService implements GitVersionControlQu
 | 
			
		||||
            }
 | 
			
		||||
            return submitFuture;
 | 
			
		||||
        } else {
 | 
			
		||||
            throw new RuntimeException("Future is already done!");
 | 
			
		||||
            try {
 | 
			
		||||
                request.getFuture().get();
 | 
			
		||||
                throw new RuntimeException("Failed to process the request");
 | 
			
		||||
            } catch (Exception e) {
 | 
			
		||||
                Throwable cause = ExceptionUtils.getRootCause(e);
 | 
			
		||||
                throw new RuntimeException(cause.getMessage(), cause);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -562,5 +569,6 @@ public class DefaultGitVersionControlQueueService implements GitVersionControlQu
 | 
			
		||||
    private CommitRequestMsg.Builder buildCommitRequest(CommitGitRequest commit) {
 | 
			
		||||
        return CommitRequestMsg.newBuilder().setTxId(commit.getTxId().toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user