It is not possible for a component within a production to update the production, which is what you are trying to do using the third parameter of EnableConfigItem equal to 1. That is why you are receiving ERROR <Ens>ErrJobRegistryNotClean (the process trying to update the production is trying to update itself).

You should update the production by running UpdateProduction via Job command, as follows:

Set tSC = ##class(Ens.Director).EnableConfigItem(pConfigItemName,0,0)
Set tSC = ##class(Ens.Director).EnableConfigItem(pConfigItemName,1,0)
job ##class(Ens.Director).UpdateProduction()

Hope this helps.

This message is logged in cconsole.log (and alerts.log) when, during a transaction rollback, Cache finds a global node with an unexpected value, different from the value it had when the transaction started. The process keeps the unexpected value and logs the message. And your system won't hang because of that.

The following commands can be used to produce the case:

USER>s ^mytest = "before transaction"
USER>tstart
TL1:USER>k ^mytest
TL1:USER>s ^mytest = "inside transaction"

In a separate terminal session, run set ^mytest = "separate terminal"

TL1:USER>trollback
USER>w ^mytest
​separate terminal

cconsole.log

02/22/11-13:09:09:250 (4832) 2 Skipping SET (kill) due to compare and swap failed on
^["^^d:\isc\c2010_2_0_454_0\mgr\user\"]mytest for records in d:\isc\c2010_2_0_454_0\mgr\user\
addr=158748
02/22/11-13:09:09:250 (4832) 2 Skipping KILL due to global
^["^^d:\isc\c2010_2_0_454_0\mgr\user\"]mytest already exist for records in
d:\isc\c2010_2_0_454_0\mgr\user\
addr=158352