private boolean getResponse() {
   if (retries > 20) {
     close();
   }
   if (!acquireReadBuffer()) {
     retries++;
     return false;
   }
   try {
     // HEADER(1) + DB_VERISON(8)
     buffer.limit(9);
     int read = connection.read();
     log("Get greeting response");
     if (read == 1 || read == 9) {
       buffer.flip();
       byte masterGreeting = buffer.get();
       if (masterGreeting == HeaderConstants.BYE) {
         log("Problem connecting to master " + connection + ". Got BYE.");
         close();
         return true;
       } else if (masterGreeting != HeaderConstants.MASTER_GREETING) {
         log("Got unkown greeting[" + masterGreeting + "] from " + connection);
         close();
       } else if (read != 9) {
         retries++;
         connection.pushBackAllReadData();
         return false;
       }
       masterVersion = buffer.getLong();
       log("Got master version: " + masterVersion);
       if (masterVersion < xaDs.getCurrentLogVersion()) {
         log("Got wrong version [" + masterVersion + "]");
         close();
         return true;
       }
       setNoRequeue();
       setChainJob(new HandleMasterConnection(connection, slave, masterVersion, xaDs));
       return true;
     } else {
       retries++;
       if (read > 0) {
         connection.pushBackAllReadData();
       }
       return false;
     }
   } finally {
     releaseReadBuffer();
   }
 }
예제 #2
0
 @Test
 public void hasAllXaManagerBeans() {
   for (XaDataSource xaDataSource :
       graphDb.getXaDataSourceManager().getAllRegisteredDataSources()) {
     XaResourceInfo info = getByName(xaDataSource.getName());
     assertEquals(
         "wrong branchid for XA data source " + xaDataSource.getName(),
         XaManagerBean.toHexString(xaDataSource.getBranchId()),
         info.getBranchId());
     assertEquals(
         "wrong log version for XA data source " + xaDataSource.getName(),
         xaDataSource.getCurrentLogVersion(),
         info.getLogVersion());
     assertEquals(
         "wrong last tx ID for XA data source " + xaDataSource.getName(),
         xaDataSource.getLastCommittedTxId(),
         info.getLastTxId());
   }
 }
 private boolean setupGreeting() {
   if (retries > 20) {
     close();
   }
   if (!acquireWriteBuffer()) {
     retries++;
     return false;
   }
   buffer.put(HeaderConstants.SLAVE_GREETING);
   buffer.putLong(xaDs.getRandomIdentifier());
   buffer.putLong(xaDs.getCreationTime());
   buffer.putLong(xaDs.getCurrentLogVersion());
   byte[] bytes = xaDsName.getBytes();
   buffer.putInt(bytes.length);
   buffer.put(bytes);
   buffer.flip();
   log("Setup greeting");
   setStatus(Status.SEND_GREETING);
   retries = 0;
   return true;
 }