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
https:/ /github. com/juju/ juju/pull/ 17502