diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/LockFailureException.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/LockFailureException.java new file mode 100644 index 0000000000..7380b0a686 --- /dev/null +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/LockFailureException.java @@ -0,0 +1,26 @@ +// Copyright (C) 2016 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.server.git; + +import java.io.IOException; + +/** Thrown when updating a ref in Git fails with LOCK_FAILURE. */ +public class LockFailureException extends IOException { + private static final long serialVersionUID = 1L; + + public LockFailureException(String message) { + super(message); + } +} diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java index 6334cd2a8a..f7752dcf7c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java @@ -347,9 +347,11 @@ public abstract class VersionedMetaData { case FORCED: update.fireGitRefUpdatedEvent(ru); return; + case LOCK_FAILURE: + throw new LockFailureException("Cannot delete " + ru.getName() + + " in " + db.getDirectory() + ": " + ru.getResult()); case FAST_FORWARD: case IO_FAILURE: - case LOCK_FAILURE: case NEW: case NOT_ATTEMPTED: case NO_CHANGE: @@ -424,9 +426,11 @@ public abstract class VersionedMetaData { revision = rw.parseCommit(ru.getNewObjectId()); update.fireGitRefUpdatedEvent(ru); return revision; + case LOCK_FAILURE: + throw new LockFailureException("Cannot update " + ru.getName() + + " in " + db.getDirectory() + ": " + ru.getResult()); case FORCED: case IO_FAILURE: - case LOCK_FAILURE: case NOT_ATTEMPTED: case NO_CHANGE: case REJECTED: