dispose msg not received

9 posts / 0 new
Last post
Offline
Last seen: 3 weeks 16 hours ago
Joined: 05/20/2020
Posts: 7
dispose msg not received

hi currently facing an issue with dispose msg, when backend app delete a geometry and called writer.dispose(geometry) to inform frontend to delete the geometry from the display. but however some time frontend dnt seem to receive the dispose msg, when it happened from the adm console for the geometry msg i get not_alive_no_writer. however if it was successfully received i see not_alive_dispose. any idea what happening? thanks

Offline
Last seen: 9 months 4 weeks ago
Joined: 02/11/2016
Posts: 144

NOT_ALIVE_NO_WRITER indicates that a DataReader considers an instance to no longer have a "LIVING" DataWriter associated with it.

I could go into more detail here but I think this knowledge base articale covers it well.

Howard's picture
Offline
Last seen: 7 hours 12 min ago
Joined: 11/29/2012
Posts: 605

Not sure exactly the use scenario since Admin Console was mentioned.  What do you mean by "front end"?  Is that a user process? 

What does it mean to "happen from Admin Console"?  You mention that "you" get "NOT_ALIVE_NO_WRITER", but you also say that you successfully get "NOT_ALIVE_DISPOSED".  Which process gets those messages?  Does the app also get both messages?

The "dispose" message is propagated on the network as a sample for the Topic.  If the DataReader does not subscribe to the Topic with RELIABLE Reliability QoS setting, then it's possible that the DataReader will not receive all samples, which includes the "disposed" sample.

 

Offline
Last seen: 3 weeks 16 hours ago
Joined: 05/20/2020
Posts: 7

app A write geo msg to app B. app A also write.dispose geo msg to app B. but someime app B dnt seem to receive the dispose geo msg from app A. so to troubleshoot on app B admin console, i sub to geo msg and see not_alive_no_writer when app B din receive the dispose msg. the qos reliability is set to reliable_reliability_qos. durability is set to transient_local_durability_qos. network link is fine.

Howard's picture
Offline
Last seen: 7 hours 12 min ago
Joined: 11/29/2012
Posts: 605

So first, I assume that the Topic that you are sending is "keyed"...has a key field...

Second, how is your application B detecting that it has received a disposed message?  A disposed message will have the SampleInfo.valid field with a value of "false (0)".

Offline
Last seen: 3 weeks 16 hours ago
Joined: 05/20/2020
Posts: 7

yes the topic is keyed, app B has a reader callback that listen to onDataDisposed and deleted the record from database. so i can aslo verify from d database if dispose msg is received.

Howard's picture
Offline
Last seen: 7 hours 12 min ago
Joined: 11/29/2012
Posts: 605

What programming language are you using?  In any case, the DDSDataReaderListener does not have a onDataDisposed (on_data_disposed) callback.  Are you directly using DDS or a wrapper around the DDS API?  Are you using Connext DDS (I assume you are since you refered to RTI Admin Console)?  What version?

Offline
Last seen: 3 weeks 16 hours ago
Joined: 05/20/2020
Posts: 7

using java jdk 11, dds rti secure 6.1.2. the callback is a wrapper around dds api.

Howard's picture
Offline
Last seen: 7 hours 12 min ago
Joined: 11/29/2012
Posts: 605

So, I would suggest that you first confirm that your wrappe layer is or is not receiving the disposed sample from Connext DDS.  Again, Connext DDS doesn't have a specific callback for disposed samples.  Disposed samples would be received via the DDSDataReaderListener::on_data_available() callback.

You should probably work with whomever wrote the API layer to check to see if handles disposed samples corrrectly and make sure it's not receiving the disposed sample from DDS.