Amazonica DynamoDB Atomic Counter

517 views
Skip to first unread message

ma...@datasnap.io

unread,
Sep 17, 2014, 9:44:04 PM9/17/14
to clo...@googlegroups.com
Has anyone used Amazonica to implement an atomic counter in DynamoDB?

I plan on having a Dynamo table with only one entry, something that looks like {"id": "counter", "count": 28734}, where the count acts as an atomic counter. Then use the update-item function to increment the count, regardless of it's value.

I'm struggling to formulate the correct amazonica.aws.dynamodb/update-item function call.

I have something like this currently:

> (dynamo-client/put-item cred
:table-name "atomic-counter"
:item {:id "counter" :count 0})
{:consumed-capacity-units 1.0}
> (dynamo-client/get-item cred
:table-name "atomic-counter"
:key "counter")
{:item {:count "0", :id "counter"}, :consumed-capacity-units 0.5
> (dynamo-client/update-item cred
:table-name "atomic-counter"
:key "counter"
:attributeUpdates {:count "add"})
UnsupportedOperationException nth not supported on this type: Character clojure.lang.RT.nthFrom (RT.java:857) 

I've tried a few other variations on the value for attributeUpdates.count.

Any help would be greatly appreciated!

ma...@datasnap.io

unread,
Sep 17, 2014, 10:29:17 PM9/17/14
to clo...@googlegroups.com
If anyone is interested, my solution was:

> (dynamo-client/update-item cred
:table-name "atomic-counter"
:key "counter"
:attributeUpdates {:count {:value 1 :action "ADD"}})
{:consumed-capacity-units 1.0}
> (dynamo-client/get-item cred
:table-name "atomic-counter"
:key "counter")
{:item {:count "1", :id "counter"}, :consumed-capacity-units 0.5}
Reply all
Reply to author
Forward
0 new messages