in src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java [264:304]
private void callSendObject(
Source source,
Project.NameKey project,
String refName,
boolean isDelete,
RevisionData revision,
ReplicationState state)
throws MissingParentObjectException {
if (source.wouldFetchProject(project) && source.wouldFetchRef(refName)) {
for (String apiUrl : source.getApis()) {
try {
URIish uri = new URIish(apiUrl);
FetchRestApiClient fetchClient = fetchClientFactory.create(source);
HttpResult result = fetchClient.callSendObject(project, refName, isDelete, revision, uri);
if (isProjectMissing(result, project) && source.isCreateMissingRepositories()) {
result = initProject(project, uri, fetchClient, result);
}
if (!result.isSuccessful()) {
repLog.warn(
String.format(
"Pull replication rest api apply object call failed. Endpoint url: %s, reason:%s",
apiUrl, result.getMessage().orElse("unknown")));
if (result.isParentObjectMissing()) {
throw new MissingParentObjectException(
project, refName, source.getRemoteConfigName());
}
}
} catch (URISyntaxException e) {
stateLog.error(String.format("Cannot parse pull replication api url:%s", apiUrl), state);
} catch (IOException e) {
stateLog.error(
String.format(
"Exception during the pull replication fetch rest api call. Endpoint url:%s, message:%s",
apiUrl, e.getMessage()),
e,
state);
}
}
}
}