aquireLock throws exception

I use this code to generate a custom auto sequence value, which the user can set the starting value for:

function ggentransid(pctransid_type)
{

	var ofsctl = databaseManager.getFoundSet(currentcontroller.getServerName(),'c6ctl')	
	ofsctl.loadAllRecords()
	ofsctl.setSelectedIndex(1)

	while(!databaseManager.acquireLock(ofsctl,1,'transid_lock'))
	{
	   application.sleep(1000)
	}
	databaseManager.refreshRecordFromDatabase(ofsctl,1)
	var loctlrec = ofsctl.getRecord(1)

	if (pctransid_type == 'P')
	{	
	loctlrec.c6paytransid += 1;
	globals.gsave_record(loctlrec)
	var lctransid = loctlrec.c6paytransid
	databaseManager.releaseAllLocks('transid_lock');	
	}
	else
	{
	loctlrec.c6chgtransid += 1;
	globals.gsave_record(loctlrec)
	var lctransid = loctlrec.c6chgtransid
	databaseManager.releaseAllLocks('transid_lock');	
	}		
	return lctransid+'' // convert ot string
}

It seems to me the aquireLock loop should repeat infinitely if the lock cannot be acquired. But instead, a Servoy exception occurs, the user gets a message, and a new ID is not generated. Any ideas?

Problem solved and lesson learned - it’s not the code, security was set up on the tables that stored the last sequence used that prohibited users from updating it.