PerDPQueueProcessor forces release of lock even if not held - causes corrupt index

Description

Occurs: when an indexed entity is modified while another thread is re-indexing the index for that entity

Consequences: Hibernate Search calls "workspace.forceLockRelease();" in the catch-block of PerDPQueueProcessor#run - so the lock held by the batch indexer is forcefully released. That means the next entity index operation will write to the index causing the index to be corrupt.

First Exception - triggers forceLockRelease

second Exception - index is destroyed

Attachments

1

Activity

Show:

Christian Köberl November 7, 2010 at 4:48 PM

Thanks Emmanuel! Yes, this bug was only about the lock issue.

Emmanuel Bernard November 6, 2010 at 1:29 PM

is about making MassIndexer online friendly.

Emmanuel Bernard November 6, 2010 at 1:23 PM

I've fixed the corruption issue.
The idea of being able to run MassIndexer in parallel is a whole different feature, I will open a dedicated jira for it.

Emmanuel Bernard November 6, 2010 at 12:48 PM

I've got a fix + test ready.

Sanne Grinovero November 6, 2010 at 12:39 PM

correct.
we introduced the problem when adding the ErrorContextBuilder+handler

Fixed

Details

Assignee

Reporter

Components

Fix versions

Priority

Created August 12, 2010 at 2:45 PM
Updated January 27, 2015 at 10:20 PM
Resolved November 6, 2010 at 1:23 PM