open-coap / java-coap

CoAP Java library
Apache License 2.0
18 stars 5 forks source link

Add a way to configure ACK_RANDOM_FACTOR for retransmission. #48

Closed sbernard31 closed 1 year ago

sbernard31 commented 1 year ago

Currently we can only set ACK_TIMEOUT and MAX_RETRANSMIT but not ACK_RANDOM_FACTOR.

This issue was triggered by : https://github.com/open-coap/java-coap/issues/27#issuecomment-1513155898

szysas commented 1 year ago

There is release v6.12.0 that contains implementation for this ticket, can we close it?

sbernard31 commented 1 year ago

I tested it and it works, but I have to admit that I didn't look into it enough when I ask for it at https://github.com/open-coap/java-coap/issues/27#issuecomment-1513155898 :

Because, I was thinking that :

coapServerBuilder.retransmission(RetransmissionBackOff.ofExponential(Duration.ofMillis(200), 4, 1));

will send re-transmission each 200 ms (linear) but it is rather 200ms, then 400ms, then 800ms (exponential)...

So to be clearer :

  1. It works as it should.
  2. This is not exactly what I expected but the API is flexible enough and I will be able to find a way to get behavior I need.

So we can close this issue :slightly_smiling_face: Thx :pray: and sorry for the confusion.


Some feedback/questions not really related to this :

  1. I see there is a responseTimeout which is a good idea, but I understand (not totally sure) that it is not optional ?
  2. Not the first time when I update java-coap there is API break between 2 minor version, for now this is not a problem as we are in development phase, but if we release a stable version of Leshan including java-coap dependency, that could be an issue. Did you already consider to maybe move to Semantic Versioning ?

(maybe both question deserve their own issue?)

szysas commented 1 year ago
  1. I see there is a responseTimeout which is a good idea, but I understand (not totally sure) that it is not optional ?

There has to be some timeout, it could be big one if needed.

  1. Not the first time when I update java-coap there is API break between 2 minor version, for now this is not a problem as we are in development phase, but if we release a stable version of Leshan including java-coap dependency, that could be an issue. Did you already consider to maybe move to Semantic Versioning ?

Yes, I am aware of that. When needed, we can switch to be more strict with API changes.

(maybe both question deserve their own issue?)

Yes :)