Closed
Description
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.
Metadata
Metadata
Assignees
Labels
No labels