Comments (5)
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.
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.
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.
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)
- Memory leak while fetching items from a multi key list when specified only one key is xpath HOT 5
- copy-config works from candidate to startup (shouldn't be allowed based on RFC8342) HOT 10
- Subscribe for changes with different users HOT 11
- Module installation kill sysrepo and now even (sysrepoctl -l) is not working HOT 2
- double lock when running sr_install_module on QNX HOT 3
- Config ipv4 address(openconfig-interface-ip.yang) failed Error "Unexpected valid opaque node list "address" HOT 8
- taxonomy of sysrepo CLI-ish HOT 13
- Internal error while subscription to a notif and processing it at the same time HOT 2
- Netopeer2-server crash when send <edit_config> RPC with problems HOT 2
- Is it possible to have concurrent candidate datastore for each netconf session/ user? HOT 3
- sr_get_node fails when pointing to a leaf-list path HOT 6
- About sr_oper_get_subscribe: entering callback function multiple times HOT 2
- Error Encountered While Attempting to Deviate Leaf Attributes in YANG File HOT 1
- Segmentation fault - Program terminated with signal 11, Segmentation fault. HOT 3
- SSH and TLS Callhome HOT 1
- Y2038 problem with date-and-time HOT 3
- Module ietf-yang-instance-data caused sysrepo to fail HOT 4
- Segmentation fault when pushing operational data HOT 2
- sr_oper_get_items_subscribe not called
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sysrepo.