You can use priorities that you set when calling cdb_subscribe() to control the order of the subscriber notifications. It is up to the application to ensure that the priorities are set so that the Consistency (The ‘C’ in ACID) part of the (NETCONF) transaction is handled properly by the application.
• Transactions are all-at-once
• There is no internal order inside a transaction, it is a set of changes, not a sequence
• Implies that { create A, create B } and { create B, create A } are identical
• Implies that a system behaving differently with respect to the sequence is not transactional
From the confd_lib_cdb man page:
int cdb_subscribe(int sock, int priority, int nspace, int *spoint, const char *fmt, …);
The priority value is an integer. When CDB is changed, the change is performed inside a transaction. Either a commit operation from the CLI or a candidate-commit operation in NETCONF means that the running database is changed. These changes occur inside a ConfD transaction. CDB will handle the subscriptions in lock-step priority order. First all subscribers at the lowest priority are handled, once they all have replied and synchronized through calls to cdb_sync_subscription_socket() the next set - at the next priority level is handled by CDB. Priority numbers are global, i.e. if there are multiple client daemons notifications will still be delivered in priority order per all subscriptions, not per daemon.