Skip to content

OpenSearch Controller nil pointer dereference panic in SAML Options #2582

@ShacharMalachi

Description

@ShacharMalachi

Describe the bug

OpenSearch Controller version: v1.0.14

When SAML options was enabled in the past and after that was disabled again, "opensearch describe" (which validates the actual state) returns this result:

"AdvancedSecurityOptions": {
    "SAMLOptions": {
        "Enabled": false
    }
}

And then there is a panic in the opensearch controller in this line, because SessionTimeoutMinutes is nil:
https://github.com/aws-controllers-k8s/opensearchservice-controller/blob/72adf18da89e427ffa4b72410fe716e20ac0d29d/pkg/resource/domain/hooks.go#L198

"panic":"runtime error: invalid memory address or nil pointer dereference","panicGoValue":"\"invalid memory address or nil pointer dereference\"","stacktrace":"goroutine 210 [running]:\nk8s.io/apimachinery/pkg/util/runtime.logPanic({0x2871a18, 0xc000c275f0}, {0x20ba520, 0x3b5f330})\n\t/go/pkg/mod/k8s.io/[email protected]/pkg/util/runtime/runtime.go:107 +0xbc\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile.func1()\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:108 +0x112\npanic({0x20ba520?, 0x3b5f330?})\n\t/usr/local/go/src/runtime/panic.go:792 +0x132\ngithub.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain.(*resourceManager).customUpdateDomain(0xc000557508, {0x2871a18, 0xc000dc3dd0}, 0xc0005ee140, 0xc0006082b0, 0xc000b00e88)\n\t/github.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain/hooks.go:198 +0xb09\ngithub.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain.(*resourceManager).sdkUpdate(...)\n\t/github.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain/sdk.go:1434\ngithub.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain.(*resourceManager).Update(0xc000557508, {0x2871a18?, 0xc000dc3dd0?}, {0x287fc30?, 0xc0005ee140?}, {0x287fc30?, 0xc0006082b0}, 0x0?)\n\t/github.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain/manager.go:157 +0x78\ngithub.com/aws-controllers-k8s/runtime/pkg/runtime.(*resourceReconciler).updateResource(0xc0008e8600, {0x2871a18, 0xc000dc3dd0}, {0x287fbc0, 0xc000557508}, {0x287fc30, 0xc0005ee140}, {0x287fc30, 0xc0006082b0})\n\t/go/pkg/mod/github.com/aws-controllers-k8s/[email protected]/pkg/runtime/reconciler.go:765 +0x38c\ngithub.com/aws-controllers-k8s/runtime/pkg/runtime.(*resourceReconciler).Sync(0xc0008e8600, {0x2871a18, 0xc000dc3dd0}, {0x287fbc0, 0xc000557508}, {0x287fc30, 0xc0005ee140})\n\t/go/pkg/mod/github.com/aws-controllers-k8s/[email protected]/pkg/runtime/reconciler.go:498 +0xf53\ngithub.com/aws-controllers-k8s/runtime/pkg/runtime.(*resourceReconciler).reconcile(0xc0008e8600, {0x2871a18, 0xc000dc3dd0}, {0x287fbc0, 0xc000557508}, {0x287fc30, 0xc0005ee140})\n\t/go/pkg/mod/github.com/aws-controllers-k8s/[email protected]/pkg/runtime/reconciler.go:377 +0x265\ngithub.com/aws-controllers-k8s/runtime/pkg/runtime.(*resourceReconciler).Reconcile(0xc0008e8600, {0x2871a18, 0xc000c275f0}, {{{0xc000cf3fc0?, 0x2427079?}, {0xc000541c20?, 0x100?}}})\n\t/go/pkg/mod/github.com/aws-controllers-k8s/[email protected]/pkg/runtime/reconciler.go:284 +0xa25\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile(0xc000c27560?, {0x2871a18?, 0xc000c275f0?}, {{{0xc000cf3fc0?, 0x0?}, {0xc000541c20?, 0x0?}}})\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:119 +0xbf\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler(0x2897cc0, {0x2871a50, 0xc0007ca780}, {{{0xc000cf3fc0, 0xf}, {0xc000541c20, 0x15}}}, 0x0)\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:334 +0x3ad\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem(0x2897cc0, {0x2871a50, 0xc0007ca780})\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:294 +0x21b\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2()\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:255 +0x85\ncreated by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2 in goroutine 84\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:251 +0x6b5\n","stacktrace":"runtime.sigpanic\n\t/usr/local/go/src/runtime/signal_unix.go:925\ngithub.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain.(*resourceManager).customUpdateDomain\n\t/github.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain/hooks.go:198\ngithub.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain.(*resourceManager).sdkUpdate\n\t/github.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain/sdk.go:1434\ngithub.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain.(*resourceManager).Update\n\t/github.com/aws-controllers-k8s/opensearchservice-controller/pkg/resource/domain/manager.go:157\ngithub.com/aws-controllers-k8s/runtime/pkg/runtime.(*resourceReconciler).updateResource\n\t/go/pkg/mod/github.com/aws-controllers-k8s/[email protected]/pkg/runtime/reconciler.go:765\ngithub.com/aws-controllers-k8s/runtime/pkg/runtime.(*resourceReconciler).Sync\n\t/go/pkg/mod/github.com/aws-controllers-k8s/[email protected]/pkg/runtime/reconciler.go:498\ngithub.com/aws-controllers-k8s/runtime/pkg/runtime.(*resourceReconciler).reconcile\n\t/go/pkg/mod/github.com/aws-controllers-k8s/[email protected]/pkg/runtime/reconciler.go:377\ngithub.com/aws-controllers-k8s/runtime/pkg/runtime.(*resourceReconciler).Reconcile\n\t/go/pkg/mod/github.com/aws-controllers-k8s/[email protected]/pkg/runtime/reconciler.go:284\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Reconcile\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:119\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:334\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:294\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller[...]).Start.func2.2\n\t/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/controller/controller.go:255"}

Can you please fix the code so it can process samlOptions that are returned with "enabled=false" value but without any other property?

Thanks,
Shachar.

Metadata

Metadata

Assignees

Labels

kind/bugCategorizes issue or PR as related to a bug.service/opensearchserviceIndicates issues or PRs that are related to opensearchservice-controller.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions