Ext_contains locking (Exclaibur Text blade)
Posted in 2010
Topics: General Discussion
Hi All, We are using the Excalibur Text Search datablade, and are running into an error during Inserts. The error reads: "A select is in progress, so updating the index is not allowed". Now, the obvious answer is that a "Select for Update" cursor is locking the table, however I have been guaranteed that none of the programs use Update cursors. (I am new to this company, so I can only take their word for it) We do have many regular Selects that utilize the 'ext_contains' search from the datablade. Is it possible that ext_contains creates Locks on the Indexes? Thanks, Michael Hoffman
Hi All, Nevermind. The datablade works exactly as expected: recreates indexes only when requested. Normal querying does not lock anything. The lockouts we were experiencing are being caused by uncommitted transactions corrupting the connection threads -- the drawback to using connection pooling. Thanks anyway, Michael
ARGH!!! The locking issue is now DEFINITELY related to the Excalibur
datablade, in the etx_GetHilite function!
Has anyone else run across this issue?
The code to select records utilizes the etx_GetHilite blade routine. If
another user tries to insert anything into the CLOB, the insert fails with a
locking error.
A select is in progress, so updating the index is not allowed.Error Code:-937
Also, I can see the query creating a Transaction, via onstat -x:
14f0f8ad8 A-B-- 14f0bdbd8 1175 10346:0x1314018 10347:0x1714c4 COMMIT
This is a simple Select query:
select p.content_id,
p.xml,
etx_ViewHilite(etx_GetHilite(p.xml, rc),
"<span class=highlightWordsOfContext>",
"</span>") highlight,
[...]
Commenting out the etx_ViewHilite line returns results with no Transaction. (I
also modified the query to run just the etx_GetHilite piece, and a transaction
was started).
How do I prevent etx_GetHilite from creating a transaction and locking the
indexes?
Thanks!
Michael Hoffman