@@ -96,13 +96,17 @@ func ServeWorkspace(uidmapper *Uidmapper, fsshift api.FSShiftMethod) func(ctx co
96
96
}
97
97
98
98
// StopServingWorkspace stops a previously started workspace server
99
- func StopServingWorkspace (ctx context.Context , ws * session.Workspace ) error {
99
+ func StopServingWorkspace (ctx context.Context , ws * session.Workspace ) (err error ) {
100
+ //nolint:ineffassign
101
+ span , ctx := opentracing .StartSpanFromContext (ctx , "iws.StopServingWorkspace" )
102
+ defer tracing .FinishSpan (span , & err )
103
+
100
104
rawStop , ok := ws .NonPersistentAttrs [session .AttrWorkspaceServer ]
101
105
if ! ok {
102
106
return nil
103
107
}
104
108
105
- stopFn , ok := rawStop .(context. CancelFunc )
109
+ stopFn , ok := rawStop .(func () )
106
110
if ! ok {
107
111
return nil
108
112
}
@@ -142,11 +146,14 @@ func (wbs *InWorkspaceServiceServer) Start() error {
142
146
if err != nil {
143
147
return xerrors .Errorf ("cannot create IWS socket: %w" , err )
144
148
}
149
+
145
150
err = os .Chmod (socketFN , 0777 )
146
151
if err != nil {
147
152
return xerrors .Errorf ("cannot chmod IWS socket: %w" , err )
148
153
}
149
154
155
+ wbs .sckt = sckt
156
+
150
157
limits := ratelimitingInterceptor {
151
158
"/iws.InWorkspaceService/PrepareForUserNS" : ratelimit {
152
159
UseOnce : true ,
@@ -159,10 +166,10 @@ func (wbs *InWorkspaceServiceServer) Start() error {
159
166
},
160
167
}
161
168
162
- srv : = grpc .NewServer (grpc .ChainUnaryInterceptor (limits .UnaryInterceptor ()))
163
- api .RegisterInWorkspaceServiceServer (srv , wbs )
169
+ wbs . srv = grpc .NewServer (grpc .ChainUnaryInterceptor (limits .UnaryInterceptor ()))
170
+ api .RegisterInWorkspaceServiceServer (wbs . srv , wbs )
164
171
go func () {
165
- err := srv .Serve (sckt )
172
+ err := wbs . srv .Serve (sckt )
166
173
if err != nil {
167
174
log .WithError (err ).WithFields (wbs .Session .OWI ()).Error ("IWS server failed" )
168
175
}
0 commit comments