@@ -19,6 +19,7 @@ package server
19
19
20
20
import (
21
21
"encoding/json"
22
+ "errors"
22
23
"fmt"
23
24
"net/http"
24
25
@@ -59,6 +60,9 @@ type OnDemandServerHandler interface {
59
60
RemoveTask (* graph.Node , types.Resource , interface {}) error
60
61
}
61
62
63
+ // ErrTaskNotFound used when a task is not found for a specific node
64
+ var ErrTaskNotFound = errors .New ("task not found" )
65
+
62
66
func (o * OnDemandServer ) registerTask (n * graph.Node , resource types.Resource ) bool {
63
67
logging .GetLogger ().Debugf ("Attempting to register %s %s on node %s" , o .resourceName , resource .ID (), n .ID )
64
68
@@ -111,7 +115,7 @@ func (o *OnDemandServer) unregisterTask(n *graph.Node, resource types.Resource)
111
115
o .RUnlock ()
112
116
113
117
if ! isActive {
114
- return fmt . Errorf ( "no running task found on node %s" , n . ID )
118
+ return ErrTaskNotFound
115
119
}
116
120
117
121
name , _ := n .GetFieldString ("Name" )
@@ -181,8 +185,13 @@ func (o *OnDemandServer) OnStructMessage(c ws.Speaker, msg *ws.StructMessage) {
181
185
182
186
status = http .StatusOK
183
187
if err := o .unregisterTask (n , resource ); err != nil {
184
- logging .GetLogger ().Errorf ("Failed to unregister %s on node %s" , o .resourceName , n .ID )
185
- status = http .StatusInternalServerError
188
+ if err == ErrTaskNotFound {
189
+ logging .GetLogger ().Warningf ("Failed to unregister %s on node %s, %s" , o .resourceName , n .ID , err )
190
+ status = http .StatusNotFound
191
+ } else {
192
+ logging .GetLogger ().Errorf ("Failed to unregister %s on node %s, %s" , o .resourceName , n .ID , err )
193
+ status = http .StatusInternalServerError
194
+ }
186
195
}
187
196
}
188
197
0 commit comments