-
Notifications
You must be signed in to change notification settings - Fork 294
Open
Description
I tried the following basic get/set with both in-memory and database, neither work as expected and have the same output, notably they both show the state value just after being set, but it never seems to retain after the function return
Caution
none of the state prefixes appear to work
Not sure if I'm doing something wrong, or there is a copy in the implementation which means this never makes it back to storage...?
func sessionGetState(r *runtime.Runtime, c *runtime.Client, m *runtime.Message) {
var s StatePayload
if err := json.Unmarshal(m.Payload, &s); err != nil {
log.Printf("Error unmarshaling 'session.getState' payload: %v", err)
return
}
// lookup session
resp, err := r.S.Get(r.Ctx, &session.GetRequest{
AppName: r.AppName,
UserID: c.User,
SessionID: s.Sid,
})
if err != nil {
...
}
v, err := resp.Session.State().Get(s.Key)
if err != nil {
...
}
s.Val = v
// fmt.Println("mailing sessions", payload)
c.Mail("session.getState.resp", s)
}
func sessionPutState(r *runtime.Runtime, c *runtime.Client, m *runtime.Message) {
var s StatePayload
if err := json.Unmarshal(m.Payload, &s); err != nil {
log.Printf("Error unmarshaling 'session.getState' payload: %v", err)
return
}
// lookup session
resp, err := r.S.Get(r.Ctx, &session.GetRequest{
AppName: r.AppName,
UserID: c.User,
SessionID: s.Sid,
})
if err != nil {
...
}
err = resp.Session.State().Set(s.Key, s.Val)
if err != nil {
...
}
fmt.Println("session.state", maps.Collect(resp.Session.State().All()))
}Received message type: session.state.put
sessionPutState {28b3c4f4-d140-4409-ad0c-56336ad4971c title testing}
State Set 28b3c4f4-d140-4409-ad0c-56336ad4971c title testing
session.state map[title:testing]
Received message type: session.get
sessionGet {"id":"28b3c4f4-d140-4409-ad0c-56336ad4971c"}
Received message type: session.state.put
sessionPutState {28b3c4f4-d140-4409-ad0c-56336ad4971c foo bar}
State Set 28b3c4f4-d140-4409-ad0c-56336ad4971c foo bar
session.state map[foo:bar]
Received message type: session.state.get
Error: session.getState.getState: state key does not exist
Received message type: session.state.put
sessionPutState {28b3c4f4-d140-4409-ad0c-56336ad4971c user:name verdverm}
State Set 28b3c4f4-d140-4409-ad0c-56336ad4971c user:name verdverm
session.state map[user:name:verdverm]
Received message type: session.state.get
Error: session.getState.getState: state key does not exist
Metadata
Metadata
Assignees
Labels
No labels