{"action":"created","issue":{"url":"https://api.github.com/repos/neo4j/neo4j/issues/5806","labels_url":"https://api.github.com/repos/neo4j/neo4j/issues/5806/labels{/name}","comments_url":"https://api.github.com/repos/neo4j/neo4j/issues/5806/comments","events_url":"https://api.github.com/repos/neo4j/neo4j/issues/5806/events","html_url":"https://github.com/neo4j/neo4j/issues/5806","id":114562194,"number":5806,"title":"2.3.0 returning 404 after error in a Transaction, change from 2.2x","user":{"login":"cskardon","id":1875805,"avatar_url":"https://avatars.githubusercontent.com/u/1875805?v=3","gravatar_id":"","url":"https://api.github.com/users/cskardon","html_url":"https://github.com/cskardon","followers_url":"https://api.github.com/users/cskardon/followers","following_url":"https://api.github.com/users/cskardon/following{/other_user}","gists_url":"https://api.github.com/users/cskardon/gists{/gist_id}","starred_url":"https://api.github.com/users/cskardon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cskardon/subscriptions","organizations_url":"https://api.github.com/users/cskardon/orgs","repos_url":"https://api.github.com/users/cskardon/repos","events_url":"https://api.github.com/users/cskardon/events{/privacy}","received_events_url":"https://api.github.com/users/cskardon/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-11-02T09:59:05Z","updated_at":"2015-11-02T11:45:38Z","closed_at":null,"body":"This is related to an issue raised on the .Net `Neo4jClient` page (https://github.com/Readify/Neo4jClient/issues/127)  - all the queries here are run via the `db/data/cypher` endpoint\r\n\r\nFirst, create a constraint:\r\n\r\n`CREATE CONSTRAINT ON (n:User) ASSERT n.Name IS UNIQUE`\r\n\r\nThen create a user:\r\n\r\nQuery: `CREATE (n:User {user})`, Params: `{\"user\":{\"Name\":\"Mike\", \"Id\":1}}`\r\n\r\nSo far so good - now attempt to create the same user, but within a transaction:\r\n\r\nQuery: `CREATE (n:User {user})`, Params: `{\"user\":{\"Name\":\"Mike\", \"Id\":1}}`\r\n\r\nThis will return a `ConstraintViolation` as you'd expect, and the transaction ID, for the sake of argument, that will be `20`.\r\n\r\nBoth 2.3.0 and 2.2.x are the same up to this point. The difference occurs when due to the error we decide to `DELETE` the transaction, so we call:\r\n\r\n`DELETE http://localhost:7474/db/data/transaction/20`\r\n\r\nIn 2.2x that returns: `{\"results\":[],\"errors\":[]}`\r\n\r\nIn 2.3.0 that returns:\r\n\r\n    {\r\n        \"results\":[],\r\n        \"errors\":[\r\n            {\r\n                \"code\":\"Neo.ClientError.Transaction.UnknownId\",\r\n                \"message\":\"Unrecognized transaction id. Transaction may have timed out and been rolled back.\"\r\n            }\r\n    ]}\r\n\r\nAll wrapped up in a 404 response. \r\n\r\nIs there a reason the response has changed? Is this expected behaviour? I've executed these via `Neo4jClient` and via `Fiddler` using the composer, so I'm relatively certain it's a change in behaviour from 2.2x to 2.3.0. \r\n"},"comment":{"url":"https://api.github.com/repos/neo4j/neo4j/issues/comments/152996391","html_url":"https://github.com/neo4j/neo4j/issues/5806#issuecomment-152996391","issue_url":"https://api.github.com/repos/neo4j/neo4j/issues/5806","id":152996391,"user":{"login":"cskardon","id":1875805,"avatar_url":"https://avatars.githubusercontent.com/u/1875805?v=3","gravatar_id":"","url":"https://api.github.com/users/cskardon","html_url":"https://github.com/cskardon","followers_url":"https://api.github.com/users/cskardon/followers","following_url":"https://api.github.com/users/cskardon/following{/other_user}","gists_url":"https://api.github.com/users/cskardon/gists{/gist_id}","starred_url":"https://api.github.com/users/cskardon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cskardon/subscriptions","organizations_url":"https://api.github.com/users/cskardon/orgs","repos_url":"https://api.github.com/users/cskardon/repos","events_url":"https://api.github.com/users/cskardon/events{/privacy}","received_events_url":"https://api.github.com/users/cskardon/received_events","type":"User","site_admin":false},"created_at":"2015-11-02T11:45:38Z","updated_at":"2015-11-02T11:45:38Z","body":"The problem for me is that the 404 really gives no indication of what's happened it just hides the fact that the rollback has occurred, and from a user point of view, looks a little like something else has happened.\r\n\r\nI guess internally I can check for a 404 and treat as a normal 200, but that has problems of it's own - what if it *is* a genuine timeout?\r\n\r\nIn my view if you do something like a rollback - it really should be told to the user.\r\n"}}