Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services com.amazonaws.AbortedException在释放dynamoDB锁时发生异常_Amazon Web Services_Amazon Dynamodb - Fatal编程技术网

Amazon web services com.amazonaws.AbortedException在释放dynamoDB锁时发生异常

Amazon web services com.amazonaws.AbortedException在释放dynamoDB锁时发生异常,amazon-web-services,amazon-dynamodb,Amazon Web Services,Amazon Dynamodb,嗨,我正在代码中实现dynamoDb锁定。我有一个包含两个ID的方法,并基于这两个ID在dynamoDb的表中创建了几个条目。我实现了以下代码(示例代码): 类测试{ 公共void testLocking(){ 串pid; 字符串pid2; //创建锁,然后将其用作: AcquireLockOptions OptionMain=AcquireLockOptions.builder(pid.build(); Optional lockItemMain=Optional.empty(); 试一试{

嗨,我正在代码中实现dynamoDb锁定。我有一个包含两个ID的方法,并基于这两个ID在dynamoDb的表中创建了几个条目。我实现了以下代码(示例代码):

类测试{
公共void testLocking(){
串pid;
字符串pid2;
//创建锁,然后将其用作:
AcquireLockOptions OptionMain=AcquireLockOptions.builder(pid.build();
Optional lockItemMain=Optional.empty();
试一试{
lockItemMain=lockClient.tryAcquireLock(optionsMain);
if(lockItemMain.isPresent()){
//执行一些操作并将对象存储在dynamodb中:
dynamoDBMapper.save();
}捕获(锁定未授权异常e){
//日志记录。
}
最后{
if(lockItemMain.isPresent()){
debug(“释放锁1::”);
布尔状态=lockClient.releaseLock(lockItemMain.get());
logger.info(锁定状态字符串,状态);
}
}
}
AcquireLockOptions-Temp=AcquireLockOptions.builder(pid2.build();
Optional lockItemTemp=Optional.empty();
试一试{
lockItemTemp=lockClient.tryAcquireLock(选项Temp);
if(lockItemTemp.isPresent()){
//执行一些操作并将对象存储在dynamodb中:
dynamoDBMapper.save();
}捕获(锁定未授权异常e){
//日志记录。
}
最后{
if(lockItemTemp.isPresent()){
debug(“释放锁2::”);
布尔状态=lockClient.releaseLock(lockItemTemp.get());
logger.info(锁定状态字符串,状态);
}
}
}    
}
}
当这段代码运行时,我可以看到第一个锁被成功释放,并且该锁的条目被从锁表中删除。但是,当它即将释放第二个锁时,它会失败,只有一个例外:

com.amazonaws.AbortedException: 在com.amazonaws.internal.SdkFilterInputStream.abortIfNeeded(SdkFilterInputStream.java:53)~[application.jar:?] 在com.amazonaws.internal.SdkFilterInputStream.markSupported(SdkFilterInputStream.java:117)~[application.jar:?] 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1026)~[application.jar:?] 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:745)~[application.jar:?] 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:719)~[application.jar:?] 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:701)~[application.jar:?] 在com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:669)~[application.jar:?] 在com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:651)~[application.jar:?] 在com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:515)~[application.jar:?] 在com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:3609)~[application.jar:?] 在com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:3578)~[application.jar:?] 在com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:3567)~[application.jar:?] 在com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeEletem(AmazonDynamoDBClient.java:1161)~[application.jar:?] 在com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.deleteItem(AmazonDynamoDBClient.java:1132)~[application.jar:?] 在com.amazonaws.services.dynamodbv2.AmazonDynamoDBLockClient.releaseLock(AmazonDynamoDBLockClient.java:631)~[application.jar:?] 在com.amazonaws.services.dynamodbv2.AmazonDynamoDBLockClient.releaseLock(AmazonDynamoDBLockClient.java:581)~[application.jar:?]

无法找出原因。任何线索将不胜感激!
谢谢。

我也有同样的错误,但在尝试创建表时,它似乎是随机的
Class Test {

public void testLocking() {

String pid;
String pid2;

//creating the lock and then using it as :

AcquireLockOptions optionsMain = AcquireLockOptions.builder(pid).build();
Optional<LockItem> lockItemMain = Optional.empty();
try {
 lockItemMain = lockClient.tryAcquireLock(optionsMain);
 if (lockItemMain.isPresent()) {

 // do some operation and store the object in dynamodb:

   dynamoDBMapper.save();

   } catch (LockNotGrantedException e) {
    //logging.
   }
   finally {
      if (lockItemMain.isPresent()) {
       logger.debug("Releasing the lock 1 :: ");
       boolean status = lockClient.releaseLock(lockItemMain.get());
       logger.info(LOCK_STATUS_STRING, status);
      }
    }
  }

AcquireLockOptions optionsTemp = AcquireLockOptions.builder(pid2).build();
Optional<LockItem> lockItemTemp = Optional.empty();
try {
lockItemTemp = lockClient.tryAcquireLock(optionsTemp);
if (lockItemTemp.isPresent()) {

// do some operation and store the object in dynamodb:

dynamoDBMapper.save();

} catch (LockNotGrantedException e) {
 //logging.
}
finally {
      if (lockItemTemp.isPresent()) {
        logger.debug("Releasing the lock 2 :: ");
        boolean status = lockClient.releaseLock(lockItemTemp.get());
        logger.info(LOCK_STATUS_STRING, status);
       }
      }
     }    
    }
   }