In some rare cases you might experience issues related to LSW_LOCK table in IBM BPM and this can result in inability to login to Portal of one or few users and restart will not help either.
Typical error you will see in the logs would look similar to this (might look different depending on which database you use in your BPM environment)
00000250 wle E CWLLG2229E: An exception occurred in an EJB call. Error: PreparedStatementCallback; SQL [INSERT INTO LSW_LOCK (LOCK_ID, DESCRIPTION) VALUES (?,?)]; Lock request time out period exceeded.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Lock request time out period exceeded.
org.springframework.dao.CannotAcquireLockException: PreparedStatementCallback; SQL [INSERT INTO LSW_LOCK (LOCK_ID, DESCRIPTION) VALUES (?,?)]; Lock request time out period exceeded.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: Lock request time out period exceeded.
The question is - what to do?
First of all let's understand what this table is used for in IBM BPM.
IBM BPM inserts into this table in a number of different reasons. One of them is when you login to Portal to make sure that in clustered environment there is no interference if you try to login from different nodes at the same time.
So, what may happen is - when the BPM server crashes for some reason the lock remains in this table for your user and it's not removed while it should and user cannot login anymore because BPM thinks you're already there.
Another use case where IBM BPM inserts into this table is when you perform a deployment, so, you won't be able to run the same deployment at the same time twice.
That being said, whenever you see an error as shown above related to LSW_LOCK table try to select records from the table in question and see if there is a record with the user id's that are having issues with login into BPM Portal. If you're running on MSSQL then you might need to select with (NOLOCK) otherwise MSSQL won't let you select from the table that is locked out already.
If you will find a record in question then the next steps are:
1) shutdown BPM.
2) take a backup of this table or full backup of BPMDB.
3) remove the record.
4) start BPM - you should now be able to login.