Schema: Show only a single log for inexistent commits
Producing 16 logs for each commit is pointless.
Finding an OrmException means we're going to hit exceptions again
and again for each field, so bubble them up and return an empty list
when we find one.
Example (unmodified from cherry-pick source where OrmException has been
renamed to StorageException):
[2020-06-07T13:28:28.346+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field added of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
com.google.gerrit.exceptions.StorageException: Loading commit AnyObjectId[cee21a4ec8b5ae2469f7f314c2548dedc1023293] for ps 2 of change 777 failed.
at com.google.gerrit.server.query.change.ChangeData.loadCommitData(ChangeData.java:596)
at com.google.gerrit.server.query.change.ChangeData.getDiffSummary(ChangeData.java:398)
at com.google.gerrit.server.query.change.ChangeData.computeChangedLines(ChangeData.java:414)
[2020-06-07T13:28:28.352+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field author of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.355+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field committer of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.357+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field message of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.358+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field deleted of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.360+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field delta of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.361+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field directory of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.364+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field exactauthor of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.365+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field exactcommitter of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.367+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field extension of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.375+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field filepart of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.377+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field footer of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.379+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field onlyextensions of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.380+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field file of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.388+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field tr of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
[2020-06-07T13:28:28.390+0300] [Index-Batch-1] ERROR com.google.gerrit.index.Schema : error getting field merge of ChangeData{Change{777 (Ia3439cd1765c9a7a08a07a1485fbc95aabd8cf56), dest=Project,refs/heads/master, status=M}}
Change-Id: If23916d20134c869999d2588316936f29b0701db
(cherry picked from commit 7c7b8d86a1)
This commit is contained in:
committed by
Nasser Grainawi
parent
002c03086e
commit
061f3b238a
@@ -169,6 +169,13 @@ public class Schema<T> {
|
||||
try {
|
||||
v = f.get(obj);
|
||||
} catch (OrmException e) {
|
||||
// OrmException is thrown when the object is not found. On this case,
|
||||
// it is pointless to make further attempts for each field, so propagate
|
||||
// the exception to return an empty list.
|
||||
logger.atSevere().withCause(e).log("error getting field %s of %s", f.getName(), obj);
|
||||
throw new RuntimeException(
|
||||
e); // work around throwing checked exceptions from methods used in Streams
|
||||
} catch (RuntimeException e) {
|
||||
logger.atSevere().withCause(e).log("error getting field %s of %s", f.getName(), obj);
|
||||
return null;
|
||||
}
|
||||
@@ -190,10 +197,17 @@ public class Schema<T> {
|
||||
* @return all non-null field values from the object.
|
||||
*/
|
||||
public final Iterable<Values<T>> buildFields(T obj) {
|
||||
return fields.values().stream()
|
||||
.map(f -> fieldValues(obj, f))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(toImmutableList());
|
||||
try {
|
||||
return fields.values().stream()
|
||||
.map(f -> fieldValues(obj, f))
|
||||
.filter(Objects::nonNull)
|
||||
.collect(toImmutableList());
|
||||
} catch (RuntimeException e) {
|
||||
if (e.getCause().getClass().equals(OrmException.class)) {
|
||||
return ImmutableList.of();
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user