Hello,
I'm still working with jGroups and Android.
I'm transferring large files using JGroup to 20+ connected Android devices using multicast.
I noticed you added: Util.resetCachedAddresses(true, true);
This helps me a lot, most of my uses cases on Android work now.
I use JGroups 5.5.2 and a stack with UDP, ping, FD_ALL3, Merge, Verify suspect, barrier, MFC, Nakack4, Unicast4, GMS, frag2
I have one annoying use case though.
If the user disconnects the (USB-C to ETH) network cable, and re connected it well within the timers for failure detection. This all while a transfer is running, I want to be able to recover from this.
This use case can also trigger because Android sometimes disconnects the device (USB-C to ETH) by itself, to reconnect it a second later while no-one touched the phone.
Why it does this is a mistery to me.
What I tried is:
- call the reset function
- disconnect
- connect
This will make the transfer continue, but any data send when the cable was disconnected will not recover. I assume this is because Nakack4 was reset on the Android side.
I tried not disconnecting, only connecting, but this does not work either because JGroup detect the cluster as connected, but the underlying socket is gone.
I also tried calling stop and start on the protocols itself, this causes the same situation as calling disconnect / reconnact. Nakack4 lost its state.
I also tried only resetting the transport (UDP) since I assume that holds the link to the sockets, but no success there either.
I turned on trace logging and I can see that my Android JGroup member which was disconnected doesnt send anything anymore. It survives due to the suspect on the server size keeping it in the cluster, but besides that its silent.
Is there a way for me to disconnect/reconnect, while keeping the Nakack4 state to allow retransmits?
Any tips are more than welcome,
Regards,
Anton