Hello, How was the entry inserted to the cache? You are trying to get this entry via thin client, if the entry was inserted via thick-client (Ignite node) you can face such a problem. Ignite thin-client and Ignite nodes have different default "Compact footer" property values, so POJO keys are marshalled in different ways and treated as different keys for thin-clients and Ignite nodes. Try to change "Compact footer" property for thin-client configuration: ClientConfiguration cfg = new ClientConfiguration().setBinaryConfiguration(new BinaryConfiguration().setCompactFooter(true)).setAddresses("127.0.0.1:10800 ");
пн, 18 окт. 2021 г. в 15:02, MJ <6733...@qq.com>: > Hi, > > > I experienced below problem when testing the “Affinity Colocation” > functionality. The code is from > https://ignite.apache.org/docs/latest/data-modeling/affinity-collocation#configuring-affinity-key > . > > When I run the code in single jvm, it works perfect and successfully > retrieved the cached object (personCache.get(new PersonKey(1, "company1"))) > . > But when I try to run the client code in another new JVM(meanwhile leave > the server node run in local), something goes wrong (see below). Please > can anyone elaborate why the first test case succeeded but the second one > failed ? > > Logger log = LoggerFactory.getLogger(getClass()); > > //success > @Test > public void test_iterate() throws ClientException, > Exception { > ClientConfiguration cfg = new > ClientConfiguration().setAddresses("127.0.0.1:10800"); > try (IgniteClient client = > Ignition.startClient(cfg)) { > ClientCache<PersonKey, > Person> cache = client.cache("persons"); > try > (QueryCursor<Cache.Entry<PersonKey, Person>> qryCursor = cache.query(new > ScanQuery<>(null))) { > > qryCursor.forEach(entry -> System.out.println("Key = " + entry.getKey() + > ", Value = " + entry.getValue())); > } > } > } > > > //fail > @Test > public void test_query() throws ClientException, Exception > { > ClientConfiguration cfg = new > ClientConfiguration().setAddresses("127.0.0.1:10800"); > try (IgniteClient client = > Ignition.startClient(cfg)) { > ClientCache<PersonKey, > Person> cache = client.cache("persons"); > Person row = cache.get(new > PersonKey(1, "company1")); > > Assert.assertNotNull(row); // no data returned > log.info("{}", row); > } > } > > > Thanks, > -MJ > >