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

controller-runtime is broken by github.com/go-logr/logr v1.0.0 #1607

Closed
misterikkit opened this issue Jul 28, 2021 · 3 comments
Closed

controller-runtime is broken by github.com/go-logr/logr v1.0.0 #1607

misterikkit opened this issue Jul 28, 2021 · 3 comments

Comments

@misterikkit
Copy link

If a project imports controller-runtime and also pulls in logr v1.0.0 (e.g. through a different dependency) then controller-runtime fails to compile. The error output is,

# sigs.k8s.io/controller-runtime/pkg/log
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/deleg.go:163:2: cannot use res (type *DelegatingLogger) as type logr.Logger in return argument
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/deleg.go:179:2: cannot use res (type *DelegatingLogger) as type logr.Logger in return argument
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/deleg.go:195:2: cannot use res (type *DelegatingLogger) as type logr.Logger in return argument
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/log.go:67:26: cannot use NullLogger{} (type NullLogger) as type logr.Logger in argument to Log.Fulfill
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/log.go:82:41: cannot use NullLogger{} (type NullLogger) as type logr.Logger in argument to NewDelegatingLogger
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/log.go:86:6: cannot use Log (type *DelegatingLogger) as type logr.Logger in assignment
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/log.go:88:13: assignment mismatch: 1 variable but logr.FromContext returns 2 values
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/null.go:30:5: cannot use NullLogger{} (type NullLogger) as type logr.Logger in assignment
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/null.go:49:2: cannot use log (type NullLogger) as type logr.Logger in return argument
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/null.go:54:2: cannot use log (type NullLogger) as type logr.Logger in return argument
../../../go/pkg/mod/sigs.k8s.io/controller-runtime@v0.9.2/pkg/log/null.go:54:2: too many errors
# k8s.io/klog/v2
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:703:10: invalid operation: logr != nil (mismatched types logr.Logger and nil)
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:722:10: invalid operation: logr != nil (mismatched types logr.Logger and nil)
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:740:10: invalid operation: logr != nil (mismatched types logr.Logger and nil)
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:761:10: invalid operation: logr != nil (mismatched types logr.Logger and nil)
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:780:11: invalid operation: loggr != nil (mismatched types logr.Logger and nil)
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:792:11: invalid operation: loggr != nil (mismatched types logr.Logger and nil)
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:910:9: invalid operation: log != nil (mismatched types logr.Logger and nil)
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:1272:18: invalid operation: logging.logr == nil (mismatched types logr.Logger and nil)
../../../go/pkg/mod/k8s.io/klog/v2@v2.8.0/klog.go:1273:21: cannot use nil as type logr.Logger in field value

The breaking change in logr seems to be that logr.Logger is an interface in v0.4.0, renamed to logr.LogSink, and a new type logr.Logger is defined as a struct.

@alvaroaleman
Copy link
Member

There is an open PR to bump the dependency in #1593

I don't think we can support both logr v0.4.0 and v.1.00

@misterikkit
Copy link
Author

@alvaroaleman Thanks for letting me know! I can't reasonably expect go modules to gracefully support a v0 -> v1 transition. If this were v1 -> v2 then we would have a different story.

@clementnuss
Copy link

I think this issue can be closed, with controller-runtime:1.11.0 it's possible to use logr v1+

maiqueb added a commit to maiqueb/whereabouts that referenced this issue Feb 8, 2022
Without this change, we would hit [0], which prevents using logr v1+
with the version of the controller-runtime specified in the go mod file.

[0] - kubernetes-sigs/controller-runtime#1607

Signed-off-by: Miguel Duarte Barroso <mdbarroso@redhat.com>
solonish added a commit to cert-manager/aws-privateca-issuer that referenced this issue Feb 11, 2022
* Upgraded logr version to v1.2.2, upgraded sigs.k8s.io/controller-runtime to v0.11.0 - kubernetes-sigs/controller-runtime#1607, upgraded cert-manager version to v1.7.1

Signed-off-by: Nishanth Solomon <solonish@amazon.com>

* Changed NullLogger to Discard - NullLogger is deprecated https://pkg.go.dev/github.com/go-logr/logr@v0.4.0/testing#NullLogger

Signed-off-by: Nishanth Solomon <solonish@amazon.com>

* Changed TestLogger to NewTestLogger - https://github.com/go-logr/logr/releases/tag/v1.1.0

Signed-off-by: Nishanth Solomon <solonish@amazon.com>

* Updated to golang:1.17 - kubernetes-sigs/controller-tools#643

Signed-off-by: Nishanth Solomon <solonish@amazon.com>
ffromani added a commit to ffromani/performance-addon-operators that referenced this issue Jun 22, 2022
p
pin logger packages to their current versions, to avoid
hitting issues:
- kubernetes/klog#253
- kubernetes-sigs/controller-runtime#1607

Signed-off-by: Francesco Romani <fromani@redhat.com>
ffromani added a commit to ffromani/performance-addon-operators that referenced this issue Jun 22, 2022
pin logger packages to their current versions, to avoid
hitting issues:
- kubernetes/klog#253
- kubernetes-sigs/controller-runtime#1607

Signed-off-by: Francesco Romani <fromani@redhat.com>
ffromani added a commit to ffromani/performance-addon-operators that referenced this issue Jun 22, 2022
pin logger packages to their current versions, to avoid
hitting issues:
- kubernetes/klog#253
- kubernetes-sigs/controller-runtime#1607

Signed-off-by: Francesco Romani <fromani@redhat.com>
swatisehgal added a commit to swatisehgal/scheduler-plugins that referenced this issue Jul 8, 2022
Ping klog to v2.8.0  and controller-manager to v0.10.0

This avoids the following issues:
- kubernetes/klog#253
- kubernetes-sigs/controller-runtime#1607

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
swatisehgal added a commit to swatisehgal/scheduler-plugins that referenced this issue Jul 8, 2022
Ping klog to v2.8.0  and controller-runtime to v0.10.0

This avoids the following issues:
- kubernetes/klog#253
- kubernetes-sigs/controller-runtime#1607

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
swatisehgal added a commit to swatisehgal/scheduler-plugins that referenced this issue Jul 8, 2022
Ping klog to v2.8.0  and controller-runtime to v0.10.0

This avoids the following issues:
- kubernetes/klog#253
- kubernetes-sigs/controller-runtime#1607

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
swatisehgal added a commit to swatisehgal/scheduler-plugins that referenced this issue Jul 8, 2022
Ping klog to v2.8.0  and controller-runtime to v0.10.0

This avoids the following issues:
- kubernetes/klog#253
- kubernetes-sigs/controller-runtime#1607

Signed-off-by: Swati Sehgal <swsehgal@redhat.com>
shajmakh added a commit to shajmakh/performance-addon-operators that referenced this issue Oct 10, 2022
Update controller-runtime to 0.11.0 to avoid below issue:

```
../vendor/sigs.k8s.io/controller-runtime/pkg/log/log.go:67:16: cannot use NullLogger{} (value of type NullLogger) as type logr.Logger in argument to Log.Fulfill
../vendor/sigs.k8s.io/controller-runtime/pkg/log/log.go:82:31: cannot use NullLogger{} (value of type NullLogger) as type logr.Logger in argument to NewDelegatingLogger
../vendor/sigs.k8s.io/controller-runtime/pkg/log/log.go:86:24: cannot use Log (variable of type *DelegatingLogger) as type logr.Logger in variable declaration
../vendor/sigs.k8s.io/controller-runtime/pkg/log/log.go:88:16: assignment mismatch: 1 variable but logr.FromContext returns 2 values
../vendor/sigs.k8s.io/controller-runtime/pkg/log/null.go:30:21: cannot use NullLogger{} (value of type NullLogger) as type logr.Logger in variable declaration
../vendor/sigs.k8s.io/controller-runtime/pkg/log/null.go:49:9: cannot use log (variable of type NullLogger) as type logr.Logger in return statement
../vendor/sigs.k8s.io/controller-runtime/pkg/log/null.go:54:9: cannot use log (variable of type NullLogger) as type logr.Logger in return statement
../vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go:163:9: cannot use res (variable of type *DelegatingLogger) as type logr.Logger in return statement
../vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go:179:9: cannot use res (variable of type *DelegatingLogger) as type logr.Logger in return statement
../vendor/sigs.k8s.io/controller-runtime/pkg/log/deleg.go:195:9: cannot use res (variable of type *DelegatingLogger) as type logr.Logger in return statement
../vendor/sigs.k8s.io/controller-runtime/pkg/log/null.go:54:9: too many errors
../vendor/github.com/smart-edge-open/openshift-operator/common/pkg/utils/logger_wrapper.go:39:9: cannot use l (variable of type *logrusWrapper) as type logr.Logger in return statement
../vendor/github.com/smart-edge-open/openshift-operator/common/pkg/utils/logger_wrapper.go:46:9: cannot use l (variable of type *logrusWrapper) as type logr.Logger in return statement
../vendor/github.com/smart-edge-open/openshift-operator/common/pkg/utils/logger_wrapper.go:70:9: cannot use l (variable of type *logrusWrapper) as type logr.Logger in return statement

~/cnf-features-deploy/cnf-tests
~/cnf-features-deploy
make: *** [Makefile:124: check-tests-nodesc] Error 1
```

ref: kubernetes-sigs/controller-runtime#1607

Signed-off-by: shereenH <shajmakh@redhat.com>
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