"Lock request time out period exceeded."
All I am doing is running a readonly SELECT where I fetch around 1000 records for processing. I basically loop around and do this 'Select 1000 records', 'Process those records', get the next 1000 records, etc.
On the Unidac Query, I have
Lockmode=lmNone
ReadOnly=true
Options.QueryRecCount=true
On the Connection component, the LockTimeout = 9000
I am not using any specific Transaction stuff - just the defaults. I am using this basic code below to attempt a retry of the SELECT after an error message with the word 'Lock' in it. So far I get the exception error ok, but the loop does not repeat. Still working on that but it is an error I cannot duplicate, so it is difficult to work with.
Code: Select all
blCanRetry := true;
repeat
inc(ii);
try
query.open;
ii := 99; //quit
except
on e: exception do
begin
blCanRetry := (pos('LOCK', uppercase(e.message)) > 0);
sleep(500);
end;
end;
until (ii >= 20) and blCanRetry;
Using UniDac 7.4.11 in Windows 7 and Delphi XE7