docs: private void completeTransaction(final String txId, String wsName) {
          getWorkspace().clear();
          // reset the ws cache to the shared (global one)
          setWorkspaceCache(sharedWorkspaceCache());
          // and clear some tx specific data
          COMPLETE_FUNCTION_BY_TX_AND_WS.compute(txId, (transactionId, funcsByWsName) -> {
              funcsByWsName.remove(wsName);
              if (funcsByWsName.isEmpty()) {
                  // this is the last ws cache we are clearing for this tx so mark all the keys as unlocked
                  LOCKED_KEYS_BY_TX_ID.remove(txId);
                  // and remove the map 
                  return null;                
              }
              // there are other ws caches which need clearing for this tx, so just return the updated map
              return funcsByWsName;
          });  
      }