Hello Ioannis, I found where the issue occurs. It occurs when I try and execute a predicate on a class I defined. Here is the sample code I used to reproduce the problem:
My custom class: public class PredTester implements DataSerializable { private static final long serialVersionUID = -1359492685240522455L; private String myvalue; public PredTester(String value) { this.myvalue = value; } @Override public void writeData(DataOutput out) throws IOException { out.writeUTF(myvalue); } public String getMyvalue() { return this.myvalue; } @Override public void readData(DataInput in) throws IOException { this.myvalue = in.readUTF(); } } My activator: public class Activator implements BundleActivator { private volatile HazelcastInstance instance = null; private volatile Thread myThread = null; private volatile IMap<String,PredTester> myMap = null; @Override public void start(BundleContext context) throws Exception { ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader()); ServiceReference reference = context.getServiceReference("com.hazelcast.core.HazelcastInstance"); instance = (HazelcastInstance) context.getService(reference); context.ungetService(reference); try { myMap = instance.getMap("fred-osgi"); myMap.addIndex("myvalue", true); myMap.put("test1", new PredTester("belt")); EntryObject e = new PredicateBuilder().getEntryObject(); @SuppressWarnings("unchecked") Predicate<String,PredTester> predicate = e.get("myvalue").equal("belt"); Set<Map.Entry<String,PredTester>> entrySet = myMap.entrySet(predicate); logger.info("Entries returned = {}",entrySet.size()); << I believe it fails here } catch (Exception ex) { ex.printStackTrace(); } Thread.currentThread().setContextClassLoader(classLoader); } The following exception is thrown, whether I use an index or not (I thought using an index may stop Hazelcast needing to deserialize to check for a match): 21:01:16,037 | ERROR | .cached.thread-1 | AbstractSerializer | dardLoggerFactory$StandardLogger 58 | - - | Problem reading DataSerializable class : PredTester, exception: java.lang.ClassNotFoundException: PredTester not found from bundle [org.apache.karaf.cellar.hazelcast] java.io.IOException: Problem reading DataSerializable class : com.antennasoftware.hazelcasttest.PredTester, exception: java.lang.ClassNotFoundException: com.antennasoftware.hazelcasttest.PredTester not found from bundle [org.apache.karaf.cellar.hazelcast] at com.hazelcast.nio.Serializer$DataSerializer.read(Serializer.java:98)[135:hazelcast:1.9.3] at com.hazelcast.nio.Serializer$DataSerializer.read(Serializer.java:69)[135:hazelcast:1.9.3] at com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:105)[135:hazelcast:1.9.3] at com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:135)[135:hazelcast:1.9.3] at com.hazelcast.nio.Serializer.readObject(Serializer.java:62)[135:hazelcast:1.9.3] at com.hazelcast.impl.ThreadContext.toObject(ThreadContext.java:113)[135:hazelcast:1.9.3] at com.hazelcast.nio.IOUtil.toObject(IOUtil.java:149)[135:hazelcast:1.9.3] at com.hazelcast.impl.Record.getValue(Record.java:143)[135:hazelcast:1.9.3] at com.hazelcast.query.Predicates$GetExpressionImpl.doGetValue(Predicates.java:842)[135:hazelcast:1.9.3] at com.hazelcast.query.Predicates$GetExpressionImpl.getValue(Predicates.java:836)[135:hazelcast:1.9.3] at com.hazelcast.query.Predicates$EqualPredicate.apply(Predicates.java:450)[135:hazelcast:1.9.3] at com.hazelcast.query.PredicateBuilder.apply(PredicateBuilder.java:32)[135:hazelcast:1.9.3] at com.hazelcast.impl.ConcurrentMapManager$QueryOperationHandler.createResultPairs(ConcurrentMapManager.java:2658)[135:hazelcast:1.9.3] at com.hazelcast.impl.ConcurrentMapManager$QueryOperationHandler$QueryTask.run(ConcurrentMapManager.java:2627)[135:hazelcast:1.9.3] at com.hazelcast.impl.executor.ParallelExecutorService$ParallelExecutorImpl$ExecutionSegment.run(ParallelExecutorService.java:179)[135:hazelcast:1.9.3] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)[:1.6.0_26] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)[:1.6.0_26] at java.lang.Thread.run(Thread.java:680)[:1.6.0_26] I guess this makes it difficult to use Hazelcast predicates in OSGi (for now). thanks again, Gareth -- View this message in context: http://karaf.922171.n3.nabble.com/Cellar-And-Hazelcast-Questions-tp3184320p3202047.html Sent from the Karaf - User mailing list archive at Nabble.com.