-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Breaking API changes in minor releases #5682
Comments
Hello @ppkarwasz, We don't follow semantic versioning but we try to comply as much as possible. I'm happy to switch to a strict semantic versioning policy. However, if we want to keep a short cycled release loop this can imply releasing a major version every 2 months. On the other hand, we can switch to a predictable release schedule, but this would very likely imply elongating the release cycle. |
Thanks a lot for the explanation. In version 2.x of Log4j I will add the required However for version 3.x of Log4j it would make more sense to have separate versions for each
|
Hi, @ppkarwasz |
Hi @ppkarwasz, Regarding the switch to a different versioning policy, I'm afraid that we will need to keep with a similar approach to the one we're following now. Bumping a major version every other release will probably force us to keep maintenance branches for a few of them. We'll try to integrate tooling to make sure that we only break what we consider non-critical (such as upstream Kubernetes API changes) and detect those more critical breakages that should be delayed to the next major or be approached with a compatibility layer.
I've been reviewing the module and this sounds good. I can also see it makes sense to have the lookup hosted here. Let us know how we can help you. |
That is great news. As I mentioned above I can perform the initial submission. What would be the best place for such a component? I was thinking about adding an artifact id |
This module adds the ability to Log4j Core to use Kubernetes attributes in a configuration file. It is a cleaned-up version of the `org.apache.logging.log4j:log4j-kubernetes`. As explained in fabric8io#5682, it does make more sense to host is here since: * it only depends on a very stable `StrLookup` dependency from `log4j-core`, * the number and kind of properties available through `kubernetes-client` depend on its version.
This module adds the ability to Log4j Core to use Kubernetes attributes in a configuration file. It is a cleaned-up version of the `org.apache.logging.log4j:log4j-kubernetes`. As explained in fabric8io#5682, it does make more sense to host is here since: * it only depends on a very stable `StrLookup` dependency from `log4j-core`, * the number and kind of properties available through `kubernetes-client` depend on its version.
This module adds the ability to Log4j Core to use Kubernetes attributes in a configuration file. It is a cleaned-up version of the `org.apache.logging.log4j:log4j-kubernetes`. As explained in fabric8io#5682, it does make more sense to host is here since: * it only depends on a very stable `StrLookup` dependency from `log4j-core`, * the number and kind of properties available through `kubernetes-client` depend on its version.
This module adds the ability to Log4j Core to use Kubernetes attributes in a configuration file. It is a cleaned-up version of the `org.apache.logging.log4j:log4j-kubernetes`. As explained in fabric8io#5682, it does make more sense to host is here since: * it only depends on a very stable `StrLookup` dependency from `log4j-core`, * the number and kind of properties available through `kubernetes-client` depend on its version.
@manusa thank you for the explanation. I was wondering why sometimes we get updates in the fabric8 client and there were breaking changes. Now it makes a lot of sense. |
This module adds the ability to Log4j Core to use Kubernetes attributes in a configuration file. It is a cleaned-up version of the `org.apache.logging.log4j:log4j-kubernetes`. As explained in fabric8io#5682, it does make more sense to host is here since: * it only depends on a very stable `StrLookup` dependency from `log4j-core`, * the number and kind of properties available through `kubernetes-client` depend on its version.
This module adds the ability to Log4j Core to use Kubernetes attributes in a configuration file. It is a cleaned-up version of the `org.apache.logging.log4j:log4j-kubernetes`. As explained in fabric8io#5682, it does make more sense to host is here since: * it only depends on a very stable `StrLookup` dependency from `log4j-core`, * the number and kind of properties available through `kubernetes-client` depend on its version.
This module adds the ability to Log4j Core to use Kubernetes attributes in a configuration file. It is a cleaned-up version of the `org.apache.logging.log4j:log4j-kubernetes`. As explained in fabric8io#5682, it does make more sense to host is here since: * it only depends on a very stable `StrLookup` dependency from `log4j-core`, * the number and kind of properties available through `kubernetes-client` depend on its version.
* Add `kubernetes-log4j` module This module adds the ability to Log4j Core to use Kubernetes attributes in a configuration file. It is a cleaned-up version of the `org.apache.logging.log4j:log4j-kubernetes`. As explained in #5682, it does make more sense to host is here since: * it only depends on a very stable `StrLookup` dependency from `log4j-core`, * the number and kind of properties available through `kubernetes-client` depend on its version. * Fix license header * Add killswitch for Log4j properties Adds a `kubernetes.log4j.useProperties` Java system property to disable the usage of Log4j properties. Increases test coverage. * Fix dependencies and packaging * Use `NamespaceBuilder` in test * Add tests with mock client * Add tests for `ContainerUtil` * Split data-gathering code into methods * Apply Sonarqube suggestions * Fix license formatting * Add missing JavaDoc * Reach 80% test coverage * Add documentation --------- Co-authored-by: Ralph Goers <rgoers@apache.org>
It seems that the new io.fabric8:kubernetes-log4j package doesn't include the |
This issue has been automatically marked as stale because it has not had any activity since 90 days. It will be closed if no further activity occurs within 7 days. Thank you for your contributions! |
I am closing this, since the reason for breaking changes has been explained. |
Describe the bug
As reported by one of our users in apache/logging-log4j2#2151, the
kubernetes-model-core
andkubernetes-client
contain some breaking API changes in versions 6.2.0 and 6.5.0:6.2.0
the public methodio.fabric8.kubernetes.api.model.ObjectMeta#getClusterName
was removed,6.5.0
the methodsio.fabric8.kubernetes.client.Config#getRollingTimeout
andio.fabric8.kubernetes.client.ConfigBuilder#withRollingTimeout
were removed.As a result
log4j-kubernetes
compiles and works with version6.1.1
ofkubernetes-client
, but stop working with version6.2.0
.Fabric8 Kubernetes Client version
6.2.0
Steps to reproduce
https://github.com/apache/logging-log4j2
;Expected behavior
We would expect
kubernetes-client
to follow semantic versioning, where public methods can be deprecated in a minor release, but they are only removed in the next major release.At Log4j we use
bnd-baseline-maven-plugin
to automatically check for major API changes, but plenty of other tools can also be used.Runtime
other (please specify in additional context)
Kubernetes API Server version
other (please specify in additional context)
Environment
Windows, Linux, macOS
Fabric8 Kubernetes Client Logs
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: