
|
If you were logged in you would be able to see more operations.
|
|
|
|
Environment:
|
Compass 2.2.0, Lucene 2.4.1, Terracotta 3.3.0
|
|
We received the following non-portable object exception while using Compass with Terracotta.
I believe it occurred when doing a delete by query using CompassSession.delete(CompassQuery)
2010-08-19 09:31:43,196 [btpool0-200] ERROR com.tc.object.bytecode.Manager - Exception thrown
com.tc.exception.TCNonPortableObjectError:
*******************************************************************************
Attempt to share an instance of a non-portable class referenced by a portable class. This
unshareable class has not been included for sharing in the configuration.
For more information on this issue, please visit our Troubleshooting Guide at:
http://www.terracotta.org/kit/reflector?kitID=default&pageID=npoe
Referring class : [Lorg.apache.lucene.index.Term;
Thread : btpool0-200
JVM ID : VM(4)
Non-included class: org.apache.lucene.index.Term
Under most circumstances, you should only be adding classes for your
application. If you are adding classes for frameworks or code not written by
you, then you should consider finding a Terracotta Integration Module (TIM)
that matches the framework you are using.
As an example, if the non-portable class listed below is
net.sf.ehcache.CacheManager, you should consider using the ehcache TIM.
It is also possible that some or all of the classes above are truly
non-portable, the solution is then to mark the referring field as transient.
For more information on non-portable classes see the Troubleshooting Guide.
Action to take:
1) Reconfigure to include the unshareable classes
- edit your tc-config.xml file
- locate the <dso> element
- add this snippet inside the <dso> element
<instrumented-classes>
<include>
<class-expression>org.apache.lucene.index.Term</class-expression>
</include>
</instrumented-classes>
- if there is already an <instrumented-classes> element present, simply add
the new includes inside it
*******************************************************************************
The object graph was:
Dumping object graph of non-portable instance of type org.compass.core.lucene.engine.transaction.support.job.TransactionJobs. Lines that start with !! are non-portable types.
org.compass.core.lucene.engine.transaction.support.job.TransactionJobs (id 0)
List jobs = (ArrayList, id 1)
[0] = (org.compass.core.lucene.engine.transaction.support.job.DeleteByQueryTransactionJob, id 2)
org.apache.lucene.search.Query query = (org.apache.lucene.search.MultiPhraseQuery, id 3)
float boost = 1.0
String field = "nameType"
ArrayList positions = (id 4)
[0] = 0
[1] = 1
int slop = 0
ArrayList termArrays = (id 5)
[0] = (org.apache.lucene.index.Term[], id 6)
!! [0] = (org.apache.lucene.index.Term, id 7)
String field = "nameType"
String text = "JNT"
!! [1] = (org.apache.lucene.index.Term, id 8)
String field = "nameType"
String text = "joint"
[1] = (org.apache.lucene.index.Term[], id 9)
!! [0] = (org.apache.lucene.index.Term, id 10)
String field = "nameType"
String text = "NM"
!! [1] = (org.apache.lucene.index.Term, id 11)
String field = "nameType"
String text = "name"
String subIndex = "identity_20"
Set subIndexes = (HashSet, id 12)
[0] = "identity_20"
|
|
Description
|
We received the following non-portable object exception while using Compass with Terracotta.
I believe it occurred when doing a delete by query using CompassSession.delete(CompassQuery)
2010-08-19 09:31:43,196 [btpool0-200] ERROR com.tc.object.bytecode.Manager - Exception thrown
com.tc.exception.TCNonPortableObjectError:
*******************************************************************************
Attempt to share an instance of a non-portable class referenced by a portable class. This
unshareable class has not been included for sharing in the configuration.
For more information on this issue, please visit our Troubleshooting Guide at:
http://www.terracotta.org/kit/reflector?kitID=default&pageID=npoe
Referring class : [Lorg.apache.lucene.index.Term;
Thread : btpool0-200
JVM ID : VM(4)
Non-included class: org.apache.lucene.index.Term
Under most circumstances, you should only be adding classes for your
application. If you are adding classes for frameworks or code not written by
you, then you should consider finding a Terracotta Integration Module (TIM)
that matches the framework you are using.
As an example, if the non-portable class listed below is
net.sf.ehcache.CacheManager, you should consider using the ehcache TIM.
It is also possible that some or all of the classes above are truly
non-portable, the solution is then to mark the referring field as transient.
For more information on non-portable classes see the Troubleshooting Guide.
Action to take:
1) Reconfigure to include the unshareable classes
- edit your tc-config.xml file
- locate the <dso> element
- add this snippet inside the <dso> element
<instrumented-classes>
<include>
<class-expression>org.apache.lucene.index.Term</class-expression>
</include>
</instrumented-classes>
- if there is already an <instrumented-classes> element present, simply add
the new includes inside it
*******************************************************************************
The object graph was:
Dumping object graph of non-portable instance of type org.compass.core.lucene.engine.transaction.support.job.TransactionJobs. Lines that start with !! are non-portable types.
org.compass.core.lucene.engine.transaction.support.job.TransactionJobs (id 0)
List jobs = (ArrayList, id 1)
[0] = (org.compass.core.lucene.engine.transaction.support.job.DeleteByQueryTransactionJob, id 2)
org.apache.lucene.search.Query query = (org.apache.lucene.search.MultiPhraseQuery, id 3)
float boost = 1.0
String field = "nameType"
ArrayList positions = (id 4)
[0] = 0
[1] = 1
int slop = 0
ArrayList termArrays = (id 5)
[0] = (org.apache.lucene.index.Term[], id 6)
!! [0] = (org.apache.lucene.index.Term, id 7)
String field = "nameType"
String text = "JNT"
!! [1] = (org.apache.lucene.index.Term, id 8)
String field = "nameType"
String text = "joint"
[1] = (org.apache.lucene.index.Term[], id 9)
!! [0] = (org.apache.lucene.index.Term, id 10)
String field = "nameType"
String text = "NM"
!! [1] = (org.apache.lucene.index.Term, id 11)
String field = "nameType"
String text = "name"
String subIndex = "identity_20"
Set subIndexes = (HashSet, id 12)
[0] = "identity_20"
|
Show » |
| There are no comments yet on this issue.
|
|