Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plan for 2.0.0-M15 🎯 #1612

Closed
sbernard31 opened this issue Apr 25, 2024 · 24 comments
Closed

Plan for 2.0.0-M15 🎯 #1612

sbernard31 opened this issue Apr 25, 2024 · 24 comments

Comments

@sbernard31
Copy link
Contributor

sbernard31 commented Apr 25, 2024

This issue is about preparing the 2.0.0-M15 release.
It was not requested by community for now, and there is no date defined.

Let's start to discuss about what should be integrated in it.

What is currently included for M15:

New commits in master since M14 :

517cab0dc: Raise exception for unexpected timestamp for OldJSON and SenML
e687c08be: Fix ObserveResponse.getTimestampedLwM2mNode(s) behavior
6a17d5365: Allow LwM2mNodeSenMLEncoder to encode null-timestamped value.
78a49647f: Upgrade server demo front-ends dependencies.
75c17ba3f: GH-1622: Fix decode empty response for object instance
f0825b5e9: Integration of Californium 3.12.0
1615d5328: Hide some aggressive logs during integration tests
d876b698e: GH-1619: fix Precision loss with SenMLJSON and Old JSON content Format.
a7fb3d6a8: GH-1618: Fix ResourcesChange Event in SimpleInstanceEnabler
dceda02a1: GH-1553: Add Timestamp support for Read/Observe Operation
61017dfbb: GH-1605: Add a way to provide custom UplinkRequestReceiver
5a5714cc7: Integration of Californium 3.11.0
007202d6f: github-actions: upgrade some actions to recent version to remove warning
6ad45a63d: github-actions: upgrade to upload/download v4 (v3 is deprecated)
89244ff6a: [ci]: increase nightly build timeout (we add lot of tests recently)
b2c475520: Integration of java-coap 6.21.0.
99b94e7d0: Add coaps+tcp support based on java-coap to server-demo and client-demo.
8d208a04b: Refactor URL validation in client-demo
9c97f5037: Add Integrations tests for coaps+tcp.
bcb242377: Add coaps+tcp support for server and client based on java-coap.
baa3d2270: Add coap+tcp support based on java-coap to server-demo.
cca33259f: Add coap+tcp support based on java-coap to client-demo.
3dbde2297: Add Integrations tests for coap+tcp.
dd19cf3f9: Add coap+tcp support for server and client based on java-coap.
2199f9e4f: Add AbstractJavaCoap[Client/Server]EndpointsProvider.
5c8afbd1a: Certificate: add authentication usage check.
9feae9ee8: Refactoring: Move CertificateVerifier from cf to core module.
35cbd1e8a: Refactoring: clean/merge security utility classes
d53b7afab: [integration tests] Split SecurityTest in several class
74ba7bde5: [integration tests] Move Security tests in dedicated package
688dc503b: [integration tests] Move oscore tests in a dedicated package
fd7ecb617: [integration tests] Move Bootstrap tests in a dedicated package
63d315949: [integration tests] Move BootstrapConfigTestBuilder in util package
089f2da11: Upgrade demo front-end dependencies
ae49f5352: Add JacksonRegistrationUpdateSerializer to fix serialization issue
d8ef31ad1: GH-534:Add support of pmin,pmax,lt,gt,st for simple observe to client.
afeb712ca: Observation must notify on object and object instance deletion.
6c03a3d34: GH-1588: Remove Assignation Level to Attribute Model.
a7e591c47: Change LeshanTestClient.getServerIdForRegistrationId to not provide /rd/
964908402: Add toMaxDescendant/ToParentPath methods to LwM2mPath.
bc62ef818: Enhance resource change event on SimpleInstanceEnabler.
3b43776e6: Do not use scientific notation when serialize Double attributes.
b1c912b02: Add function to "serialize to query param" in LwM2mAttribute
dc5746023: Add new constuctor to make test more readable
c93f774c9: GH-1580: ipv6 zone id in URI should be prefixed by %25.
3388cf813: Add logs when we don't find endpoint to use for a given client.
f23254c85: Add support of Dimention attribute at client side.
777d2ed4d: GH-1554: Add SENML JSON test with timestamped resources with several bn
3a1adfea5: Upgrade build frontend demo dependencies (vite, rollup)
9693a3da9: GH-1575: fix ObserveCompositeTimestampTests to make it works on JDK 17+
1cdb0db73: Fix Licenses pom metadata
a596fead6: Add Integration test about bootstrap using SNI with X509
2b25fab55: Use SNI value from Security object (id:0) to validate certificate.
b6a7d9863: Add Integration tests using SNI with X509
3234c6d96: Use SNI information from Security object (id:0).
c1527f6f5: Add Integration Test using SNI with RPK
d5f7e6d2c: Add SNI support to Client Security object (id:0).
b303aa428: GH-1089: Support of ObserveComposite for timestamped data on server side
4689260da: Fix getInvalidPathForNodeCause for LwM2mRoot
50d940c3d: Make TimestampeLwM2mNodes supporting null value
b201cde28: CoapNotificationReceiver should raise InvalidResponseException
e7d0774d1: Integration of Californium 3.10.0
831b4ba02: Upgrade frontend demos dependencies.
6c664a411: Add Weekly Jenkins Build to check dependencies vulnerabilites with trivy
677e4f055: Add cyclonedx-maven-plugin to generate cycloneDx SBOM
a5012deba: Add Eclipse code of conduct.
5c609f9dc: SECURITY.md udpate : make clearer demos state relating to security
d15d6fbfe: Fix unplugin-vue-components name in package.json
5bf2cd71d: Fix code about resource instance deletion notification.
82045e204: Add test to check notification well support resource instance deletion
c520c83c5: Fix some WriteSingleValueTest about on object link
004344d82: Fix SimpleInstanceEnabler to support resource instance deletion event
0805884ea: Test against all LTS JDK during nightly build.
edaa06359: Add Manual test job to jenkins
fe019a4fe: Add maven profile to be able to execute tests using toolchain.
ab645dd10: Add support to "/" for Observe-Composite
caf3f35d6: Add Read and Observe support at Object level to server-demo UI.
fbd9d32ad: GH-1538:Add Active Cancel Observation support in server-demo UI.
2f8cca441: Upgrate logback from 1.3.11 to 1.3.12.
16b016dac: GH-1542: Enhance LWM2M attributes `null` value handling.
4614ebb17: GH-1544: Update LeshanServerBuilder.setUpdateRegistrationOnSend javadoc.
aab18a434: GH-1548: Fix DefaultBase64Decoder rejecting payload finishing by 'W'
e78654327: Remove useless code in LeshanServerDemo
c3cfe33b2: Fix -c which is ignored if Californium3.client.properties file exists.
657e686ed: Replace vue-moment (too fat) by dayjs in frontend demos.
7ff4445d1: Add yarn report to vizualize frontend module size dependencies
76e94a436: Minify Leshan logo.
6f2cd1e29: Add meta.description to web demo to increase SEO lighthouse score.
822dc72ee: Add aria-label to improve accessibility score in lighthouse.
06fe0dc9a: GH-1240: Add cache and gzip compression for static demo resources.
6ad3aa00c: GH-1239: Use dynamic import in router to reduce chunk size.
d78d95215: Move common web ui code in leshan-server-core-demo
fa6f7d269: GH-1545: make all base relative "./" instead of absolute "/"
dacf2abb6: migrate from vue-cli to vite to build front-end demo

Redis Store Compatibility break :
No break.

What is missing ?

Here is some topic that we maybe want in M15 ?

Did I miss something ?

About Module Refactoring related to Transport layer Abstraction

Here we are talking about : #1295 (by the way any feedback is welcome about the renaming)

This is on my priority list but question :

  1. should we integrate this to M15 ?
  2. OR we release a M15 without it and just after I work on it and it will be available in M16 with all other new changes ?
  3. OR we release a M15 without it and then I release a M16 with only this renaming, then new changes will be in M17 ?

Maybe 3. could make migration easier ?

@sbernard31
Copy link
Contributor Author

@JaroslawLegierski, @mgdlkundera, @cyril2maq let me know if you have any opinion about this 🙂

@sbernard31
Copy link
Contributor Author

About release date, this will probably not happen in May as like each year. I'm not so much available during this month 😅

@JaroslawLegierski
Copy link
Contributor

@JaroslawLegierski, @mgdlkundera, @cyril2maq let me know if you have any opinion about this 🙂

Read Response using timestamped SenML #1553 is very important for us it would be great if it could be added to M15

@sbernard31
Copy link
Contributor Author

About Module Refactoring related to Transport layer Abstraction

I will probably go for :

we release a M15 without it and then I release a M16 with only this renaming, then new changes will be in M17.

(let me know if this is an issue for you)

@sbernard31
Copy link
Contributor Author

As soon as I get green light for : #1553, we can eventually go for code freeze.
So everybody could take time to test master before the release.

@sbernard31
Copy link
Contributor Author

#1553 is now implemented in master.

So we can start a code freeze ❄️ in master.

@jvermillard, @JaroslawLegierski, @mgdlkundera, @cyril2maq :

  • let me know if you plan to test current master before the release, so I can wait for your green light.
  • in any case, I will wait at least one 1 week (maybe more?) so we can also get feedback from sandbox/demo users.

Oh, I just see that a Californium 3.12 release is planned for 6th June.
You can see content of this release at : https://projects.eclipse.org/projects/iot.californium/releases/3.12.0
Let me know if you prefer wait for it ?

Note that even if we don't wait for it, users should be able to use it with Leshan 2.0.0-M15 if there is no API break (which is generally expected) the only difference is that this will not be the default version used.

@JaroslawLegierski
Copy link
Contributor

#1553 is now implemented in master.

So we can start a code freeze ❄️ in master.

@jvermillard, @JaroslawLegierski, @mgdlkundera, @cyril2maq :

* let me know if you plan to test current `master` before the release, so I can wait for your green light.

* in any case, I will wait at least one 1 week (maybe more?) so we can also get feedback from sandbox/demo users.

Oh, I just see that a Californium 3.12 release is planned for 6th June. You can see content of this release at : https://projects.eclipse.org/projects/iot.californium/releases/3.12.0 Let me know if you prefer wait for it ?

Note that even if we don't wait for it, users should be able to use it with Leshan 2.0.0-M15 if there is no API break (which is generally expected) the only difference is that this will not be the default version used.

Yes, colleagues from France will do the tests current master before the release - it will be done within 1 or 2 weeks.
We do not need the features of the new californium version, but we can also wait for it (if some other leshan users need it).

@sbernard31
Copy link
Contributor Author

Some bugs was found and as it seems there is no urgency, I will integrate fix for them in master soon :

We do not need the features of the new californium version, but we can also wait for it (if some other leshan users need it).

Let me know when you start your tests, so IF this is after the 6th June THEN I will integrate Cf 3.12, ELSE I don't.

@slaft
Copy link

slaft commented May 30, 2024

Hi @sbernard31 (I am a colleague of @JaroslawLegierski, @mgdlkundera, @cyril2maq)
Tests are in progress. Our tests showed no regression (apart from the small bug I reported) and I'm currently having a look at some of the evolutions.

@sbernard31
Copy link
Contributor Author

Ok so maybe better to NOT integrate cf 3.12 or you will need to retest again ?

(#1620 should be integrated in master soon)

@sbernard31
Copy link
Contributor Author

@slaft you said in #1618:

I'm testing the future 2.0.0-M15 (from the nightly build).

The nightly build doesn't contains last modification : GH-1553: Add Timestamp support for Read/Observe Operation
Because jenkins jobs failed : https://ci.eclipse.org/leshan/job/leshan-nightly/job/master/48/ probably because of #1619.

I let you know as soon as everything is available in nightly.

@sbernard31
Copy link
Contributor Author

I let you know as soon as everything is available in nightly.

Nightly Build is green 🟢 again : https://ci.eclipse.org/leshan/job/leshan-nightly/job/master/
And artifact are available in eclipse repo.
(if you test it locally on your dev machine you should read #885 about purge local repository)

@slaft
Copy link

slaft commented May 30, 2024

The nightly build doesn't contains last modification : GH-1553: Add Timestamp support for Read/Observe Operation

Nightly Build is green 🟢 again

Thanks for the info. Actually I've started using the master branch directly to test the fix for #1618, so I didn't notice.

Ok so maybe better to NOT integrate cf 3.12 or you will need to retest again ?

This is not a problem, these are automated tests. So it's really as you wish.

@sbernard31
Copy link
Contributor Author

sbernard31 commented May 31, 2024

So it's really as you wish.

Ok, so I propose :

  1. I wait for your 🟢 light about testing current master.
  2. I release as soon as I get it without Californium 3.12.
  3. I work on refactoring (mainly renaming/ moving code) about Transport Layer Module design. #1295
  4. I integrate Californium 3.12
  5. Then we prepare M16 with only that refactoring + Californium 3.12 + (eventually some bug fixes if needed)

@sbernard31
Copy link
Contributor Author

@slaft (just a ping in case you missed ☝️)

@slaft
Copy link

slaft commented Jun 5, 2024

@sbernard31
The tests on #1553 were longer than expected.
Unfortunately it only partially fixes the issue we had.
As no regression was detected, the M15 could be released if needed (maybe someone is waiting for it or maybe you'd like to release it quickly).


We will be coming back to you with more elements soon, but here is one already.

When doing a Read/Observe at the Object Instance level (or Object level) the response from the device for which we have a problem looks like (only one resource has a timestamp):

[
 {"bn":"/3300/0/","n":"5700","t":1717505820,"v":529},
 {"n":"5601","v":529},
 {"n":"5602","v":720},
 {"n":"5701","vs":"ppm"},
 {"n":"5603","v":0},
 {"n":"5604","v":3e4},
 {"n":"5750","vs":"CO2 "}
]

This is decoded as 2 TimestampedLwM2mNode (one with resource 5700 and the timestamp, one with the other resources and a null timestamp) -> so it raises the exception: should receive only 1 timestamped node but received 2
(It's related to this discussion I guess #1553 (comment))

@sbernard31
Copy link
Contributor Author

As no regression was detected, the M15 could be released if needed (maybe someone is waiting for it or maybe you'd like to release it quickly).

OK so I will probably do that tomorrow.

This is decoded as 2 TimestampedLwM2mNode (one with resource 5700 and the timestamp, one with the other resources and a null timestamp) -> so it raises the exception: should receive only 1 timestamped node but received 2
(It's related to this discussion I guess #1553 (comment))

Yep I try to warn you about this limitation and ask for your confirmation before we start to code it 😕 ... (#1553 (comment))
Too bad that was not enough to avoid that situation.

@slaft
Copy link

slaft commented Jun 5, 2024

Perhaps simply ignoring timestamps would be an OK option (this is what actually happens for a Read-Composite and Observe-Composite initial response).

@sbernard31
Copy link
Contributor Author

Probably not the right place to talk about that kind of details 🙂

Perhaps simply ignoring timestamps would be an OK option

Too bad we code timestamp support if just ignoring was enough 😬
Anyway, if we go in that way this will probably not be the default behavior but we can maybe adapt the code in a way that user easily extend the decoder to ignore it.

(this is what actually happens for a Read-Composite and Observe-Composite initial response).

I should probably look at this but I guess this is not the expected behavior. Maybe you find a bug.

(I was answering others question but you edit your comment by deleting them, maybe worth to discuss about it you can ask again at #1553)

@sbernard31
Copy link
Contributor Author

I will investigate :

And also clarify : #1553 (comment)

As it seems there is no urgency concerning 2.0.0-M15 release, I will investigate that ☝️ before.

So 2.0.0-M15 is on pause for now. 🛑

@sbernard31
Copy link
Contributor Author

@slaft

Ok so maybe better to NOT integrate cf 3.12 or you will need to retest again ?
This is not a problem, these are automated tests. So it's really as you wish.

As the 2.0.0-M15 is on pause and that was not a problem for you to "retest", I finally decide to integrate Cf 3.12 in master (and so in future 2.0.0-M15).

I will investigate :

And also clarify : #1553 (comment)

I created a PR (#1621) with fixes about that and also changed the LwM2mNodeSenMLDecoder API so it should be easy to extend it to ignore timestamp.
Eventually we could add a constructor argument ? but I don't know as I also plan to add more constructor arguments with #1438 fix (not plan for M15)

Once this #1621 will be integrated, we could reconsider a 2.0.0-M15 release.

@slaft
Copy link

slaft commented Jun 7, 2024

As the 2.0.0-M15 is on pause and that was not a problem for you to "retest", I finally decide to integrate Cf 3.12 in master (and so in future 2.0.0-M15).

No problem detected after this update.

@sbernard31
Copy link
Contributor Author

#1621 is now integrated in master. I'm not sure if this totally solves your issue but I guess we can still take more time to discuss about it later if needed.

Unless there is more unexpected issue detected very soon, current master content should be the future 2.0.0-M15.

If there is no veto, I plan to release it this week.

Sorry if this seems too hurry but I would like to release it quickly to be able to work on #1295 refactoring.

@sbernard31
Copy link
Contributor Author

Release 2.0.0-M15 is out !

Thx all for your help, I really appreciate it ! 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants