Multiple call to get_object() when trying to create a new list instance from CLI

Hi,

I kind of facing problem or want to understand the way how get_next() and get_object gets invoked

I’m trying to create a list instance from CLI, and I have implemented a CLI command below

aaa authentication users username TestUser PhoneNumber 1234

upon execution of the above command, I see the below call traces, my get_next & get_object and create callbacks are getting called properly but i see calls to get_next and get_object repeatedly

daemon.debug transaction-app: TRACE CALL trans init(thandle=548,mode=“rw”,db=running) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, -1) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, 1) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, 2) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, 3) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, 4) → CONFD_OK

daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, -1) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, 1) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, 2) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, 3) → CONFD_OK

daemon.debug transaction-app: TRACE CALL data get_next(thandle=548, /aaa/authentication/users/username, 4) → CONFD_OK

daemon.debug transaction-app: TRACE CALL data get_object(thandle=548,/aaa/authentication/users/username{sajid}) (NOEXISTS) → CONFD_OK

daemon.debug transaction-app: TRACE CALL data get_object(thandle=548,/aaa/authentication/users/username{sajid}) (NOEXISTS) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_object(thandle=548,/aaa/authentication/users/username{sajid}) (NOEXISTS) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_object(thandle=548,/aaa/authentication/users/username{sajid}) (NOEXISTS) → CONFD_OK

daemon.debug transaction-app: TRACE CALL data get_object(thandle=548,/aaa/authentication/users/username{sajid}) (NOEXISTS) → CONFD_OK

daemon.info confd[31311]: audit user: secadmin/13 CLI ‘aaa authentication users username sajid PhoneNumber 1234’
daemon.debug transaction-app: TRACE CALL data get_object(thandle=548,/aaa/authentication/users/username{sajid}) (NOEXISTS) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data get_object(thandle=548,/aaa/authentication/users/username{sajid}) (NOEXISTS) → CONFD_OK
daemon.debug transaction-app: TRACE CALL data create(thandle=548,/aaa/authentication/users/username{sajid}) → CONFD_ACCUMULATE

My concern is why confd

  1. calling get_next() twice even though have replied full set of my list entries
  2. why is it calling get_object multiple times even the DP has replied confd_data_reply_not_found(tctx);, is it no supposed to call create immediately after getting NOEXIST from a call to get_object()

See Same callback is getting invoked for both get & set operation - #14 by cohult