ignite-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sebastian Sindelar <Sebastian.Sinde...@ibh-ks.de>
Subject Problem with Messages after client reconnect
Date Wed, 19 Jul 2017 14:52:44 GMT
Hi.

I just started with Ignite messaging and I encountered the following problem:

I have a simple Setup with 1 server and 1 client. Sending messages from the client to the
server works fine. But after a server restart I encounter the problem that when I send a message
with a custom class I get an unmarshalling error:


org.apache.ignite.IgniteCheckedException: null
       at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9893) ~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.managers.communication.GridIoManager$GridUserMessageListener.onMessage(GridIoManager.java:2216)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1257)
[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.managers.communication.GridIoManager.access$2000(GridIoManager.java:114)
[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.managers.communication.GridIoManager$GridCommunicationMessageSet.unwind(GridIoManager.java:2461)
[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.managers.communication.GridIoManager.unwindMessageSet(GridIoManager.java:1217)
[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.managers.communication.GridIoManager.access$2300(GridIoManager.java:114)
[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.managers.communication.GridIoManager$8.run(GridIoManager.java:1186)
[ignite-core-2.0.0.jar:2.0.0]
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[na:1.8.0_112]
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[na:1.8.0_112]
       at java.lang.Thread.run(Thread.java:745) [na:1.8.0_112]
Caused by: java.lang.NullPointerException: null
       at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.metadata(CacheObjectBinaryProcessorImpl.java:492)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl$2.metadata(CacheObjectBinaryProcessorImpl.java:174)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.binary.BinaryContext.metadata(BinaryContext.java:1231)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.binary.BinaryReaderExImpl.getOrCreateSchema(BinaryReaderExImpl.java:1987)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:283)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:182)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.binary.BinaryReaderExImpl.<init>(BinaryReaderExImpl.java:161)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:304)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.binary.BinaryMarshaller.unmarshal0(BinaryMarshaller.java:99)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.marshaller.AbstractNodeNameAwareMarshaller.unmarshal(AbstractNodeNameAwareMarshaller.java:82)
~[ignite-core-2.0.0.jar:2.0.0]
       at org.apache.ignite.internal.util.IgniteUtils.unmarshal(IgniteUtils.java:9887) ~[ignite-core-2.0.0.jar:2.0.0]
       ... 10 common frames omitted

Sending String or Integer Messages works fine.

I tried to boil it down into a simple server and client but can't reproduce the behaivor exactly:

public class TestServer {
       public static void main(String[] args) {
             IgniteConfiguration igniteConfiguration = new IgniteConfiguration();
             igniteConfiguration.setMetricsLogFrequency(0);
             Ignite ignite = Ignition.start(igniteConfiguration);

             IgniteMessaging messaging = ignite
                           .message(ignite.cluster());
             messaging.localListen("test", (nodeId, msg) -> {
                    System.out.println("Message received: '" + msg + "' von '" + nodeId +
"'");
                    return true;
             });
       }
}

public class TestClient {

       public static void main(String[] args) {
             IgniteConfiguration igniteConfiguration = new IgniteConfiguration();
             igniteConfiguration.setClientMode(true);
             igniteConfiguration.setMetricsLogFrequency(0);
             Ignite ignite = Ignition.start(igniteConfiguration);
             IgniteMessaging messaging = ignite.message(ignite.cluster());

             Scanner scanner = new Scanner(System.in);
             while (true) {
                    String message = scanner.nextLine();
                    messaging.send("test", new ComplexMessage(message));
             }
       }
}

public class ComplexMessage {
       private final String message;
       public ComplexMessage(String message) {
             super();
             this.message = message;
       }

       @Override
       public String toString() {
             return String.format("ComplexMessage [message=%s]", message);
       }
}


I tried to play around with different clustergroups (e.g. .forRemotes()) but most oft he time
after the reconnect the server doesn't receive any messages at all, but I also had the unmarshalling
NPE. I think understand something fundamentally wrong about the ignite messaging or the client
reconnect.

Sincerly,
Sebastian



Mit freundlichen Grüßen / Best regards,
Sebastian Sindelar
________________________________________________________________
IBH Datentechnik GmbH
Mendelssohn-Bartholdy-Str.17
34134 Kassel

Tel.: +49 (0)561 942880
Fax: +49 (0)561 9428877
Support: +49 (0)561 9428899


E-Mail: Sebastian.Sindelar@ibh-ks.de <mailto:Sebastian.Sindelar@ibh-ks.de>

Sitz der Gesellschaft / Domicile of the Company: Kassel
Registergericht / Register Court: Amtsgericht Kassel HRB 5096
USt.-Nr: / VAT-ID: DE113075366
Geschäftsführer / Managing Director: Bernd Hähner

Diese E-Mail enthält vertrauliche und / oder rechtlich geschützte Informationen. Wenn Sie
nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren
Sie bitte sofort den Absender und vernichten Sie diese Mail. Wir verwenden aktuelle Virenschutzprogramme.
Für Schäden, die dem Empfänger gleichwohl durch von uns oder unter unserem Namen zugesandte
mit Viren befallene E-Mails entstehen, schließen wir jede Haftung aus.
This e-mail may contain confidential and / or privileged information. If you are not the intended
recipient or have received this e-mail in error please notify the sender immediately and destroy
this e-mail. We use updated antivirus protection software. We do not accept any responsibility
for damages caused anyhow by viruses transmitted via e-mail.

Mime
View raw message