Thin client cannot retrieve data with the composite key when it is put by a
regular (thick) Ignite client.
Is any additional configuration needed or is it a bug?
import java.io.Serializable;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.client.ClientCache;
import org.apache.ignite.client.ClientException;
import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.configuration.ClientConfiguration;
public class ThinClientGets {
final static String CACHE_NAME = "testCache";
public static void main(String[] args) {
try (Ignite ignite = Ignition.start()) {
try (IgniteCache<TestKey, Integer> c =
ignite.getOrCreateCache(CACHE_NAME)) {
c.put(new TestKey("a", "0"), 1);
System.out.println("Val: " + c.get(new TestKey("a", "0")));
}
try (IgniteCache<String, Integer> c =
ignite.getOrCreateCache(CACHE_NAME + 2)) {
c.put("k1", 1);
System.out.println("Val: " + c.get("k1"));
}
// thin client
System.out.println("-- Getting with a thin client --");
ClientConfiguration cfg = new
ClientConfiguration().setAddresses("127.0.0.1:10800");
try (IgniteClient igniteClient = Ignition.startClient(cfg)) {
ClientCache<TestKey, Integer> cache =
igniteClient.cache(CACHE_NAME);
// null here!
System.out.println(cache.get(new TestKey("a", "0")));
ClientCache<String, Integer> cache2 =
igniteClient.cache(CACHE_NAME + 2);
System.out.println(cache2.get("k1"));
}
catch (ClientException e) {
System.err.println(e.getMessage());
}
catch (Exception e) {
System.err.format("Unexpected failure: %s\n", e);
}
}
}
static class TestKey implements Serializable {
private final String a;
private final String b;
public TestKey(String a, String b) {
this.a = a;
this.b = b;
}
public String getA() {
return a;
}
public String getB() {
return b;
}
}
}
--
Roman