ResourceNotFoundException when creating storage using DynamoDbConnector · Issue #399 · eclipse-store/store · GitHub
More Web Proxy on the site http://driver.im/
You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Eclipse Store DynamoDbConnector doesn't seem to fully wait until DynamoDB table is created and available before using it. This results in ResourceNotFoundException raised by AWS SDK.
The problem appears only on the first execution when DynamoDB table is not available and needs to be created. Any subsequent executions complete normally.
Exception in thread "main" org.eclipse.serializer.persistence.exceptions.PersistenceException
at org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryFileHandler.writeTypeDictionary(PersistenceTypeDictionaryFileHandler.java:98)
at org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryFileHandler.writeTypeDictionary(PersistenceTypeDictionaryFileHandler.java:194)
at org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryFileHandler.storeTypeDictionary(PersistenceTypeDictionaryFileHandler.java:200)
at org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryExporter$Default.exportTypeDictionary(PersistenceTypeDictionaryExporter.java:87)
at org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryManager$Exporting.exportTypeDictionary(PersistenceTypeDictionaryManager.java:261)
at org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryManager$Exporting.synchUpdateExport(PersistenceTypeDictionaryManager.java:252)
at org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryManager$Exporting.registerRuntimeTypeDefinitions(PersistenceTypeDictionaryManager.java:318)
at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerManager$Default.synchUnvalidatedRegisterTypeHandlers(PersistenceTypeHandlerManager.java:671)
at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerManager$Default.registerTypeHandlers(PersistenceTypeHandlerManager.java:653)
at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerManager$Default.initialRegisterTypeHandlers(PersistenceTypeHandlerManager.java:696)
at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerManager$Default.synchInternalInitialize(PersistenceTypeHandlerManager.java:980)
at org.eclipse.serializer.persistence.types.PersistenceTypeHandlerManager$Default.initialize(PersistenceTypeHandlerManager.java:952)
at org.eclipse.store.storage.embedded.types.EmbeddedStorageFoundation$Default.createEmbeddedStorageManager(EmbeddedStorageFoundation.java:796)
at org.eclipse.store.storage.embedded.types.EmbeddedStorageFoundation.start(EmbeddedStorageFoundation.java:233)
at org.example.Main.main(Main.java:62)
Caused by: software.amazon.awssdk.services.dynamodb.model.ResourceNotFoundException: Requested resource not found (Service: DynamoDb, Status Code: 400, Request ID: B96AUV8VKGGC4B8K1HSR2FF...)
at software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handleErrorResponse(CombinedResponseHandler.java:124)
at software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handleResponse(CombinedResponseHandler.java:81)
at software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handle(CombinedResponseHandler.java:59)
at software.amazon.awssdk.core.internal.http.CombinedResponseHandler.handle(CombinedResponseHandler.java:40)
at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:50)
at software.amazon.awssdk.core.internal.http.pipeline.stages.HandleResponseStage.execute(HandleResponseStage.java:38)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:74)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptTimeoutTrackingStage.execute(ApiCallAttemptTimeoutTrackingStage.java:43)
at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:79)
at software.amazon.awssdk.core.internal.http.pipeline.stages.TimeoutExceptionHandlingStage.execute(TimeoutExceptionHandlingStage.java:41)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:55)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallAttemptMetricCollectionStage.execute(ApiCallAttemptMetricCollectionStage.java:39)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.executeRequest(RetryableStage.java:93)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:56)
at software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:36)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:53)
at software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:35)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:82)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:62)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:43)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:50)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallMetricCollectionStage.execute(ApiCallMetricCollectionStage.java:32)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:206)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
at software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
at software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:210)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:103)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.doExecute(BaseSyncClientHandler.java:173)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.lambda$execute$1(BaseSyncClientHandler.java:80)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.measureApiCallSuccess(BaseSyncClientHandler.java:182)
at software.amazon.awssdk.core.internal.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:74)
at software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:45)
at software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:53)
at software.amazon.awssdk.services.dynamodb.DefaultDynamoDbClient.transactWriteItems(DefaultDynamoDbClient.java:6253)
at org.eclipse.store.afs.aws.dynamodb.types.DynamoDbConnector$Default$BatchWrite.write(DynamoDbConnector.java:549)
at org.eclipse.store.afs.aws.dynamodb.types.DynamoDbConnector$Default$BatchWrite.finish(DynamoDbConnector.java:539)
at org.eclipse.store.afs.aws.dynamodb.types.DynamoDbConnector$Default.internalWriteData(DynamoDbConnector.java:509)
at org.eclipse.store.afs.blobstore.types.BlobStoreConnector$Abstract.writeData(BlobStoreConnector.java:833)
at org.eclipse.store.afs.blobstore.types.BlobStoreIoHandler$Default.specificWriteBytes(BlobStoreIoHandler.java:515)
at org.eclipse.store.afs.blobstore.types.BlobStoreIoHandler$Default.specificWriteBytes(BlobStoreIoHandler.java:59)
at org.eclipse.serializer.afs.types.AIoHandler$Abstract.writeBytes(AIoHandler.java:1023)
at org.eclipse.serializer.afs.types.AWritableFile.writeBytes(AWritableFile.java:90)
at org.eclipse.serializer.persistence.types.PersistenceTypeDictionaryFileHandler.writeTypeDictionary(PersistenceTypeDictionaryFileHandler.java:89)
... 14 more
Process finished with exit code 1
Verify that DynamoDB table is created and active and run the code again.
Notice that it completes normally and stores data properly.
Expected behavior
DynamoDBConnector should wait until DynamoDB table is fully created and in active state so the program would complete without exception when executed for the first time.
The text was updated successfully, but these errors were encountered:
Environment Details
Describe the bug
Eclipse Store DynamoDbConnector doesn't seem to fully wait until DynamoDB table is created and available before using it. This results in ResourceNotFoundException raised by AWS SDK.
The problem appears only on the first execution when DynamoDB table is not available and needs to be created. Any subsequent executions complete normally.
To Reproduce
Notice the following exception:
Expected behavior
DynamoDBConnector should wait until DynamoDB table is fully created and in active state so the program would complete without exception when executed for the first time.
The text was updated successfully, but these errors were encountered: