Juju controller panic when using token login with migrated model

Bug #2068613 reported by Kian Parvin
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Canonical Juju
Fix Released
High
Yang Kelvin Liu

Bug Description

Hi,

This bug pertains to a JIMM controller interacting with Juju.

JIMM passes a JWT login token during login to Juju controllers. I'm seeing an issue when we execute a model migration.

Scenario:
- Two controllers connected to JIMM.
- Use JIMM tooling to migrate a model between the two controllers.
- JIMM thinks the model still resides on the old Juju controller (bug in JIMM).
- Run `juju status`
- JIMM creates a JWT token for the request with
- Request goes to old controller with model that no longer exists.
- Panic

Juju version: 3.5.1

This is also consistent/readily reproducible.

The stack trace of the panic is below.

2024-06-06 11:09:17 CRITICAL juju.rpc server.go:557 panic running request {MethodCaller:{paramsType:<nil> resultType:<nil> rootValue:{typ:0x736bea0 ptr:0xc0010af110 flag:22} rootMethod:{Call:0xb00980 ObjType:0xc000676570} objMethod:{Params:0x749e260 Result:0x74ecde0 Call:0xb01d00}} transformErrors:0x396fcc0 hdr:{RequestId:1 Request:{Type:Admin Version:3 Id: Action:Login} Error: ErrorCode: ErrorInfo:map[] Version:1}} with arg {AuthTag:<email address hidden> Credentials: Nonce: Macaroons:[] BakeryVersion:0 Token:ZXlKaGJHY2lPaUpTVXpJMU5pSXNJbXRwWkNJNklqQXhNRGhtTldOakxXUmhOall0TkdabVppMWlOV0U1TFRnd01UWmhOak0zTUdVNFpTSXNJblI1Y0NJNklrcFhWQ0o5LmV5SmhZMk5sYzNNaU9uc2lZMnh2ZFdRdGJHOWpZV3hvYjNOMElqb2lZV1J0YVc0aUxDSmpiMjUwY205c2JHVnlMV0l6WkdRM1lXVmxMVE0xTVRBdE5ERTFaUzA0TkRZeExXVmtNVEUzWmpGa01HTTVZaUk2SW5OMWNHVnlkWE5sY2lJc0ltMXZaR1ZzTFRWaU1HSmtZMlZqTFRneFlUY3ROR0kxTkMwNFpUTXpMVEF5TnpabU5tVTVNV0kzWXlJNkltRmtiV2x1SW4wc0ltRjFaQ0k2V3lKaU0yUmtOMkZsWlMwek5URXdMVFF4TldVdE9EUTJNUzFsWkRFeE4yWXhaREJqT1dJaVhTd2laWGh3SWpveE56RTNOamN5TkRVM0xDSnBjM01pT2lKcWFXMXRMblJsYzNRdWJHOWpZV3hvYjNOMElpd2lhblJwSWpvaVptWXhNRFE0TXpBdFlUQm1OaTAwT1RJMUxXSTVPREV0WkdWaU0yRmxNV1V3TTJFNElpd2ljM1ZpSWpvaWRYTmxjaTFyYVdGdUxuQmhjblpwYmtCallXNXZibWxqWVd3dVkyOXRJbjAuSTB2NENNcE1lTmNzR29XaFZlMmZXOEhkbVJKMDM2cWZJcGs2azROVkNWZ3hlWnlqd3B6MHAxUWFLRTZyX2dqMEdFRS0wcnpSQW04SEJSVWRxTTQ2YzAweHprV3ZjOWM0bXJVRHpUcmFPN3ppSjZNTXN3azczYUpWUllpZnpvQ2toX1pUcHVRbVV5UEM5RUZUM29WMnJySWprZVE5LVFfa0k5RXJONnE2VkZKMGxPeDVlNlZ0bG5qaUNIQjVBekZ5RnJldjNOeUFId3kwazA5RmJ3MEptNXotSk9tOUJFal9ia0U3b0hWcVNwWW9YOTRGZ2stcGVHREduVE9CbmJvaC16WjZuWm4yNWtQWThySG0yZnpzLUlsdE8wRDkxRG5MWlR3dklBWldnNVIzMXdsR0pnQ0xEUXZOSk9kekkzd1BwNWh1anVwY0NVSkxMNzJaUFgxSElTUV9XSkYtV3hmSk9ibjJ3V3ZGbWxnZEpwcGRPSV95cjJHb2o3b3YwbTU2NW04Y0JCU0M2U0dHLTUzcUE0Y1dxaU8xMGhIMzQzRGpRWEdQTk9JQW5FNUx6YzJfQzZEZ05SdS1iY1FLUW9JQkE1ME5RbnJfSjIzTFBTN2VxR3NGQWpnWE5ETk9xMDRGaElKbTM1cGU5ZVM4RzhXOThybE16RkJrNEFCdEFPc3J5NmZJaTZfcW85R1BvMUhRNEpWR1A4TE9ERVU4TmsyX0g2QkVwSWRrbGZOSzVsMm1JQTJITzJ2dFZKYVdmbmtJcWIyZjc2OGRvUVY0UW1iT05ZVm1QZjFnTUU5YVhQYUxJendmS0k5MGFqMnUyVVF2Y2syUi1DN2MwaV81X29LNzg0bWQwdFFMSjlURVJEcjNSTkJjMV9qemhoRTFvdVctVXp0T1dFNk1WdU0= CLIArgs: UserData: ClientVersion:}: runtime error: invalid memory address or nil pointer dereference
goroutine 79542 [running]:
runtime/debug.Stack()
 /snap/go/current/src/runtime/debug/stack.go:24 +0x65
github.com/juju/juju/rpc.(*Conn).runRequest.func1()
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/rpc/server.go:558 +0x7d
panic({0x6b31500, 0xc11f400})
 /snap/go/current/src/runtime/panic.go:884 +0x213
github.com/juju/juju/state.(*Model).ModelTag(...)
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/state/model.go:565
github.com/juju/juju/apiserver.(*admin).authenticate(0xc0010af110, {0x842f130, 0xc0000ba080}, {{0xc00299c3c0, 0x1e}, {0x0, 0x0}, {0x0, 0x0}, {0x0, ...}, ...})
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/apiserver/admin.go:323 +0x79e
github.com/juju/juju/apiserver.(*admin).login(_, {_, _}, {{0xc00299c3c0, 0x1e}, {0x0, 0x0}, {0x0, 0x0}, {0x0, ...}, ...}, ...)
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/apiserver/admin.go:90 +0x19b
github.com/juju/juju/apiserver.(*admin).Login(_, {{0xc00299c3c0, 0x1e}, {0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0, 0x0}, ...})
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/apiserver/admin.go:66 +0xc5
reflect.Value.call({0x736bea0?, 0xc0010af110?, 0x40f447?}, {0x78c0200, 0x4}, {0xc00325b290, 0x1, 0xb0319d?})
 /snap/go/current/src/reflect/value.go:586 +0xb07
reflect.Value.Call({0x736bea0?, 0xc0010af110?, 0x749e260?}, {0xc00325b290?, 0xc0025cbb80?, 0x14?})
 /snap/go/current/src/reflect/value.go:370 +0xbc
github.com/juju/rpcreflect.newMethod.func8({0x842f0f8, 0xc00412ac80}, {0x736bea0?, 0xc0010af110?, 0x0?}, {0x749e260?, 0xc001583440?, 0x90?})
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/vendor/github.com/juju/rpcreflect/type.go:365 +0xce
github.com/juju/rpcreflect.methodCaller.Call({{0x0, 0x0}, {0x0, 0x0}, {0x736bea0, 0xc0010af110, 0x16}, {0xc0010a8300, 0xc000676570}, {{0x84737f0, ...}, ...}}, ...)
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/vendor/github.com/juju/rpcreflect/value.go:129 +0x18a
github.com/juju/juju/rpc.(*Conn).runRequest(0xc00196d720, {{0x8427300, 0xc0003d5650}, 0x7b9a430, {0x1, {{0xc002c15ad8, 0x5}, 0x3, {0x0, 0x0}, ...}, ...}}, ...)
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/rpc/server.go:571 +0x1b6
created by github.com/juju/juju/rpc.(*Conn).handleRequest
 /build/snapcraft-juju-00168dbdfabee9c3b42870e21e1c13b6/parts/jujud/build/rpc/server.go:475 +0x685

Revision history for this message
Yang Kelvin Liu (kelvin.liu) wrote :
Changed in juju:
status: New → Triaged
assignee: nobody → Yang Kelvin Liu (kelvin.liu)
milestone: none → 3.4.4
Harry Pidcock (hpidcock)
Changed in juju:
status: Triaged → Fix Committed
importance: Undecided → High
Changed in juju:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.