Terminate a NETCONF Session
In a NETCONF session, a client application’s attempt to lock the candidate configuration can fail because another user or application already holds the lock. In this case, the NETCONF server returns an error message that includes the username and process ID (PID) for the entity that holds the existing lock:
<rpc-reply xmlns="URN" xmlns:junos="URL"> <rpc-error> <error-severity>error</error-severity> <error-message> configuration database locked by: user terminal (pid PID) on since YYYY-MM-DD hh:mm:ss TZ, idle hh:mm:ss exclusive </error-message> </rpc-error> </rpc-reply> ]]>]]>
If the client application has the Junos OS maintenance
permission, it can end the session that holds the lock by emitting
the <kill-session>
and <session-id>
tag elements in an <rpc>
tag element. The <session-id>
element
specifies the PID obtained from the error message:
<rpc> <kill-session> <session-id>PID</session-id> </kill-session> </rpc> ]]>]]>
The NETCONF server confirms that it has terminated the other
session by returning the <ok/>
tag in
the <rpc-reply>
tag element:
<rpc-reply xmlns="URN" xmlns:junos="URL"> <ok/> </rpc-reply> ]]>]]>
We recommend that the application include logic for determining whether it is appropriate to terminate another session, based on factors such as the identity of the user or application that holds the lock, or the length of idle time.
When a session is terminated, the NETCONF server that is servicing the session rolls back all uncommitted changes that have been made during the session. If a confirmed commit is pending (changes have been committed but not yet confirmed), the NETCONF server restores the configuration to its state before the confirmed commit instruction was issued. For information about the confirmed commit operation, see Commit the Candidate Configuration Only After Confirmation Using NETCONF.
The following example shows how to terminate another session: