Question
Ali Chaib · Apr 24, 2018

ERROR #5803: Failed to acquire exclusive lock on instance of '%Studio.ProjectItem'

Hi,

I'm using ensemble and when I try to export from the production I get the following error: 

ERROR #5803: Failed to acquire exclusive lock on instance of '%Studio.ProjectItem'

May you please help me?

0
0 1,573
Discussion (10)2
Log in or sign up to continue

so either you or someone else just has it opened in a different Studio / Session.

Hey Robert,

This was not the case, as we made sure no-one was active. It even occurred on multiple namespaces that exist on the same server. 

Any other possible reason?

I was the only one who's using Ensemble/Studio  with only one session 

The the description is somewhat vague:

Exclusive LOCK happens on process basis not by user !
It's not clear where you run "export from the production". Portal,Terminal, Studio, ...

if you are in Studio and run "export from the production" in MgmtPortal or Terminal then you have 2 processes.
1 has the lock the other can't get it.
 

take a look in MgmtPortal >  System Operation > Locks  > View Locks

Now you should see who is owning your lock 

I'm using Ensemble to export :

I didn't find any owner who's using the reference %Studio.ProjectItem in "view locks" page

From your screenshot, I see that you have a running production.

#1) ENSEMBLE has an internal locking not seen in LOCKTABLE.
#2) If you try to export the actual running production this might be you might get in conflict with this internal protection.

I found no note that you can't export a running production.
Though I've never heard of such attempt as a production consists many dynamic moving parts.

Suggestion: STOP the production you want to export and then try the export again.

I've stopped the production and I've tried to export but I've faced the same problem

I'm using 2016.2.0.736.0

My final idea:
- restart the whole ENSEMBLE instance to get rid of anything that might be hidden/hanging around in memory.
     It's not my preferred solution, but with the actual information, nothing else seems to work.
     If someone starts screaming you may have identified you opponent that blocks you. 
- if the problem persists further then contact WRC 

I did more research on %Studio.ProjectItem:

In the actual version there is no chance to such a lock situation.
Export is using a lot of  %Studio classes. So either a Studio instance or some other editing blocks something.

BTW: what version of ENSEMBLE do you use ?

 

I finally succeeded in reproducing your error

ERROR #5803: Failed to acquire exclusive lock on instance of '%Studio.ProjectItem'

The conditions are somewhat strange and you should take an exact check what applies in your case.
The story:

  • ENSEMBLE uses %Studio.Project to manage the export.
  • every item to be exported gets locked. The global  name to look for is ^oddPROJECT
  • if the number of items exceeds a threshold the whole Project storage will be locked
  • this is NOT possible if someone else has any other project in this namespace locked for him
    then the export will fail and you get the ERROR message. 

So try to find out in Terminal

  • USER>zn "%SYS"
    %SYS>write $system.SQL.GetLockThreshold()      ; most likely default => 1000

    xxxxxx
  • %SYS>d ^LOCKTAB
                       LOCK table entries at
                    16767728 bytes usable, 16774528 bytes available.
    Entry Process     X#   S#
    Flg   W# Item Locked
       1) 1016         1               ^["^^c:\intersystems\17e20\mgr\"]%SYS("CSP","Daemon")
       2) 6444         1               ^["^^c:\intersystems\17e20\mgr\"]ISC.LMFMON("License Monitor")
       3) 6752         1               ^["^^c:\intersystems\17e20\mgr\"]ISC.Monitor.System
       4) 12180        1               ^["^^c:\intersystems\17e20\mgr\"]TASKMGR
       5) 8568         1               ^["^^c:\intersystems\17e20\mgr\user\"]
    oddPROJECT("Ali")
     
    Command=>

Look if you see oddPROJECT

Next try to estimate the number of items your production will export.
If you get close to the dimension of  xxxxxx then you run most likely into your error.
Be aware that some components can create more than 1 entry. So your limit might be lower (70% ??)

You can increase the threshold in
MgmtPortal > System Admin > Configuration > SQL and Object Settings > General SQL Settings

ATTENTION:  If you set this value to high you risk an overrun of the LOCKTABLE.
        This blocks the whole instance.   Increasing the size of LOCKTABLE + Restart is then required. Or you set the limit t back.