Specified iterator was dropped

We’re using index-pull to generate reports, using avet on an inst attribute. For larger date ranges (year at a time in this case), we are seeing this exception:

Execution error (ExceptionInfo) at datomic.client.api.async/ares (async.clj:58).\nSpecified iterator was dropped\n"

after running for 30 or so minutes (and there were multiple running). Sounds like some resource on the server is getting cleaned up before we’re done. We had been thinking about chopping this process up, so that it was always dealing with some time frame we knew was manageable - a day or week for example - and then aggregating those results, but I wanted to check in and make sure there wasn’t something else we were missing.

Does that sound like a reasonable strategy for avoiding this exception?

I’ve been experimenting with iterating over the same time range by breaking the range up into days, starting an index-pull at the beginning of each day and taking while we’re still in that day. This works, but I periodically get Specified iterator was dropped errors doing this as well. I could retry these, because the time frame is smaller, but I don’t know how to gauge if starting so many iterators is a problem.

Is this problem related to the size of the index?


Hi Caleb,

This error indicates that the server dropped the query result for this query.

This could be because you didn’t return for the result soon enough, but could also be caused by insufficient resources on the instance.

Are you running other workloads against the same system (query group or primary compute group)? If so, those other workloads could be “out-competing” your index-pull report process for resources on the node(s).

Thanks, Marshall. It does seem like a resource contention problem, because I get pretty different results in terms of timing depending on when I run these jobs.

If I want to isolate these jobs to a query group to run at particular times of the day, how does that effect Datomic Cloud costs? Are licensing costs tied to the running instances? So if I have a query group with no running instances, am I not paying anything extra for that query group?

Yes, costs for Datomic Cloud are based on the hours of running instances. This means that you only pay for a query group while it has instances running. If you scale it back to 0 instances (in the ASG, for instance), there is no additional charge. See https://docs.datomic.com/cloud/tech-notes/turn-off.html

Great. Thank you for confirming