Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DynamoDB - is there a need to call shutdown()?

Considering this code:

QuerySpec spec = new QuerySpec()                
    .withKeyConditionExpression("#1 = :v1")
    .withNameMap(new NameMap().with("#1", "tableKey"))            
    .withValueMap(new ValueMap().withString(":v1", "none.json")); 


//connect DynamoDB instance over AWS
DynamoDB dynamoDB = new DynamoDB(Regions.US_WEST_2);

//get the table instance

String tableName = "WFMHistoricalProcessedFiles";

Table table = dynamoDB.getTable(tableName);   


ItemCollection<QueryOutcome> items = table.query(spec);  

//getting over the results
Iterator<Item> it = items.iterator(); 
Item item = null;
while (it.hasNext()) {
    item = it.next();
    System.out.println(item.toJSONPretty());
}

While using DynamoDB to make any Query or a Scan like in the example above.

Is there an actual need to call shutdown() in order to close the connection?

like image 578
roeygol Avatar asked Dec 18 '16 14:12

roeygol


People also ask

When should you not use DynamoDB?

Even though the solution has many benefits, one of the major drawbacks is that the solution lacks an on-premise deployment model and is only available on the AWS cloud. This limitation does not allow users to use DynamoDB for applications that require an on-premise database.

Which of the following are recommended practices when using DynamoDB transactions?

Best practices for transactionsEnable automatic scaling on your tables, or ensure that you have provisioned enough throughput capacity to perform the two read or write operations for every item in your transaction.

What happens when DynamoDB is throttled?

A throttled DynamoDB table can significantly impact the performance of your application and ultimately lead to loss of data. As developers, it is essential to have a good understanding of these limitations to prevent them.

How do I stop DynamoDB local?

To stop DynamoDB, press Ctrl+C at the command prompt. DynamoDB uses port 8000 by default.


1 Answers

The documentation seems pretty clear.

shutdown

void shutdown()

Shuts down this client object, releasing any resources that might be held open. This is an optional method, and callers are not expected to call it, but can if they want to explicitly release any open resources. Once a client has been shutdown, it should not be used to make any more requests.

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/AmazonDynamoDB.html#shutdown--

But to clarify what you specifically asked about:

in order to close the connection?

There is not exactly a "connection" to DynamoDB. It's accessed over HTTPS, statelessly, when requests are sent... so where your code says // connect DynamoDB instance over AWS, that really isn't accurate. You're constructing an object that will not acually connect until around the time you call table.query().

That connection might later be kept-alive for a short time for reuse, but even if true, it isn't "connected to" DynamoDB in any meaningful sense. At best, it's connected to a front-end system inside AWS that is watching for the next request and will potentially forward that request to DynamoDB if it's syntactically valid and authorized.

But this idle connection, if it exists, isn't consuming any DynamoDB resources in a way that should degrade performance of your application or others accessing the same DynamoDB table.

Good practice, of course, suggests that if you have the option of cleaning something up, it's potentially a good idea to do so, but it seems clearly optional.

like image 129
Michael - sqlbot Avatar answered Oct 26 '22 12:10

Michael - sqlbot