Commit confirmed initiated rollback shows extra changes as uncommitted

  1. In a config exclusive session, we changed a leaf param, let’ say ‘param1’ and then committed (normal commit operation) and closed the session.
  2. In another config exclusive session, changed another leaf param, ‘param2’ and did "“commit confirmed 5”. Exited the session and did not confirm commit for 5 mins.
  3. As expected, got a message about commit being rolled back because of timeout.
  4. Again opened another config exclusive and chose ‘not to discard’ uncommitted changes.
  5. However, ‘show configuration diff this’ shows both param2 (expected) and param1 (unexpected) as uncommitted changes. Also, there is no config loss since the param1 change done in step 1) remains intact. Only issue is why it’s being shown as uncommitted when it was not changed in the session where ‘commit confirmed 5’ command was fired.
  6. Able to reproduce at will in both confd 7.3.2 and confd 8.0
  7. The logs are not helping to suggest what could be wrong.

I suggest you test with the latest ConfD, 8.0.14. I cannot reproduce the issue with that version.

Actually there is one more data point. We are able to reproduce it always but only when a specific config schema is put and not able to reproduce on another system where a different schema is loaded.

We are in the process of upgrading to 8.0.14, but can you also let us know if there are some specific debug logs that can be enabled which may be helpful in debugging in case we see the issue with 8.0.14 as well.

The developer log with log level set to trace in confd.conf will provide the debug info you need.

hi @cohult - The issue is reproduced by my colleague using confd 8.0.14 as well and the devel logs have no clue. As I mentioned earlier, we see this issue in only one of out of the two applications that are deployed and the schemas for both the applications differ.

So this is somehow related to schema. I dug a bit further. Let me re-iterate the steps from my original description so that I can explain better.

  1. In a config exclusive session, we changed a param, let’ say ‘param1’ and then committed (normal commit operation) and closed the session.
  2. In another config exclusive session, changed another param, ‘param2’ and did "“commit confirmed 5”. Exited the session and did not confirm commit for 5 mins. As expected, got a message about commit being rolled back because of timeout.
  3. Again, opened another config exclusive and chose ‘not to discard’ uncommitted changes. However, ‘show configuration diff this’ shows both param2 (expected) and param1 (unexpected) as uncommitted changes.

Now, I observed that the param1 is defined as a container (within lists) with type as choice (see example below). Can this cause the behaviour that we are seeing? Also, both param1 and param2 are defined within the same parent module but different sub-modules

list l1
{
   list l2
   {
      container param1
                {
                    choice param1Choice
                    {
                        leaf choice1
                        {
                            type empty;
                        }
                        container choice2
                        {
                        ....
                        }
                  }
           }
     }
}
1 Like

Hello @navjot
It seems the issue might be related to the schema configuration, particularly with how param1 is defined with in a choice construct inside a list. This specific structure could be causing the unexpected behavior. Ensure both param1 and param2 are accurately defined and check for any interactions between their sub-modules. For further debugging, continue monitoring with the developer log at the trace level.

Hope you find it informative.

Cannot reproduce. There are no uncommitted changes as the confirmed commit operation was not confirmed, and therefore, the configuration change was rolled back.