diff --git a/pkg/filemanager/manager/upload.go b/pkg/filemanager/manager/upload.go index a4792676..ea605f4e 100644 --- a/pkg/filemanager/manager/upload.go +++ b/pkg/filemanager/manager/upload.go @@ -406,6 +406,12 @@ func (m *manager) updateStateless(ctx context.Context, req *fs.UploadRequest, o if err != nil { return nil, fmt.Errorf("faield to prepare uplaod: %w", err) } + // A successful upstream call may still return a response with nil Req or + // Session — observed when the master returned 502 mid-prepare (#3441) and + // crashed the slave on the next attribute access. + if res == nil || res.Req == nil || res.Session == nil { + return nil, fmt.Errorf("stateless prepare upload returned an incomplete response") + } req.Props = res.Req.Props if err := m.Upload(ctx, req, res.Session.Policy, res.Session); err != nil {