You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Sebastian Sindelar <Se...@ibh-ks.de> on 2017/07/19 14:52:44 UTC

Problem with Messages after client reconnect

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 <ma...@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.

Re: Problem with Messages after client reconnect

Posted by Ilya Lantukh <il...@gridgain.com>.
Hi Sebastian,

Thanks for example and detailed steps to reproduce.

Unfortunately, this is a flaw in current binary metadata exchange
algorithm. I have created a ticket for it -
https://issues.apache.org/jira/browse/IGNITE-5794.

To avoid this issue for now, you should either:
- ensure that there is always at least 1 server node alive,
- restart all client nodes after last server node left cluster.


On Thu, Jul 20, 2017 at 9:18 AM, Sebastian Sindelar <
Sebastian.Sindelar@ibh-ks.de> wrote:

> Hi.
>
>
>
> Just figured out while the example setup doesn’t produce the error. The
> following TestClient will always cause the exception at the server.
>
>
>
> *public* *class* TestClient {
>
>
>
>        *public* *static* *void* main(String[] args) {
>
>              IgniteConfiguration igniteConfiguration = *new*
> IgniteConfiguration();
>
>              igniteConfiguration.setClientMode(*true*);
>
>              igniteConfiguration.setMetricsLogFrequency(0);
>
>              Ignite ignite = *Ignition.start(**igniteConfiguration**)*;
>
>
>
>              Scanner *scanner* = *new* Scanner(System.*in*);
>
>              *while** (**true**) {*
>
> *                    String **message** = **scanner**.nextLine();*
>
> *                    IgniteMessaging **messaging** = **ignite**.message(*
> *ignite**.cluster());*
>
>                     *messaging**.send(**"test"**, **new** ComplexMessage(*
> *message**));*
>
> *             }*
>
>
>
>
>
>        }
>
> }
>
>
>
> Ignite.message(…) is now called before each message is send. In the main
> application it is called only once.
>
> I also noticed I didn’t describe the steps to reproduce the problem very
> detailed yesterday evening.
>
>
>
>    1. Start 1 Client and 1 Server
>    2. Type in some message in the client console and hit Enter
>    3. Check that message is received and logged by the server
>    4. Stop the Server
>    5. Start the Server and wait for the client to reconnect
>    6. Type in another message in the client console and hit Enter
>    7. See the Exception at the server log
>
>
>
> Also one additional note. This only happens if all cluster servers are
> offline and the cluster gets restartet. If you have multiple servers there
> is no problem. At least one server must survive to keep the record on how
> to unmarshall the sent class.
>
>
>
> Best regards,
> Sebastian Sindelar
>
> *Von:* Sebastian Sindelar [mailto:Sebastian.Sindelar@ibh-ks.de]
> *Gesendet:* Mittwoch, 19. Juli 2017 16:53
> *An:* user@ignite.apache.org
> *Betreff:* Problem with Messages after client reconnect
>
>
>
> 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.AbstractNodeNameAwareMarshalle
> r.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
>
> 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.
>



-- 
Best regards,
Ilya

AW: Problem with Messages after client reconnect

Posted by Sebastian Sindelar <Se...@ibh-ks.de>.
Hi.

Just figured out while the example setup doesn't produce the error. The following TestClient will always cause the exception at the server.

public class TestClient {

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

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


       }
}

Ignite.message(...) is now called before each message is send. In the main application it is called only once.
I also noticed I didn't describe the steps to reproduce the problem very detailed yesterday evening.


  1.  Start 1 Client and 1 Server
  2.  Type in some message in the client console and hit Enter
  3.  Check that message is received and logged by the server
  4.  Stop the Server
  5.  Start the Server and wait for the client to reconnect
  6.  Type in another message in the client console and hit Enter
  7.  See the Exception at the server log

Also one additional note. This only happens if all cluster servers are offline and the cluster gets restartet. If you have multiple servers there is no problem. At least one server must survive to keep the record on how to unmarshall the sent class.

Best regards,
Sebastian Sindelar

Von: Sebastian Sindelar [mailto:Sebastian.Sindelar@ibh-ks.de]
Gesendet: Mittwoch, 19. Juli 2017 16:53
An: user@ignite.apache.org
Betreff: Problem with Messages after client reconnect

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 <ma...@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.