diff options
Diffstat (limited to 'src/main/java/com/amazon/carbonado/repo/replicated')
| -rw-r--r-- | src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java | 15 | 
1 files changed, 12 insertions, 3 deletions
diff --git a/src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java b/src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java index ebce796..249a779 100644 --- a/src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java +++ b/src/main/java/com/amazon/carbonado/repo/replicated/ReplicationTrigger.java @@ -321,9 +321,18 @@ class ReplicationTrigger<S extends Storable> extends Trigger<S> {                          return;
                      }
                  }
 -            } else if (!master.tryLoad()) {
 -                // Both are missing -- no repair needed.
 -                return;
 +            } else {
 +                try {
 +                    if (!master.tryLoad()) {
 +                        // Both are missing -- no repair needed.
 +                        return;
 +                    }
 +                } catch (IllegalStateException e) {
 +                    // Can be caused by not fully defining the primary key on
 +                    // the replica, but an alternate key is. The insert will
 +                    // fail anyhow, so don't try to repair.
 +                    return;
 +                }
              }
          } catch (FetchException e) {
              throw e.toPersistException();
  | 
