diff --git a/src/xtdb_http_multinode/core.clj b/src/xtdb_http_multinode/core.clj index 0f750ab..de862d6 100644 --- a/src/xtdb_http_multinode/core.clj +++ b/src/xtdb_http_multinode/core.clj @@ -391,9 +391,10 @@ (if node (do (swap! active-queries-per-node active-query-inc node-name) - (let [ret (handler (assoc request :xtdb-node node))] - (swap! active-queries-per-node active-query-dec node-name) - ret)) + (try + (handler (assoc request :xtdb-node node)) + (finally + (swap! active-queries-per-node active-query-dec node-name)))) {:status 404, :body {:error "Node not found"}})) (handler request))))) diff --git a/tests/test_xtdb.py b/tests/test_xtdb.py index 1b00230..c625be0 100644 --- a/tests/test_xtdb.py +++ b/tests/test_xtdb.py @@ -38,3 +38,11 @@ def test_submit_tx(xtdb_node): assert entity['xt/id'] == 'boris' assert entity['last-name'] == 'Petrov' + + +def test_malformed(xtdb_node): + edn_headers = {'Content-Type': 'application/edn', 'Accept': 'application/adn'} + + data = '{:tx-ops [[]]}' + response = requests.post(f'http://127.0.0.1:3000/_xtdb/{xtdb_node}/submit-tx', headers=edn_headers, timeout=5, data=data) + assert response.status_code == 400