Apama Cumulocity Connection Concurrency

Hi all,
I’m trying to optimize a bunch of custom EPL code running with the Cumulocity Connectivity and I want to optimize the inbound/outbound handling. I had a look at the doc but it’s not clear for me what this means:

  • Any read request waits for all outstanding update requests before starting.
  • Any update request waits for all outstanding read requests before starting.

Is this per-device / MO ? Or is it actually all queries and all updates?

  • It’s all queries and all updates — not per device. Any read waits for every update that is still in progress, no matter which device (managed object) those updates were for, and any update waits for all reads still in progress.

  • The per-device rule only applies between updates: updates to different devices can run at the same time, and updates to the same device are done one after another in order.

Thanks. What does Update mean here?
Will e.g. creating an Operation (or Event) for a device block any Read request for other devices?
I guess “Read” is anything that uses a “Find**” call?

“Update” means any request that isn’t an HTTP GET — so POST/PUT/DELETE. In EPL: ManagedObject, Alarm, Event, Operation, Measurement, MeasurementFragment, SendSMS, SendEmail, and GenericRequest with a POST/PUT/DELETE method.

“Read” is anything that becomes a GET. Mostly the Find* calls as you guessed, plus GetCurrentUser, RequestAllDevices, and GenericRequest with a GET method.

And yes — creating an Operation or Event is an update, so any read issued while it is still in progress will wait for it, including reads for other devices. The device plays no part in this rule.