-
Notifications
You must be signed in to change notification settings - Fork 123
0.9.6 release #3824
Comments
Possible reasons for release:
|
More reasons:
|
I would suggest we postpone the release a few days such that we get the important JNI fixes etc. |
Yes, seems like it is needed. https://github.com/ElektraInitiative/libelektra/milestone/27 has many open points, also many where you are assigned? Also an PR is tagged with 0.9.6: #3813, which imho should not go to the next release (too risky to merge something like this last minute, better to merge it shortly after the release), the other tagged PRs should go to 0.9.6 though. |
As discussed with @kodebach we would temporarily fix #3868 with ENABLE_AUTO_NATIVE_REF_CLEANUP and release this week. In July we clean up this in #3693. @tucek what is the state of #3863? @robaerd what is the state of #3861? @mpranj do you have time to release this week? Would be great if we could do this release asap! |
I have time for a release this week. I just thought the mentioned PRs need to be in the release, so I didn't release earlier. |
Currently only plugin specific updates are missing (tutorial, example plugin rework, ...)
Just to clarify:
Manual release still calls One other thing i would like to clarify independently of ENABLE_AUTO_NATIVE_REF_CLEANUP: |
Yes, that is exactly what we need. All automatic cleanup tasks should be disabled, so we don't get double frees out of nowhere.
Yes, this is fine. If there is a manual release that causes a double-free, we can just remove it. The problem is just that we currently can't correctly prevent automatic double-frees.
Yes, with the current implementation it would probably be fine to just call
There is already some protection, but there are plans for better protection mechanisms as well. Additional protection on the Java side wouldn't hurt regardless, especially if you can improve the error messages, error handling or the API in general. For example, you could take a hint from the Rust binding and use separate However, I think this is a discussion for the future and not relevant to the 0.9.6 Release. |
Of course in Java it would have to be implemented in a very similar fashion. |
But this actually breaks manual release: var key = Key.create("user:/tests/someKey");
var keySet = KeySet.create(key);
// clean-up
keySet.release();
key.release(); // double free because keySet.release() already freed the backing key because ref cnt was not increased when Key was created The only viable temp solution i see is that ENABLE_AUTO_NATIVE_REF_CLEANUP = false also disable calling |
This example actually works as intended. The C equivalent would be: Key * key = keyNew ("user:/tests/someKey", KEY_END);
KeySet * keySet = ksNew (1, key, KS_END);
ksDel (keySet);
keyDel (key); // double free This behave exactly like the Java version. When you pass a While this may seem odd or even wrong at first, it is needed to allow code like this: KeySet * ks = ksNew (1, keyNew ("user:/foo", KEY_END), keyNew ("user:/bar", KEY_END), KS_END); If There may be other examples, where manual release is actually broken because of |
Since currently the Java binding increases a key's ref count, when a Key representing it is created, either the user or the GC will have to release it (keyDecRef && keyDel). The following is currently the correct API usage (see #3863)
If we want to introduce (for the Java binding) a concept of transferring ownership to a KeySet, when a Key is added, we would have to remove incrementing the key's reference counter when a Java Key representation is created. This will introduce the burden for the user of the Java API to correctly releasing key's not added to a key set. Bottom line should be: A user of the Java API should not at all have to think about releasing key's or key sets, except for optimization purposes. |
I agree, but the goal for this release is simply to have no segfaults. The easiest way to achieve this is simply to accept memory leaks and not actually do cleanup. After the release, the goal for the Java API should be:
|
Yes, I agree with @kodebach, let us release something where JNI plugins can be used without segfaults asap (deadline for students is in one week), and fix everything to have no mem-leaks in July. It is probably a good idea to release #3863, so that @tucek can get some feedback of how people like the changes. #3861 would be obviously great to have. |
@mpranj Is there something still open? Do you need help? |
No, everything is merged. I am having some troubles with docker hub timeouts in the release pipeline. I hope a fresh re-run solves it, and I rebooted the agents. |
Release notes are basically done and waiting for the release pipeline to finish so we can add the artifacts and hashsums. The release pipeline will definitely take 2 hours or so, so I have time to polish release notes right now. If you want to add anything it is still possible ;) |
The release pipeline failed because the warning plugin probably changed its method names.
Therefore the Docker image publish stage of the release pipeline wasn't executed. |
Thank you for pointing this out. We migrated to a new warnings plugin as the old one was deprecated. I already have a fix for this and will re-run the stage once the main release is published on the website. |
Small update: the release is basically published, but not yet announced due to small changes in release notes and re-running the release pipeline with a small fix. |
Unfortunately re-running the release pipeline with a new build number does not fix the errors and does not work as I expected. We would have to push a completely new release to make everything green (which is not worth the time). Currently when we re-release with a new build number the main tarball 0.9.6 (on the FTP) was overwritten, so I had to change the hashsums in the release notes. I think the scenario with re-building a 0.9.6-x release is currently not usable and GitHub also does not let us use a 0.9.6-1 tag for a release version. Maybe we just do 0.9.7 sooner? |
@mpranj Nevertheless, great work, thank you for getting it out! Important is that we got (source) packages and we have a new tag to refer to. 🎆
What are still the things that take soo much time? Can you list them so that we can prioritize #3519? Having smooth and fast releases is imho more important than even more features in CI. 🚀
Yes, let us do 0.9.7 sooner! 💖 |
The build-documentation stage failed again because of the old Maybe we should also extract the git-push stage of the main repository into an own stage and run it as last stage, so the release pipeline can be re-run as often as wanted if an error occurred, without having to worry about the git-tag issue? |
I'm just saying it's not worth anyone's time to do 0.9.7 today just so Jenkins has green icons. Everything else worked fine. Otherwise: the automation is great, but the pipelines take long. Let's say you prepare a release and write some release notes. You have to wait at least:
So you need roughly 5 hours to push thorough the release. If any stage fails, which usually happens, you'll need more like double the time. |
That should be fixed now, but I don't want to re-run it... |
It should be possible, other repos use similar versions. Although according to semantic versioning a version like
Do we really need a second master build for the updated hashsum? Can't we put a place holder in before we trigger the release pipeline and let the release pipeline replace the hashsum and push to Github? |
We can, but the result is the same: the master pipeline needs to run through again, to rebuild the website and show the news. |
Couldn't the release pipeline update the website directly? I assume whatever placeholder we use will just appear in some HTML file were it would be easy to replace. |
Appending the website build directly to the release pipeline would already save some time. (We avoid running the whole master pipeline) I'm not a huge fan of editing auto-generated HTML files, but yes, that would be the fastest option. |
Just building the website also should take very long, I assume. So yes, that would probably be better than "hacking" something into the generated HTML. |
Here is a copy from doc/todo/RELEASE.md, maybe we should add more
[ ]
so that more can be ticked?Release Procedure Documentation
This document describes what to do for a release.
Manual Testing
If no release critical problems are found during testing, continue.
Tasks before Release
Updates
doc/COMPILE.md
to reflect actually tested setupsscripts/dev/update-infos-status
with arguments for heuristics (--auto) and checktransitions in plugin status: especially from/to experimental
cp doc/todo/NEWS.md doc/news/_preparation_next_release.md
Increment Version Number
CMakeLists.txt
doc/tutorials/hello-elektra.md
examples/external/java/read-keys-example/pom.xml
andsrc/bindings/jna/README.md
scripts/docker/alpine/*/release.Dockerfile
VERSION
variable in build-server:Check
When Source Code is considered ready
The revision parameters should be set to 1 (default).
On a package revision release (version does not change, only package revision) the revision parameters need to be incremented.
To download the artifacts either open the "Artifacts" tab on Blue Ocean or open this URL
https://build.libelektra.org/job/libelektra-release/<BUILD_NUMBER>/artifact/artifacts/
where
<BUILD_NUMBER>
is the number of the current pipeline job which can be found at https://build.libelektra.org/job/libelektra-releasein the "Build-History" (bottom-left) beginning with "#"
For each distribution two artifact folder exist: "
<DISTRO_CODENAME>
" and "<DISTRO_CODENAME>-installed
""
<DISTRO_CODENAME>-installed
" contains the test and strace logs of Elektra installed through the built packagesFor
<DISTRO_CODENAME>
artifact:*.error
) must be emptytest-*
) folders if the passed tests really were successful, i.e.:<DISTRO_CODENAME>/elektra_*.build
and<DISTRO_CODENAME>/elektra_*.error
)<DISTRO_CODENAME>/elektra_*.build
)For
<DISTRO_CODENAME>-installed
artifact:test-*
) folders if the passed tests really were successful, i.e.:doc/images/plugins.pdf
was generated correctlyPublish
(BlueOcean sometimes doesn't show the Input step on long pipelines)
mkdir build && cd build && make html && ../scripts/link-checker external-links.txt
Preperation for next release
CMPVERSION
inscripts/build/run_icheck
tests/icheck.suppression
(and add info to release notes)Announce
send out release mails&post on social media (see GitHub issue #676)
Special Requirements
LICENSE.md
The text was updated successfully, but these errors were encountered: