コード例 #1
0
 public static void awaitSynchronized() {
   if (!isVolatile()) {
     return;
   } else {
     Collection<StackTraceElement> stack = Threads.filteredStack(stackFilter);
     String caller = (stack.isEmpty() ? "" : stack.iterator().next().toString());
     for (int i = 0; i < MAX_TX_START_SYNC_RETRIES && isVolatile(); i++) {
       try {
         TimeUnit.MILLISECONDS.sleep(1000);
         LOG.debug("Transaction blocked on sync: " + caller);
       } catch (InterruptedException ex) {
         Exceptions.maybeInterrupted(ex);
         return;
       }
     }
     if (isVolatile()) {
       throw new DatabaseStateException(
           "Transaction begin failed due to concurrent database synchronization: "
               + Hosts.listDatabases()
               + " for caller:\n"
               + Joiner.on("\n\tat ").join(stack));
     }
   }
 }
コード例 #2
0
 @Override
 public Set<String> get() {
   return Sets.newHashSet(
       Collections2.transform(Hosts.listDatabases(), Hosts.NameTransform.INSTANCE));
 }