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.
Please see SSC-ICT-Innovatie/nl-kat-coordination#2072.
The delete-node code
xtdb-http-multinode/src/xtdb_http_multinode/core.clj
Lines 357 to 378 in f3c5da3
Should probably block, or we have an await call to mitigate this.