Git Product home page Git Product logo

Comments (5)

jktjkt avatar jktjkt commented on July 22, 2024

I tried to bisect this. I kept libyang at the newest version (CESNET/libyang@03d6d6c1b), and I started my bisection run just on sysrepo. The first commit which started failing is 7ae1ce9, which sounds rather fishy.

from sysrepo.

michalvasko avatar michalvasko commented on July 22, 2024

Please help me reproduce it by modifying the new test, based on this information only it worked and I really do not have time to bisect your C++ tests. But the commit you found could break things because multiple calls of libyang functions were joined into a unified one, sometimes with minor changes in case all the tests were passing. An opportunity to add new ones now.

from sysrepo.

jktjkt avatar jktjkt commented on July 22, 2024

OK, I can identify the bug now. When an edit like the one above is pushed, all the individual leaf-list nodes that are below the second and third list instances have their XPath indexes set to [1]. Here's the reproducer:

#include <iostream>
#include <thread>
#include <sysrepo-cpp/Connection.hpp>

using namespace std::literals;

int main() {
    auto client = sysrepo::Connection{}.sessionStart();
    client.switchDatastore(sysrepo::Datastore::Operational);

    for (const auto id : {"velia-alarms:sensor-high-value-alarm", "velia-alarms:sensor-low-value-alarm", "velia-alarms:sensor-missing-alarm", "velia-alarms:sensor-nonoperational"}) {
        const auto prefix = "/ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='"s + id + "'][alarm-type-qualifier='']";
        for (const auto& resource : {"/ietf-hardware:hardware/component[name='ne:power']", "/ietf-hardware:hardware/component[name='ne:psu:child']", "/ietf-hardware:hardware/component[name='ne:temperature-cpu']"}) {
            client.setItem(prefix + "/resource", resource);
        }
    }
    std::cerr << "edit: " << *client.getPendingChanges()->printStr(libyang::DataFormat::JSON, libyang::PrintFlags::WithSiblings) << "\n";
    client.applyChanges();
    std::this_thread::sleep_for(1s);
    return 0;
}
  • install these two YANG models:
  • run sysrepo's sysrepo/examples/application_changes_example
  • in another shell, build and run the reproducer:
    • g++ -std=c++20 -Wall -O2 $(pkg-config --cflags --libs sysrepo-cpp libyang-cpp) bug3244.cpp -o bug3244
    • ./bug3244

Here's how the output is different between commits 73b3cfd (good) and 7ae1ce9 (bad):

--- good        2024-02-14 22:04:27.252958734 +0100
+++ bad 2024-02-14 22:04:51.004997235 +0100
@@ -1,121 +1,121 @@
 Application will watch for "ietf-alarms" changes in "operational" datastore.
 
  ========== READING RUNNING CONFIG: ==========
 
 /ietf-alarms:alarms (container)
 /ietf-alarms:alarms/control (container)
 /ietf-alarms:alarms/alarm-inventory (container)
 /ietf-alarms:alarms/alarm-list (container)
 
 
  ========== LISTENING FOR CHANGES ==========
 
 
 
  ========== EVENT change CHANGES: ====================================
 
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 
  ========== END OF CHANGES =======================================
 
  ========== EVENT done CHANGES: ====================================
 
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+CREATED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 
  ========== END OF CHANGES =======================================
 
  ========== CONFIG HAS CHANGED, CURRENT RUNNING CONFIG: ==========
 
 /ietf-alarms:alarms (container)
 /ietf-alarms:alarms/control (container)
 /ietf-alarms:alarms/alarm-inventory (container)
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier=''] (list instance)
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/alarm-type-id = velia-alarms:sensor-high-value-alarm
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/alarm-type-qualifier = 
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier=''] (list instance)
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/alarm-type-id = velia-alarms:sensor-low-value-alarm
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/alarm-type-qualifier = 
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier=''] (list instance)
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/alarm-type-id = velia-alarms:sensor-missing-alarm
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/alarm-type-qualifier = 
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier=''] (list instance)
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/alarm-type-id = velia-alarms:sensor-nonoperational
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/alarm-type-qualifier = 
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
 /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 /ietf-alarms:alarms/alarm-list (container)
 
 
  ========== EVENT change CHANGES: ====================================
 
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 
  ========== END OF CHANGES =======================================
 
  ========== EVENT done CHANGES: ====================================
 
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-high-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-low-value-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-missing-alarm'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:power']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[2] = /ietf-hardware:hardware/component[name='ne:psu:child']
-DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[3] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:psu:child']
+DELETED: /ietf-alarms:alarms/alarm-inventory/alarm-type[alarm-type-id='velia-alarms:sensor-nonoperational'][alarm-type-qualifier='']/resource[1] = /ietf-hardware:hardware/component[name='ne:temperature-cpu']
 
  ========== END OF CHANGES =======================================
 
  ========== CONFIG HAS CHANGED, CURRENT RUNNING CONFIG: ==========
 
 /ietf-alarms:alarms (container)
 /ietf-alarms:alarms/control (container)
 /ietf-alarms:alarms/alarm-inventory (container)
 /ietf-alarms:alarms/alarm-list (container)
 Application exit requested, exiting.

from sysrepo.

michalvasko avatar michalvasko commented on July 22, 2024

So I believe I have fixed this or at least vastly improved the situation because there are a few suspicious things. I have not managed to reproduce your output, only the deletion problem, creation log was fine (but I was using the latest devel so maybe that is why, but still strange). Also, in the callback for the deletion the positions are actually not reported (in prev_value) but since the diff is correct now, they can be learnt from the diff tree. I think they could be added without much trouble but it now probably behaves the same way it did before so I have not changed it. Let me know if it now works as expected.

from sysrepo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.