I have a custom parser which is created and used to parse queries at several
places.
Instead of calling finalize each time, I have wrapped my custom parser in a
python class and keep a ref to it, delegating all calls and it works well,
without any weakrefs.
Do you think such behaviour is correct and please tell if it can create any
problems?
---------
import lucene
lucene.initVM(lucene.CLASSPATH, maxheap='1m')
class MyParser(object):
class _MyParser(lucene.PythonQueryParser):
def __init__(self,defaultField, analyzer):
super(MyParser._MyParser, self).__init__(defaultField, analyzer)
def __init__(self,defaultField, analyzer):
self._parser = self._MyParser(defaultField, analyzer)
def __getattr__(self, name):
return getattr(self._parser, name)
def __del__(self):
self._parser.finalize()
analyzer = lucene.StandardAnalyzer()
for i in xrange(100000):
if i%100==0:print i
customParser = MyParser("body", analyzer)
query = customParser.parse("anurag")
---------
----- Original Message ----
From: anurag uniyal <[EMAIL PROTECTED]>
To: Andi Vajda <[EMAIL PROTECTED]>; [email protected]
Sent: Friday, 11 January, 2008 4:55:43 PM
Subject: Re: [pylucene-dev] memory leak status
Hi,
I am using the latest trunk code but still I am facing
java.lang.OutOfMemoryError.
It may be due to problem in my code, so I have created and attached a sample
script which shows the problem.
In my script I am just adding a simple document in threads.
Without threading it works and also if document's field is UN_TOKENIZED it
works but TOKENIZED fails...
Thanks a lot!
Anurag
----- Original Message ----
From: Andi Vajda <[EMAIL PROTECTED]>
To: [email protected]
Sent: Friday, 11 January, 2008 4:26:53 AM
Subject: Re: [pylucene-dev] memory leak status
On Thu, 10 Jan 2008, Andi Vajda wrote:
> I think I'm going to be adding support for the manual way via
> finalize() shortly.
This just got checked in to rev 377.
The test/test_PythonDirectory.py tests can now be run in an endless loop
without leakage. See this tests' sources for an example of finalize() use.
> python test/test_PythonDirectory.py -loop
I'm still hoping to find a reliable way to automate this....
To rebuild PyLucene with this change, you also need to rebuild jcc.
Andi..
_______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev
Chat on a cool, new interface. No download required. Click here.
-----Inline Attachment Follows-----
import os
import sys
import threading
import lucene
lucene.initVM(lucene.CLASSPATH, maxheap='5m')
class MyDocument(lucene.Document):
indexType = lucene.Field.Index.UN_TOKENIZED # TOKENIZED fails
def __init__(self):
lucene.Document.__init__(self)
self.add(lucene.Field("body", "what a body", lucene.Field.Store.YES,
MyDocument.indexType))
class DocThread(threading.Thread):
def __init__(self, writer):
threading.Thread.__init__(self)
self.writer = writer
self.error = None
def run(self):
try:
lucene.getVMEnv().attachCurrentThread()
self.writer.addDocument(MyDocument())
except Exception,e:
self.error = e
def main():
_store = lucene.FSDirectory.getDirectory("/tmp/index/", True)
_writer = lucene.IndexWriter(_store, lucene.StandardAnalyzer(), True)
for i in xrange(500):
if i%100 == 0: print i
t = DocThread(_writer)
t.start()
t.join()
if t.error:
print t.error
break
main()
print "lucene.Field.Index.UN_TOKENIZED works but TOKENIZED fails..."
MyDocument.indexType = lucene.Field.Index.TOKENIZED
main()
Bollywood, fun, friendship, sports and more. You name it, we have it on
http://in.promos.yahoo.com/groups _______________________________________________
pylucene-dev mailing list
[email protected]
http://lists.osafoundation.org/mailman/listinfo/pylucene-dev