Merge branch 'stable-3.1' into stable-3.2 * stable-3.1: Block Fetch Rest API call when instanceLabel is missing Execute refs fetch in batches Add native git fetch support Make sure replication task clean up is triggered Fix issue with replication when replicationDelay is set to zero Change-Id: I7cf52860e28c251bf7d7c36ef9e125305ccdfbf5
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java index e9bb620..8363aee 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/Source.java
@@ -29,6 +29,7 @@ import com.google.gerrit.entities.BranchNameKey; import com.google.gerrit.entities.Project; import com.google.gerrit.entities.RefNames; +import com.google.gerrit.exceptions.StorageException; import com.google.gerrit.extensions.config.FactoryModule; import com.google.gerrit.extensions.registration.DynamicItem; import com.google.gerrit.extensions.restapi.AuthException; @@ -289,19 +290,19 @@ new Callable<Boolean>() { @Override public Boolean call() throws NoSuchProjectException, PermissionBackendException { - ProjectState projectState; + Optional<ProjectState> projectState; try { - projectState = projectCache.checkedGet(project); - } catch (IOException e) { + projectState = projectCache.get(project); + } catch (StorageException e) { return false; } - if (projectState == null) { + if (!projectState.isPresent()) { throw new NoSuchProjectException(project); } - if (!projectState.statePermitsRead()) { + if (!projectState.get().statePermitsRead()) { return false; } - if (!shouldReplicate(projectState, userProvider.get())) { + if (!shouldReplicate(projectState.get(), userProvider.get())) { return false; } if (FetchOne.ALL_REFS.equals(ref)) { @@ -336,16 +337,16 @@ new Callable<Boolean>() { @Override public Boolean call() throws NoSuchProjectException, PermissionBackendException { - ProjectState projectState; + Optional<ProjectState> projectState; try { - projectState = projectCache.checkedGet(project); - } catch (IOException e) { + projectState = projectCache.get(project); + } catch (StorageException e) { return false; } - if (projectState == null) { + if (!projectState.isPresent()) { throw new NoSuchProjectException(project); } - return shouldReplicate(projectState, userProvider.get()); + return shouldReplicate(projectState.get(), userProvider.get()); } }) .call();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchAction.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchAction.java index 6970299..c44bcbc 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchAction.java +++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/FetchAction.java
@@ -84,7 +84,7 @@ | ExecutionException | IllegalStateException | TimeoutException e) { - throw new RestApiException(e.getMessage(), e); + throw RestApiException.wrap(e.getMessage(), e); } catch (RemoteConfigurationMissingException e) { throw new UnprocessableEntityException(e.getMessage()); }