diff options
| author | Brian S. O'Neill <bronee@gmail.com> | 2012-01-24 21:35:01 +0000 | 
|---|---|---|
| committer | Brian S. O'Neill <bronee@gmail.com> | 2012-01-24 21:35:01 +0000 | 
| commit | aea108ba2b5f22cf5615bd02d719786e84d359da (patch) | |
| tree | b913c64fd530f6bd114348aba30fd1857ff26549 /src/main/java/com/amazon/carbonado/repo | |
| parent | 48fbe4abbd41c8faa0065a2be4f11839268bd0c7 (diff) | |
Fix race condition when making initial connection to a slow database.
Diffstat (limited to 'src/main/java/com/amazon/carbonado/repo')
| -rw-r--r-- | src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java index 5ac62e3..b98993e 100644 --- a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java +++ b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCRepositoryBuilder.java @@ -85,6 +85,9 @@ public class JDBCRepositoryBuilder extends AbstractRepositoryBuilder {      public Repository build(AtomicReference<Repository> rootRef) throws RepositoryException {
          assertReady();
 +
 +        final Repository originalRoot = rootRef.get();
 +
          JDBCRepository repo = new JDBCRepository
              (rootRef, getName(), isMaster(), getTriggerFactories(),
               getDataSource(), getDataSourceCloseOnShutdown(),
 @@ -94,7 +97,10 @@ public class JDBCRepositoryBuilder extends AbstractRepositoryBuilder {               getSuppressReloadMap(),
               mSequenceSelectStatement, mForceStoredSequence, mPrimaryKeyCheckDisabled,
               mResolver);
 -        rootRef.set(repo);
 +
 +        // Don't wipe out root when using BelatedRepositoryCreator.
 +        rootRef.compareAndSet(originalRoot, repo);
 +
          return repo;
      }
  | 
