Merge "Add event creation time to the apply object payload" into stable-3.4
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java
index c7a44d0..e99580a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueue.java
@@ -170,6 +170,7 @@
event.refUpdate.get().project,
ObjectId.fromString(event.refUpdate.get().newRev),
event.getRefName(),
+ event.eventCreatedOn,
ZEROS_OBJECTID.equals(event.refUpdate.get().newRev));
}
}
@@ -199,16 +200,22 @@
return !refsFilter.match(refName);
}
- private void fire(String projectName, ObjectId objectId, String refName, boolean isDelete) {
+ private void fire(
+ String projectName,
+ ObjectId objectId,
+ String refName,
+ long eventCreatedOn,
+ boolean isDelete) {
ReplicationState state = new ReplicationState(new GitUpdateProcessing(dispatcher.get()));
- fire(Project.nameKey(projectName), objectId, refName, isDelete, state);
+ fire(Project.nameKey(projectName), objectId, refName, eventCreatedOn, isDelete, state);
state.markAllFetchTasksScheduled();
}
private void fire(
- Project.NameKey project,
+ NameKey project,
ObjectId objectId,
String refName,
+ long eventCreatedOn,
boolean isDelete,
ReplicationState state) {
if (!running) {
@@ -216,7 +223,7 @@
"Replication plugin did not finish startup before event, event replication is postponed",
state);
beforeStartupEventsQueue.add(
- ReferenceUpdatedEvent.create(project.get(), refName, objectId, isDelete));
+ ReferenceUpdatedEvent.create(project.get(), refName, objectId, eventCreatedOn, isDelete));
return;
}
ForkJoinPool fetchCallsPool = null;
@@ -224,7 +231,7 @@
fetchCallsPool = new ForkJoinPool(sources.get().getAll().size());
final Consumer<Source> callFunction =
- callFunction(project, objectId, refName, isDelete, state);
+ callFunction(project, objectId, refName, eventCreatedOn, isDelete, state);
fetchCallsPool
.submit(() -> sources.get().getAll().parallelStream().forEach(callFunction))
.get(fetchCallsTimeout, TimeUnit.MILLISECONDS);
@@ -246,9 +253,11 @@
NameKey project,
ObjectId objectId,
String refName,
+ long eventCreatedOn,
boolean isDelete,
ReplicationState state) {
- CallFunction call = getCallFunction(project, objectId, refName, isDelete, state);
+ CallFunction call =
+ getCallFunction(project, objectId, refName, eventCreatedOn, isDelete, state);
return (source) -> {
boolean callSuccessful;
@@ -273,10 +282,12 @@
NameKey project,
ObjectId objectId,
String refName,
+ long eventCreatedOn,
boolean isDelete,
ReplicationState state) {
if (isDelete) {
- return ((source) -> callSendObject(source, project, refName, isDelete, null, state));
+ return ((source) ->
+ callSendObject(source, project, refName, eventCreatedOn, isDelete, null, state));
}
try {
@@ -291,7 +302,13 @@
if (revisionData.isPresent()) {
return ((source) ->
callSendObject(
- source, project, refName, isDelete, Arrays.asList(revisionData.get()), state));
+ source,
+ project,
+ refName,
+ eventCreatedOn,
+ isDelete,
+ Arrays.asList(revisionData.get()),
+ state));
}
} catch (InvalidObjectIdException | IOException e) {
stateLog.error(
@@ -307,8 +324,9 @@
private boolean callSendObject(
Source source,
- Project.NameKey project,
+ NameKey project,
String refName,
+ long eventCreatedOn,
boolean isDelete,
List<RevisionData> revision,
ReplicationState state)
@@ -328,8 +346,9 @@
Context<String> apiTimer = applyObjectMetrics.startEnd2End(source.getRemoteConfigName());
HttpResult result =
isDelete
- ? fetchClient.callSendObject(project, refName, isDelete, null, uri)
- : fetchClient.callSendObjects(project, refName, revision, uri);
+ ? fetchClient.callSendObject(
+ project, refName, eventCreatedOn, isDelete, null, uri)
+ : fetchClient.callSendObjects(project, refName, eventCreatedOn, revision, uri);
boolean resultSuccessful = result.isSuccessful();
repLog.info(
"Pull replication REST API apply object to {} COMPLETED for {}:{} - {}, HTTP Result:"
@@ -360,7 +379,8 @@
project,
refName,
allRevisions);
- return callSendObject(source, project, refName, isDelete, allRevisions, state);
+ return callSendObject(
+ source, project, refName, eventCreatedOn, isDelete, allRevisions, state);
}
throw new MissingParentObjectException(
@@ -501,7 +521,12 @@
String eventKey = String.format("%s:%s", event.projectName(), event.refName());
if (!eventsReplayed.contains(eventKey)) {
repLog.info("Firing pending task {}", event);
- fire(event.projectName(), event.objectId(), event.refName(), event.isDelete());
+ fire(
+ event.projectName(),
+ event.objectId(),
+ event.refName(),
+ event.eventCreatedOn(),
+ event.isDelete());
eventsReplayed.add(eventKey);
}
}
@@ -522,9 +547,13 @@
abstract static class ReferenceUpdatedEvent {
static ReferenceUpdatedEvent create(
- String projectName, String refName, ObjectId objectId, boolean isDelete) {
+ String projectName,
+ String refName,
+ ObjectId objectId,
+ long eventCreatedOn,
+ boolean isDelete) {
return new AutoValue_ReplicationQueue_ReferenceUpdatedEvent(
- projectName, refName, objectId, isDelete);
+ projectName, refName, objectId, eventCreatedOn, isDelete);
}
public abstract String projectName();
@@ -533,6 +562,8 @@
public abstract ObjectId objectId();
+ public abstract long eventCreatedOn();
+
public abstract boolean isDelete();
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionInput.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionInput.java
index c18e11d..6883f2c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionInput.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionInput.java
@@ -23,11 +23,14 @@
private String refName;
+ private long eventCreatedOn;
private RevisionData revisionData;
- public RevisionInput(String label, String refName, RevisionData revisionData) {
+ public RevisionInput(
+ String label, String refName, long eventCreatedOn, RevisionData revisionData) {
this.label = label;
this.refName = refName;
+ this.eventCreatedOn = eventCreatedOn;
this.revisionData = revisionData;
}
@@ -43,6 +46,10 @@
return revisionData;
}
+ public long getEventCreatedOn() {
+ return eventCreatedOn;
+ }
+
public void validate() {
validate(refName, revisionData);
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionsInput.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionsInput.java
index 2361f6b..d4626f4 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionsInput.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/api/data/RevisionsInput.java
@@ -21,11 +21,14 @@
private String refName;
+ private long eventCreatedOn;
private RevisionData[] revisionsData;
- public RevisionsInput(String label, String refName, RevisionData[] revisionsData) {
+ public RevisionsInput(
+ String label, String refName, long eventCreatedOn, RevisionData[] revisionsData) {
this.label = label;
this.refName = refName;
+ this.eventCreatedOn = eventCreatedOn;
this.revisionsData = revisionsData;
}
@@ -37,6 +40,10 @@
return refName;
}
+ public long getEventCreatedOn() {
+ return eventCreatedOn;
+ }
+
public RevisionData[] getRevisionsData() {
return revisionsData;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchApiClient.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchApiClient.java
index 6000eb9..1991260 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchApiClient.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchApiClient.java
@@ -17,6 +17,7 @@
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import com.google.gerrit.entities.Project;
+import com.google.gerrit.entities.Project.NameKey;
import com.googlesource.gerrit.plugins.replication.pull.Source;
import com.googlesource.gerrit.plugins.replication.pull.api.data.RevisionData;
import java.io.IOException;
@@ -46,14 +47,19 @@
HttpResult updateHead(Project.NameKey project, String newHead, URIish apiUri) throws IOException;
HttpResult callSendObject(
- Project.NameKey project,
+ NameKey project,
String refName,
+ long eventCreatedOn,
boolean isDelete,
RevisionData revisionData,
URIish targetUri)
throws ClientProtocolException, IOException;
HttpResult callSendObjects(
- Project.NameKey project, String refName, List<RevisionData> revisionData, URIish targetUri)
+ NameKey project,
+ String refName,
+ long eventCreatedOn,
+ List<RevisionData> revisionData,
+ URIish targetUri)
throws ClientProtocolException, IOException;
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java
index 0afbecf..c3fec5e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClient.java
@@ -171,8 +171,9 @@
*/
@Override
public HttpResult callSendObject(
- Project.NameKey project,
+ NameKey project,
String refName,
+ long eventCreatedOn,
boolean isDelete,
@Nullable RevisionData revisionData,
URIish targetUri)
@@ -184,7 +185,7 @@
} else {
requireNull(revisionData, "DELETE ref-updates cannot be associated with a RevisionData");
}
- RevisionInput input = new RevisionInput(instanceId, refName, revisionData);
+ RevisionInput input = new RevisionInput(instanceId, refName, eventCreatedOn, revisionData);
String url = formatUrl(targetUri.toString(), project, "apply-object");
@@ -196,14 +197,20 @@
@Override
public HttpResult callSendObjects(
- NameKey project, String refName, List<RevisionData> revisionData, URIish targetUri)
+ NameKey project,
+ String refName,
+ long eventCreatedOn,
+ List<RevisionData> revisionData,
+ URIish targetUri)
throws ClientProtocolException, IOException {
if (revisionData.size() == 1) {
- return callSendObject(project, refName, false, revisionData.get(0), targetUri);
+ return callSendObject(
+ project, refName, eventCreatedOn, false, revisionData.get(0), targetUri);
}
RevisionData[] inputData = new RevisionData[revisionData.size()];
- RevisionsInput input = new RevisionsInput(instanceId, refName, revisionData.toArray(inputData));
+ RevisionsInput input =
+ new RevisionsInput(instanceId, refName, eventCreatedOn, revisionData.toArray(inputData));
String url = formatUrl(targetUri.toString(), project, "apply-objects");
HttpPost post = new HttpPost(url);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java
index d989c4d..0a48eaf 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/ReplicationQueueTest.java
@@ -17,6 +17,7 @@
import static com.google.common.truth.Truth.assertThat;
import static java.nio.file.Files.createTempDirectory;
import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.anyString;
@@ -137,10 +138,12 @@
when(fetchClientFactory.create(any())).thenReturn(fetchRestApiClient);
lenient()
- .when(fetchRestApiClient.callSendObject(any(), anyString(), anyBoolean(), any(), any()))
+ .when(
+ fetchRestApiClient.callSendObject(
+ any(), anyString(), anyLong(), anyBoolean(), any(), any()))
.thenReturn(httpResult);
lenient()
- .when(fetchRestApiClient.callSendObjects(any(), anyString(), any(), any()))
+ .when(fetchRestApiClient.callSendObjects(any(), anyString(), anyLong(), any(), any()))
.thenReturn(httpResult);
when(fetchRestApiClient.callFetch(any(), anyString(), any())).thenReturn(fetchHttpResult);
when(fetchRestApiClient.initProject(any(), any())).thenReturn(successfulHttpResult);
@@ -172,7 +175,7 @@
objectUnderTest.start();
objectUnderTest.onEvent(event);
- verify(fetchRestApiClient).callSendObjects(any(), anyString(), any(), any());
+ verify(fetchRestApiClient).callSendObjects(any(), anyString(), anyLong(), any(), any());
}
@Test
@@ -183,7 +186,8 @@
objectUnderTest.start();
objectUnderTest.onEvent(event);
- verify(fetchRestApiClient, never()).callSendObjects(any(), anyString(), any(), any());
+ verify(fetchRestApiClient, never())
+ .callSendObjects(any(), anyString(), anyLong(), any(), any());
}
@Test
@@ -218,7 +222,7 @@
objectUnderTest.start();
objectUnderTest.onEvent(event);
- verify(fetchRestApiClient).callSendObjects(any(), anyString(), any(), any());
+ verify(fetchRestApiClient).callSendObjects(any(), anyString(), anyLong(), any(), any());
}
@Test
@@ -255,7 +259,7 @@
when(httpResult.isSuccessful()).thenReturn(false);
when(httpResult.isParentObjectMissing()).thenReturn(true);
- when(fetchRestApiClient.callSendObjects(any(), anyString(), any(), any()))
+ when(fetchRestApiClient.callSendObjects(any(), anyString(), anyLong(), any(), any()))
.thenReturn(httpResult);
objectUnderTest.onEvent(event);
@@ -271,13 +275,13 @@
when(httpResult.isSuccessful()).thenReturn(false, true);
when(httpResult.isParentObjectMissing()).thenReturn(true, false);
- when(fetchRestApiClient.callSendObjects(any(), anyString(), any(), any()))
+ when(fetchRestApiClient.callSendObjects(any(), anyString(), anyLong(), any(), any()))
.thenReturn(httpResult);
objectUnderTest.onEvent(event);
verify(fetchRestApiClient, times(2))
- .callSendObjects(any(), anyString(), revisionsDataCaptor.capture(), any());
+ .callSendObjects(any(), anyString(), anyLong(), revisionsDataCaptor.capture(), any());
List<List<RevisionData>> revisionsDataValues = revisionsDataCaptor.getAllValues();
assertThat(revisionsDataValues).hasSize(2);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionTest.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionTest.java
index 814ba76..e575eb9 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/api/ApplyObjectActionTest.java
@@ -48,6 +48,9 @@
@RunWith(MockitoJUnitRunner.class)
public class ApplyObjectActionTest {
+
+ private static final long DUMMY_EVENT_TIMESTAMP = 1684875939;
+
ApplyObjectAction applyObjectAction;
String label = "instance-2-label";
String url = "file:///gerrit-host/instance-1/git/${name}.git";
@@ -55,7 +58,6 @@
String refMetaName = "refs/meta/version";
String location = "http://gerrit-host/a/config/server/tasks/08d173e9";
int taskId = 1234;
-
private String sampleCommitObjectId = "9f8d52853089a3cf00c02ff7bd0817bd4353a95a";
private String sampleTreeObjectId = "4b825dc642cb6eb9a060e54bf8d69288fbee4904";
private String sampleBlobObjectId = "b5d7bcf1d1c5b0f0726d10a16c8315f06f900bfb";
@@ -95,7 +97,8 @@
@Test
public void shouldReturnCreatedResponseCode() throws RestApiException {
- RevisionInput inputParams = new RevisionInput(label, refName, createSampleRevisionData());
+ RevisionInput inputParams =
+ new RevisionInput(label, refName, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData());
Response<?> response = applyObjectAction.apply(projectResource, inputParams);
@@ -109,6 +112,7 @@
new RevisionInput(
label,
refMetaName,
+ DUMMY_EVENT_TIMESTAMP,
createSampleRevisionDataBlob(
new RevisionObjectData(sampleBlobObjectId, Constants.OBJ_BLOB, blobData)));
@@ -120,7 +124,8 @@
@SuppressWarnings("cast")
@Test
public void shouldReturnSourceUrlAndrefNameAsAResponseBody() throws Exception {
- RevisionInput inputParams = new RevisionInput(label, refName, createSampleRevisionData());
+ RevisionInput inputParams =
+ new RevisionInput(label, refName, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData());
Response<?> response = applyObjectAction.apply(projectResource, inputParams);
assertThat((RevisionInput) response.value()).isEqualTo(inputParams);
@@ -128,28 +133,32 @@
@Test(expected = BadRequestException.class)
public void shouldThrowBadRequestExceptionWhenMissingLabel() throws Exception {
- RevisionInput inputParams = new RevisionInput(null, refName, createSampleRevisionData());
+ RevisionInput inputParams =
+ new RevisionInput(null, refName, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData());
applyObjectAction.apply(projectResource, inputParams);
}
@Test(expected = BadRequestException.class)
public void shouldThrowBadRequestExceptionWhenEmptyLabel() throws Exception {
- RevisionInput inputParams = new RevisionInput("", refName, createSampleRevisionData());
+ RevisionInput inputParams =
+ new RevisionInput("", refName, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData());
applyObjectAction.apply(projectResource, inputParams);
}
@Test(expected = BadRequestException.class)
public void shouldThrowBadRequestExceptionWhenMissingRefName() throws Exception {
- RevisionInput inputParams = new RevisionInput(label, null, createSampleRevisionData());
+ RevisionInput inputParams =
+ new RevisionInput(label, null, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData());
applyObjectAction.apply(projectResource, inputParams);
}
@Test(expected = BadRequestException.class)
public void shouldThrowBadRequestExceptionWhenEmptyRefName() throws Exception {
- RevisionInput inputParams = new RevisionInput(label, "", createSampleRevisionData());
+ RevisionInput inputParams =
+ new RevisionInput(label, "", DUMMY_EVENT_TIMESTAMP, createSampleRevisionData());
applyObjectAction.apply(projectResource, inputParams);
}
@@ -161,7 +170,8 @@
RevisionObjectData treeData =
new RevisionObjectData(sampleTreeObjectId, Constants.OBJ_TREE, new byte[] {});
RevisionInput inputParams =
- new RevisionInput(label, refName, createSampleRevisionData(commitData, treeData));
+ new RevisionInput(
+ label, refName, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData(commitData, treeData));
applyObjectAction.apply(projectResource, inputParams);
}
@@ -172,7 +182,8 @@
new RevisionObjectData(
sampleCommitObjectId, Constants.OBJ_COMMIT, sampleCommitContent.getBytes());
RevisionInput inputParams =
- new RevisionInput(label, refName, createSampleRevisionData(commitData, null));
+ new RevisionInput(
+ label, refName, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData(commitData, null));
applyObjectAction.apply(projectResource, inputParams);
}
@@ -180,7 +191,8 @@
@Test(expected = AuthException.class)
public void shouldThrowAuthExceptionWhenCallFetchActionCapabilityNotAssigned()
throws RestApiException {
- RevisionInput inputParams = new RevisionInput(label, refName, createSampleRevisionData());
+ RevisionInput inputParams =
+ new RevisionInput(label, refName, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData());
when(preConditions.canCallFetchApi()).thenReturn(false);
@@ -190,7 +202,8 @@
@Test(expected = ResourceConflictException.class)
public void shouldThrowResourceConflictExceptionWhenMissingParentObject()
throws RestApiException, IOException, RefUpdateException, MissingParentObjectException {
- RevisionInput inputParams = new RevisionInput(label, refName, createSampleRevisionData());
+ RevisionInput inputParams =
+ new RevisionInput(label, refName, DUMMY_EVENT_TIMESTAMP, createSampleRevisionData());
doThrow(
new MissingParentObjectException(
diff --git a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClientBase.java b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClientBase.java
index a2389d7..cdb238e 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClientBase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/replication/pull/client/FetchRestApiClientBase.java
@@ -74,6 +74,7 @@
String pluginName = "pull-replication";
String instanceId = "Replication";
String refName = RefNames.REFS_HEADS + "master";
+ long eventCreatedOn = 1684875939;
String expectedPayload =
"{\"label\":\"Replication\", \"ref_name\": \"" + refName + "\", \"async\":false}";
@@ -87,7 +88,9 @@
String blobObjectId = "bb383f5249c68a4cc8c82bdd1228b4a8883ff6e8";
String expectedSendObjectPayload =
- "{\"label\":\"Replication\",\"ref_name\":\"refs/heads/master\",\"revision_data\":{\"commit_object\":{\"sha1\":\""
+ "{\"label\":\"Replication\",\"ref_name\":\"refs/heads/master\",\"event_created_on\":"
+ + eventCreatedOn
+ + ",\"revision_data\":{\"commit_object\":{\"sha1\":\""
+ commitObjectId
+ "\",\"type\":1,\"content\":\"dHJlZSA3NzgxNGQyMTZhNmNhYjJkZGI5ZjI4NzdmYmJkMGZlYmRjMGZhNjA4CnBhcmVudCA5ODNmZjFhM2NmNzQ3MjVhNTNhNWRlYzhkMGMwNjEyMjEyOGY1YThkCmF1dGhvciBHZXJyaXQgVXNlciAxMDAwMDAwIDwxMDAwMDAwQDY5ZWMzOGYwLTM1MGUtNGQ5Yy05NmQ0LWJjOTU2ZjJmYWFhYz4gMTYxMDU3ODY0OCArMDEwMApjb21taXR0ZXIgR2Vycml0IENvZGUgUmV2aWV3IDxyb290QG1hY3plY2gtWFBTLTE1PiAxNjEwNTc4NjQ4ICswMTAwCgpVcGRhdGUgcGF0Y2ggc2V0IDEKClBhdGNoIFNldCAxOgoKKDEgY29tbWVudCkKClBhdGNoLXNldDogMQo\\u003d\"},\"tree_object\":{\"sha1\":\""
+ treeObjectId
@@ -265,6 +268,7 @@
objectUnderTest.callSendObject(
Project.nameKey("test_repo"),
refName,
+ eventCreatedOn,
IS_REF_UPDATE,
createSampleRevisionData(),
new URIish(api));
@@ -287,6 +291,7 @@
objectUnderTest.callSendObject(
Project.nameKey("test_repo"),
refName,
+ eventCreatedOn,
IS_REF_UPDATE,
createSampleRevisionData(),
new URIish(api));