当前位置: 首页>>代码示例>>Java>>正文


Java DatastoreTimeoutException类代码示例

本文整理汇总了Java中com.google.appengine.api.datastore.DatastoreTimeoutException的典型用法代码示例。如果您正苦于以下问题:Java DatastoreTimeoutException类的具体用法?Java DatastoreTimeoutException怎么用?Java DatastoreTimeoutException使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


DatastoreTimeoutException类属于com.google.appengine.api.datastore包,在下文中一共展示了DatastoreTimeoutException类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testRun_retryOnTransientFailure

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
@Test
public void testRun_retryOnTransientFailure() throws Exception {
  persistResource(makeHostResource("ns1.cat.lol", "1.2.3.4"));
  WhoisServer server = newWhoisServer("ns1.cat.lol");
  WhoisResponse expectedResponse =
      server.whoisReader.readCommand(server.input, clock.nowUtc()).executeQuery(clock.nowUtc());

  WhoisReader mockReader = mock(WhoisReader.class);
  WhoisCommand mockCommand = mock(WhoisCommand.class);
  when(mockReader.readCommand(any(Reader.class), any(DateTime.class))).thenReturn(mockCommand);
  when(mockCommand.executeQuery(any(DateTime.class)))
      .thenThrow(new DatastoreFailureException("Expected transient exception #1"))
      .thenThrow(new DatastoreTimeoutException("Expected transient exception #2"))
      .thenReturn(expectedResponse);

  server.whoisReader = mockReader;
  server.run();
  assertThat(response.getPayload()).isEqualTo(loadFile("whois_server_nameserver.txt"));
}
 
开发者ID:google,项目名称:nomulus,代码行数:20,代码来源:WhoisServerTest.java

示例2: testTransact_datastoreTimeoutException_noManifest_retries

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
@Test
public void testTransact_datastoreTimeoutException_noManifest_retries() {
  assertThat(ofy().transact(new Work<Integer>() {

    int count = 0;

    @Override
    public Integer run() {
      // We don't write anything in this transaction, so there is no commit log manifest.
      // Therefore it's always safe to retry since nothing got written.
      count++;
      if (count == 3) {
        return count;
      }
      throw new DatastoreTimeoutException("");
    }})).isEqualTo(3);
}
 
开发者ID:google,项目名称:nomulus,代码行数:18,代码来源:OfyTest.java

示例3: testTransact_datastoreTimeoutException_manifestNotWrittenToDatastore_retries

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
@Test
public void testTransact_datastoreTimeoutException_manifestNotWrittenToDatastore_retries() {
  assertThat(ofy().transact(new Work<Integer>() {

    int count = 0;

    @Override
    public Integer run() {
      // There will be something in the manifest now, but it won't be committed if we throw.
      ofy().save().entity(someObject);
      count++;
      if (count == 3) {
        return count;
      }
      throw new DatastoreTimeoutException("");
    }})).isEqualTo(3);
}
 
开发者ID:google,项目名称:nomulus,代码行数:18,代码来源:OfyTest.java

示例4: beginTransaction

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
private CheckedTransaction beginTransaction(final TransactionOptions options)
    throws PermanentFailure, RetryableFailure {
  return safeRun(new Evaluater<CheckedTransaction>() {
    @Override public CheckedTransaction run() {
      Transaction rawTransaction = datastore.beginTransaction(options);
      // NOTE(ohler): Calling rawTransaction.getId() forces TransactionImpl to
      // wait for the result of the beginTransaction RPC.  We do this here to
      // get the DatastoreTimeoutException (in the case of a timeout) right
      // away rather than at some surprising time later in
      // TransactionImpl.toString() or similar.
      //
      // Hopefully, TransactionImpl will be fixed to eliminate the need for
      // this.
      try {
        rawTransaction.getId();
      } catch (DatastoreTimeoutException e) {
        // We don't log transaction itself because I'm worried its toString()
        // might fail.  TODO(ohler): confirm this.
        log.log(Level.WARNING, "Failed to begin transaction", e);
        // Now we need to roll back the transaction (even though it doesn't
        // actually exist), otherwise TransactionCleanupFilter will try to
        // roll it back, which is bad because it's not prepared for the crash
        // that we catch below.
        try {
          rawTransaction.rollback();
          throw new Error("Rollback of nonexistent transaction did not fail");
        } catch (DatastoreTimeoutException e2) {
          log.log(Level.INFO, "Rollback of nonexistent transaction failed as expected", e2);
        }
        throw e;
      }
      CheckedTransaction checkedTransaction = new CheckedTransactionImpl(rawTransaction);
      log.info("Begun transaction " + checkedTransaction);
      return checkedTransaction;
    }
  });
}
 
开发者ID:ArloJamesBarnes,项目名称:walkaround,代码行数:38,代码来源:CheckedDatastore.java

示例5: transactCommitLoggedWork

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
/**
 * Transact with commit logs and retry with exponential backoff.
 *
 * <p>This method is broken out from {@link #transactNew(Work)} for testing purposes.
 */
@VisibleForTesting
<R> R transactCommitLoggedWork(CommitLoggedWork<R> work) {
  long baseRetryMillis = getBaseOfyRetryDuration().getMillis();
  for (long attempt = 0, sleepMillis = baseRetryMillis;
      true;
      attempt++, sleepMillis *= 2) {
    try {
      ofy().transactNew(work);
      return work.getResult();
    } catch (TransientFailureException
        | TimestampInversionException
        | DatastoreTimeoutException
        | DatastoreFailureException e) {
      // TransientFailureExceptions come from task queues and always mean nothing committed.
      // TimestampInversionExceptions are thrown by our code and are always retryable as well.
      // However, Datastore exceptions might get thrown even if the transaction succeeded.
      if ((e instanceof DatastoreTimeoutException || e instanceof DatastoreFailureException)
          && checkIfAlreadySucceeded(work)) {
        return work.getResult();
      }
      if (attempt == NUM_RETRIES) {
        throw e;  // Give up.
      }
      sleeper.sleepUninterruptibly(Duration.millis(sleepMillis));
      logger.infofmt(e, "Retrying %s, attempt %s", e.getClass().getSimpleName(), attempt);
    }
  }
}
 
开发者ID:google,项目名称:nomulus,代码行数:34,代码来源:Ofy.java

示例6: testTransact_datastoreTimeoutException_manifestWrittenToDatastore_returnsSuccess

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
@Test
public void testTransact_datastoreTimeoutException_manifestWrittenToDatastore_returnsSuccess() {
  // A work unit that throws if it is ever retried.
  VoidWork work = new VoidWork() {
    boolean firstCallToVrun = true;

    @Override
    public void vrun() {
      if (firstCallToVrun) {
        firstCallToVrun = false;
        ofy().save().entity(someObject);
        return;
      }
      fail("Shouldn't have retried.");
    }};
  // A commit logged work that throws on the first attempt to get its result.
  CommitLoggedWork<Void> commitLoggedWork = new CommitLoggedWork<Void>(work, new SystemClock()) {
    boolean firstCallToGetResult = true;

    @Override
    public Void getResult() {
      if (firstCallToGetResult) {
        firstCallToGetResult = false;
        throw new DatastoreTimeoutException("");
      }
      return null;
    }};
  // Despite the DatastoreTimeoutException in the first call to getResult(), this should succeed
  // without retrying. If a retry is triggered, the test should fail due to the call to fail().
  ofy().transactCommitLoggedWork(commitLoggedWork);
}
 
开发者ID:google,项目名称:nomulus,代码行数:32,代码来源:OfyTest.java

示例7: saveSession

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
@Override
public void saveSession(String key, SessionData data) throws Retryable {
  try {
    datastore.put(createEntityForSession(key, data));
  } catch (DatastoreTimeoutException e) {
    throw new Retryable(e);
  }
}
 
开发者ID:GoogleCloudPlatform,项目名称:appengine-java-vm-runtime,代码行数:9,代码来源:DatastoreSessionStore.java

示例8: makeSyncCall

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
@SuppressWarnings("unchecked")
public byte[] makeSyncCall(
    ApiProxy.Environment environment, String packageName, String methodName, byte[] request)
    throws ApiProxyException {
  if (packageName.equals("datastore_v3") && timeoutCount > 0) {
    timeoutCount--;
    throw new DatastoreTimeoutException("Timeout");
  }
  return delegate.makeSyncCall(environment, packageName, methodName, request);
}
 
开发者ID:GoogleCloudPlatform,项目名称:appengine-java-vm-runtime,代码行数:11,代码来源:SessionManagerTest.java

示例9: makeAsyncCall

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
public Future<byte[]> makeAsyncCall(
    ApiProxy.Environment environment,
    String packageName,
    String methodName,
    byte[] request,
    ApiProxy.ApiConfig apiConfig) {
  if (packageName.equals("datastore_v3") && timeoutCount > 0) {
    timeoutCount--;
    throw new DatastoreTimeoutException("Timeout");
  }
  return delegate.makeAsyncCall(environment, packageName, methodName, request, apiConfig);
}
 
开发者ID:GoogleCloudPlatform,项目名称:appengine-java-vm-runtime,代码行数:13,代码来源:SessionManagerTest.java

示例10: beginTransaction

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
private CheckedTransaction beginTransaction(final TransactionOptions options)
    throws PermanentFailure, RetryableFailure {
  return safeRun(new Evaluater<CheckedTransaction>() {
    @Override
    public CheckedTransaction run() {
      Transaction rawTransaction = datastore.beginTransaction(options);
      // NOTE(ohler): Calling rawTransaction.getId() forces TransactionImpl to
      // wait for the result of the beginTransaction RPC. We do this here to
      // get the DatastoreTimeoutException (in the case of a timeout) right
      // away rather than at some surprising time later in
      // TransactionImpl.toString() or similar.
      //
      // Hopefully, TransactionImpl will be fixed to eliminate the need for
      // this.
      try {
        rawTransaction.getId();
      } catch (DatastoreTimeoutException e) {
        // We don't log transaction itself because I'm worried its toString()
        // might fail. TODO(ohler): confirm this.
        log.log(Level.WARNING, "Failed to begin transaction", e);
        // Now we need to roll back the transaction (even though it doesn't
        // actually exist), otherwise TransactionCleanupFilter will try to
        // roll it back, which is bad because it's not prepared for the crash
        // that we catch below.
        try {
          rawTransaction.rollback();
          throw new Error("Rollback of nonexistent transaction did not fail");
        } catch (DatastoreTimeoutException e2) {
          log.log(Level.INFO, "Rollback of nonexistent transaction failed as expected", e2);
        }
        throw e;
      }
      CheckedTransaction checkedTransaction = new CheckedTransactionImpl(rawTransaction);
      log.info("Begun transaction " + checkedTransaction);
      return checkedTransaction;
    }
  });
}
 
开发者ID:larrytin,项目名称:realtime-server-appengine,代码行数:39,代码来源:CheckedDatastore.java

示例11: testTransactNewReadOnly_datastoreTimeoutException_retries

import com.google.appengine.api.datastore.DatastoreTimeoutException; //导入依赖的package包/类
@Test
public void testTransactNewReadOnly_datastoreTimeoutException_retries() {
  doReadOnlyRetryTest(new DatastoreTimeoutException(""));
}
 
开发者ID:google,项目名称:nomulus,代码行数:5,代码来源:OfyTest.java


注:本文中的com.google.appengine.api.datastore.DatastoreTimeoutException类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。