Merge "Enable streaming large files put to an edit"
diff --git a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java
index 16f0ec3..3be79b8 100644
--- a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java
+++ b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/LuceneChangeIndex.java
@@ -319,20 +319,7 @@
@SuppressWarnings("unchecked")
@Override
- public void delete(ChangeData cd) throws IOException {
- Term id = QueryBuilder.idTerm(cd);
- try {
- Futures.allAsList(
- openIndex.delete(id),
- closedIndex.delete(id)).get();
- } catch (ExecutionException | InterruptedException e) {
- throw new IOException(e);
- }
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public void delete(int id) throws IOException {
+ public void delete(Change.Id id) throws IOException {
Term idTerm = QueryBuilder.idTerm(id);
try {
Futures.allAsList(
diff --git a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/QueryBuilder.java b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/QueryBuilder.java
index ea5786d..28a8315 100644
--- a/gerrit-lucene/src/main/java/com/google/gerrit/lucene/QueryBuilder.java
+++ b/gerrit-lucene/src/main/java/com/google/gerrit/lucene/QueryBuilder.java
@@ -19,6 +19,7 @@
import static org.apache.lucene.search.BooleanClause.Occur.SHOULD;
import com.google.common.collect.Lists;
+import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.index.ChangeField;
import com.google.gerrit.server.index.FieldType;
import com.google.gerrit.server.index.IndexPredicate;
@@ -56,8 +57,8 @@
return intTerm(ID_FIELD, cd.getId().get());
}
- public static Term idTerm(int id) {
- return intTerm(ID_FIELD, id);
+ public static Term idTerm(Change.Id id) {
+ return intTerm(ID_FIELD, id.get());
}
private final Schema<ChangeData> schema;
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java
index 64e6cf5..fde783a 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/Daemon.java
@@ -35,7 +35,6 @@
import com.google.gerrit.pgm.http.jetty.JettyEnv;
import com.google.gerrit.pgm.http.jetty.JettyModule;
import com.google.gerrit.pgm.http.jetty.ProjectQoSFilter;
-import com.google.gerrit.pgm.JythonShell;
import com.google.gerrit.pgm.util.ErrorLogFile;
import com.google.gerrit.pgm.util.GarbageCollectionLogFile;
import com.google.gerrit.pgm.util.LogFileCompressor;
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
index 19231cf..071d6c9 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
@@ -466,7 +466,7 @@
db.changeMessages().delete(db.changeMessages().byChange(changeId));
db.starredChanges().delete(db.starredChanges().byChange(changeId));
db.changes().delete(Collections.singleton(change));
- indexer.delete(db, change);
+ indexer.delete(change.getId());
}
public void deleteOnlyDraftPatchSet(PatchSet patch, Change change)
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangesCollection.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangesCollection.java
index e7e71e5..1648a5d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangesCollection.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangesCollection.java
@@ -86,7 +86,7 @@
Integer changeId = Ints.tryParse(id.get());
if (changeId != null) {
try {
- changeIndexer.delete(changeId);
+ changeIndexer.delete(new Change.Id(changeId));
} catch (IOException e) {
throw new ResourceNotFoundException(id.get(), e);
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndex.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndex.java
index 8d78ccb..cc36928 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndex.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndex.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.index;
+import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.query.Predicate;
import com.google.gerrit.server.query.QueryParseException;
import com.google.gerrit.server.query.change.ChangeData;
@@ -53,22 +54,13 @@
public void replace(ChangeData cd) throws IOException;
/**
- * Delete a change document from the index.
- *
- * @param cd change document
- *
- * @throws IOException
- */
- public void delete(ChangeData cd) throws IOException;
-
- /**
* Delete a change document from the index by id.
*
- * @param id change document id
+ * @param id change id
*
* @throws IOException
*/
- public void delete(int id) throws IOException;
+ public void delete(Change.Id id) throws IOException;
/**
* Delete all change documents from the index.
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexer.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexer.java
index 4662581..3c0d715 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexer.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/ChangeIndexer.java
@@ -118,7 +118,7 @@
*/
public CheckedFuture<?, IOException> indexAsync(Change.Id id) {
return executor != null
- ? submit(new Task(id, false))
+ ? submit(new IndexTask(id))
: Futures.<Object, IOException> immediateCheckedFuture(null);
}
@@ -151,40 +151,17 @@
*/
public CheckedFuture<?, IOException> deleteAsync(Change.Id id) {
return executor != null
- ? submit(new Task(id, true))
+ ? submit(new DeleteTask(id))
: Futures.<Object, IOException> immediateCheckedFuture(null);
}
/**
* Synchronously delete a change.
*
- * @param cd change to delete.
+ * @param id change ID to delete.
*/
- public void delete(ChangeData cd) throws IOException {
- for (ChangeIndex i : getWriteIndexes()) {
- i.delete(cd);
- }
- }
-
- /**
- * Synchronously delete a change by id.
- *
- * @param id change to delete.
- */
- public void delete(int id) throws IOException {
- for (ChangeIndex i : getWriteIndexes()) {
- i.delete(id);
- }
- }
-
- /**
- * Synchronously delete a change.
- *
- * @param change change to delete.
- * @param db review database.
- */
- public void delete(ReviewDb db, Change change) throws IOException {
- delete(changeDataFactory.create(db, change));
+ public void delete(Change.Id id) throws IOException {
+ new DeleteTask(id).call();
}
private Collection<ChangeIndex> getWriteIndexes() {
@@ -197,13 +174,11 @@
return Futures.makeChecked(executor.submit(task), MAPPER);
}
- private class Task implements Callable<Void> {
+ private class IndexTask implements Callable<Void> {
private final Change.Id id;
- private final boolean delete;
- private Task(Change.Id id, boolean delete) {
+ private IndexTask(Change.Id id) {
this.id = id;
- this.delete = delete;
}
@Override
@@ -238,14 +213,8 @@
try {
ChangeData cd = changeDataFactory.create(
newCtx.getReviewDbProvider().get(), id);
- if (delete) {
- for (ChangeIndex i : getWriteIndexes()) {
- i.delete(cd);
- }
- } else {
- for (ChangeIndex i : getWriteIndexes()) {
- i.replace(cd);
- }
+ for (ChangeIndex i : getWriteIndexes()) {
+ i.replace(cd);
}
return null;
} finally {
@@ -266,4 +235,23 @@
return "index-change-" + id.get();
}
}
+
+ private class DeleteTask implements Callable<Void> {
+ private final Change.Id id;
+
+ private DeleteTask(Change.Id id) {
+ this.id = id;
+ }
+
+ @Override
+ public Void call() throws IOException {
+ // Don't bother setting a RequestContext to provide the DB.
+ // Implementations should not need to access the DB in order to delete a
+ // change ID.
+ for (ChangeIndex i : getWriteIndexes()) {
+ i.delete(id);
+ }
+ return null;
+ }
+ }
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/DummyIndex.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/DummyIndex.java
index ff8f843..4f057c5 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/index/DummyIndex.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/DummyIndex.java
@@ -14,6 +14,7 @@
package com.google.gerrit.server.index;
+import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.query.Predicate;
import com.google.gerrit.server.query.QueryParseException;
import com.google.gerrit.server.query.change.ChangeData;
@@ -22,7 +23,6 @@
import java.io.IOException;
public class DummyIndex implements ChangeIndex {
-
@Override
public Schema<ChangeData> getSchema() {
throw new UnsupportedOperationException();
@@ -37,7 +37,7 @@
}
@Override
- public void delete(ChangeData cd) throws IOException {
+ public void delete(Change.Id id) throws IOException {
}
@Override
@@ -53,8 +53,4 @@
@Override
public void markReady(boolean ready) throws IOException {
}
-
- @Override
- public void delete(int id) throws IOException {
- }
}
diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/index/FakeIndex.java b/gerrit-server/src/test/java/com/google/gerrit/server/index/FakeIndex.java
index cb8d7e5..393b36c 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/server/index/FakeIndex.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/server/index/FakeIndex.java
@@ -15,6 +15,7 @@
package com.google.gerrit.server.index;
import com.google.common.collect.ImmutableList;
+import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.server.query.Predicate;
import com.google.gerrit.server.query.QueryParseException;
import com.google.gerrit.server.query.change.ChangeData;
@@ -22,8 +23,6 @@
import com.google.gwtorm.server.OrmException;
import com.google.gwtorm.server.ResultSet;
-import java.io.IOException;
-
class FakeIndex implements ChangeIndex {
static Schema<ChangeData> V1 = new Schema<>(1, false,
ImmutableList.<FieldDef<ChangeData, ?>> of(
@@ -75,7 +74,7 @@
}
@Override
- public void delete(ChangeData cd) {
+ public void delete(Change.Id id) {
throw new UnsupportedOperationException();
}
@@ -103,8 +102,4 @@
public void markReady(boolean ready) {
throw new UnsupportedOperationException();
}
-
- @Override
- public void delete(int id) throws IOException {
- }
}
diff --git a/gerrit-solr/src/main/java/com/google/gerrit/solr/SolrChangeIndex.java b/gerrit-solr/src/main/java/com/google/gerrit/solr/SolrChangeIndex.java
index c656f6ce..2e998af 100644
--- a/gerrit-solr/src/main/java/com/google/gerrit/solr/SolrChangeIndex.java
+++ b/gerrit-solr/src/main/java/com/google/gerrit/solr/SolrChangeIndex.java
@@ -160,22 +160,8 @@
}
@Override
- public void delete(ChangeData cd) throws IOException {
- String id = cd.getId().toString();
- try {
- if (cd.change().getStatus().isOpen()) {
- delete(id, openIndex);
- } else {
- delete(id, closedIndex);
- }
- } catch (OrmException e) {
- throw new IOException(e);
- }
- }
-
- @Override
- public void delete(int id) throws IOException {
- String idString = Integer.toString(id);
+ public void delete(Change.Id id) throws IOException {
+ String idString = Integer.toString(id.get());
delete(idString, openIndex);
delete(idString, closedIndex);
}