Known Issues:

* If you retrieve state _and_ config data using RESTCONF or NETCONF `get`, a severe performance penalty occurs if you have large lists (eg ACLs). Workaround: disable `VALIDATE_STATE_XML` in `include/clixon_custom.h`.
This commit is contained in:
Olof hagsand 2020-02-14 15:16:17 +01:00
parent 76a4d31c4b
commit 5dd3243f66
3 changed files with 17 additions and 3 deletions

View file

@ -7,8 +7,11 @@
* C-api: Changed `clicon_session_id_get(clicon_handle h, uint32_t *id)` * C-api: Changed `clicon_session_id_get(clicon_handle h, uint32_t *id)`
* From a cli perspective this is a revert to 4.1 behaviour, where the cli does not immediately exit on start if the backend is not running, but with the new session-id function * From a cli perspective this is a revert to 4.1 behaviour, where the cli does not immediately exit on start if the backend is not running, but with the new session-id function
### Known Issues
* If you retrieve state _and_ config data using RESTCONF or NETCONF `get`, a severe performance penalty occurs if you have large lists (eg ACLs). Workaround: disable `VALIDATE_STATE_XML` in `include/clixon_custom.h`.
### Corrected Bugs ### Corrected Bugs
* Fixed: Enabling modstate (CLICON_XMLDB_MODSTATE), changing a revision on a yang, and restarting made the backend daemon exit at start (thanks Matt). * Fixed: If you enabled modstate (CLICON_XMLDB_MODSTATE), changed a revision in a yang spec, and restarted the backend daemon, it exit at start (thanks Matt).
* Also: ensure to load `ietf-yang-library.yang ` if CLICON_XMLDB_MODSTATE is set * Also: ensure to load `ietf-yang-library.yang ` if CLICON_XMLDB_MODSTATE is set
* Fixed: Pretty-printed XML using prefixes not parsed correctly. * Fixed: Pretty-printed XML using prefixes not parsed correctly.
* eg `<a:x> <y/></a:x>` could lead to errors, wheras (`<x> <y/></x>`) works fine. * eg `<a:x> <y/></a:x>` could lead to errors, wheras (`<x> <y/></x>`) works fine.

View file

@ -979,14 +979,22 @@ from_client_get(clicon_handle h,
} }
/* If not only-state, then read running config /* If not only-state, then read running config
* Note xret can be pruned by nacm below and change name and * Note xret can be pruned by nacm below and change name and
* metrged with state data, so zero-copy cant be used * merged with state data, so zero-copy cant be used
* Also, must use external namespace context here due to <filter stmt * Also, must use external namespace context here due to <filter stmt
*/ */
#ifdef VALIDATE_STATE_XML
if (xmldb_get0(h, "running", nsc, NULL, 1, &xret, NULL) < 0) { if (xmldb_get0(h, "running", nsc, NULL, 1, &xret, NULL) < 0) {
if (netconf_operation_failed(cbret, "application", "read registry")< 0) if (netconf_operation_failed(cbret, "application", "read registry")< 0)
goto done; goto done;
goto ok; goto ok;
} }
#else
if (xmldb_get0(h, "running", nsc, xpath, 1, &xret, NULL) < 0) {
if (netconf_operation_failed(cbret, "application", "read registry")< 0)
goto done;
goto ok;
}
#endif
/* If not only config, /* If not only config,
* get state data from plugins as defined by plugin_statedata(), if any * get state data from plugins as defined by plugin_statedata(), if any

View file

@ -66,9 +66,12 @@
#undef XPATH_LIST_OPTIMIZE #undef XPATH_LIST_OPTIMIZE
/*! Validate user state callback content /*! Validate user state callback content
* Use may register state callbacks using ca_statedata callback * Users may register state callbacks using ca_statedata callback
* When this option is set, the XML returned from the callback is validated after merging with the running * When this option is set, the XML returned from the callback is validated after merging with the running
* db. If it fails, an internal error is returned to the originating user. * db. If it fails, an internal error is returned to the originating user.
* If the option is not set, the XML returned by the user is not validated. * If the option is not set, the XML returned by the user is not validated.
* Note that enabling this option causes a large performance overhead for large lists, therefore it
* is recommended to enable it during development and debugging but disable it in production, until
* this has been resolved.
*/ */
#define VALIDATE_STATE_XML #define VALIDATE_STATE_XML