From: <tho...@us...> - 2010-10-18 12:04:01
|
Revision: 3805 http://bigdata.svn.sourceforge.net/bigdata/?rev=3805&view=rev Author: thompsonbry Date: 2010-10-18 12:03:54 +0000 (Mon, 18 Oct 2010) Log Message: ----------- Resolution for https://sourceforge.net/apps/trac/bigdata/ticket/185. The zookeeper locks are not reentrant. Since the full text index is in the namespace of the lexicon relation, the full text index must not attempt to acquire the zlock for that relation when destroying the full text index. FullTextIndex#destroy() has been overridden in BigdataRDFFullTextIndex to avoid attempting to acquire a non-reentrant lock already held by the caller. Modified Paths: -------------- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/BigdataRDFFullTextIndex.java Modified: branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/BigdataRDFFullTextIndex.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/BigdataRDFFullTextIndex.java 2010-10-17 13:10:51 UTC (rev 3804) +++ branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/lexicon/BigdataRDFFullTextIndex.java 2010-10-18 12:03:54 UTC (rev 3805) @@ -94,6 +94,26 @@ } + /** + * The full text index is currently located in the same namespace as the + * lexicon relation. However, the distributed zookeeper locks (ZLocks) + * are not reentrant. Therefore this method is overridden to NOT acquire + * the ZLock for the namespace of the relation when destroying the full + * text index -- that lock is already held for the same namespace by the + * {@link LexiconRelation}. + */ + @Override + public void destroy() { + + if (log.isInfoEnabled()) + log.info(""); + + assertWritable(); + + getIndexManager().dropIndex(getNamespace() + "." + NAME_SEARCH); + + } + public void index(int capacity, Iterator<BigdataValue> valuesIterator) { final TokenBuffer buffer = new TokenBuffer(capacity, this); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |