Skip to content

Synchronisation issue in delete-node #17

@originalsouth

Description

@originalsouth

Please see SSC-ICT-Innovatie/nl-kat-coordination#2072.

The delete-node code

(defn- delete-node [request]
(let [name (get-in request [:parameters :body :node])
node (get @nodes name)]
(if node
(do
;; We first remove the node so no new queries can be started
(swap! nodes atom-delete-node name)
(log/info "Removed node" name "from the list of nodes")
(.close node)
(loop []
(let [num-queries (get @active-queries-per-node name 0)]
(if (= num-queries 0)
(do
;; No queries are running anymore so we can delete the files.
(run! io/delete-file (reverse (file-seq (io/file node-dir name))))
(log/info "Deleted files for node" name)
{:status 200, :body {:deleted true}})
(do
(log/info "Sleeping 100 ms because of" num-queries "active queries for node" name)
(Thread/sleep 100)
(recur))))))
{:status 404, :body {:error "Node not found"}})))

Should probably block, or we have an await call to mitigate this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions