{"action":"created","issue":{"url":"https://api.github.com/repos/sensiasoft/sensorhub/issues/17","labels_url":"https://api.github.com/repos/sensiasoft/sensorhub/issues/17/labels{/name}","comments_url":"https://api.github.com/repos/sensiasoft/sensorhub/issues/17/comments","events_url":"https://api.github.com/repos/sensiasoft/sensorhub/issues/17/events","html_url":"https://github.com/sensiasoft/sensorhub/issues/17","id":57746178,"number":17,"title":"Concurrency issue in PERST DB","user":{"login":"sensiasoft","id":9446498,"avatar_url":"https://avatars.githubusercontent.com/u/9446498?v=3","gravatar_id":"","url":"https://api.github.com/users/sensiasoft","html_url":"https://github.com/sensiasoft","followers_url":"https://api.github.com/users/sensiasoft/followers","following_url":"https://api.github.com/users/sensiasoft/following{/other_user}","gists_url":"https://api.github.com/users/sensiasoft/gists{/gist_id}","starred_url":"https://api.github.com/users/sensiasoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sensiasoft/subscriptions","organizations_url":"https://api.github.com/users/sensiasoft/orgs","repos_url":"https://api.github.com/users/sensiasoft/repos","events_url":"https://api.github.com/users/sensiasoft/events{/privacy}","received_events_url":"https://api.github.com/users/sensiasoft/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/sensiasoft/sensorhub/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/sensiasoft/sensorhub/labels/persistence","name":"persistence","color":"fbca04"}],"state":"open","locked":false,"assignee":{"login":"sensiasoft","id":9446498,"avatar_url":"https://avatars.githubusercontent.com/u/9446498?v=3","gravatar_id":"","url":"https://api.github.com/users/sensiasoft","html_url":"https://github.com/sensiasoft","followers_url":"https://api.github.com/users/sensiasoft/followers","following_url":"https://api.github.com/users/sensiasoft/following{/other_user}","gists_url":"https://api.github.com/users/sensiasoft/gists{/gist_id}","starred_url":"https://api.github.com/users/sensiasoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sensiasoft/subscriptions","organizations_url":"https://api.github.com/users/sensiasoft/orgs","repos_url":"https://api.github.com/users/sensiasoft/repos","events_url":"https://api.github.com/users/sensiasoft/events{/privacy}","received_events_url":"https://api.github.com/users/sensiasoft/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/sensiasoft/sensorhub/milestones/1","labels_url":"https://api.github.com/repos/sensiasoft/sensorhub/milestones/1/labels","id":979709,"number":1,"title":"1.0","description":"","creator":{"login":"sensiasoft","id":9446498,"avatar_url":"https://avatars.githubusercontent.com/u/9446498?v=3","gravatar_id":"","url":"https://api.github.com/users/sensiasoft","html_url":"https://github.com/sensiasoft","followers_url":"https://api.github.com/users/sensiasoft/followers","following_url":"https://api.github.com/users/sensiasoft/following{/other_user}","gists_url":"https://api.github.com/users/sensiasoft/gists{/gist_id}","starred_url":"https://api.github.com/users/sensiasoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sensiasoft/subscriptions","organizations_url":"https://api.github.com/users/sensiasoft/orgs","repos_url":"https://api.github.com/users/sensiasoft/repos","events_url":"https://api.github.com/users/sensiasoft/events{/privacy}","received_events_url":"https://api.github.com/users/sensiasoft/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":0,"state":"open","created_at":"2015-02-14T20:30:24Z","updated_at":"2015-02-15T21:10:20Z","due_on":null,"closed_at":null},"comments":1,"created_at":"2015-02-15T21:10:13Z","updated_at":"2015-02-15T21:20:55Z","closed_at":null,"body":"We experienced concurrency issues during the first long video recording run. This resulted in exceptions being thrown by the PERST DB and ultimately an out of memory error was thrown by the JVM."},"comment":{"url":"https://api.github.com/repos/sensiasoft/sensorhub/issues/comments/74437701","html_url":"https://github.com/sensiasoft/sensorhub/issues/17#issuecomment-74437701","issue_url":"https://api.github.com/repos/sensiasoft/sensorhub/issues/17","id":74437701,"user":{"login":"sensiasoft","id":9446498,"avatar_url":"https://avatars.githubusercontent.com/u/9446498?v=3","gravatar_id":"","url":"https://api.github.com/users/sensiasoft","html_url":"https://github.com/sensiasoft","followers_url":"https://api.github.com/users/sensiasoft/followers","following_url":"https://api.github.com/users/sensiasoft/following{/other_user}","gists_url":"https://api.github.com/users/sensiasoft/gists{/gist_id}","starred_url":"https://api.github.com/users/sensiasoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sensiasoft/subscriptions","organizations_url":"https://api.github.com/users/sensiasoft/orgs","repos_url":"https://api.github.com/users/sensiasoft/repos","events_url":"https://api.github.com/users/sensiasoft/events{/privacy}","received_events_url":"https://api.github.com/users/sensiasoft/received_events","type":"User","site_admin":false},"created_at":"2015-02-15T21:20:55Z","updated_at":"2015-02-15T21:20:55Z","body":"After some investigation, a runtime exception was thrown in the database when Storage.commit() was called while a modification was on-going on a BTree index. As a consequence, events were accumulated in the event queue due to another bug in BasicEventHandler occuring when an uncaught exception was thrown during dispatch. This last bug caused the out of memory error because the publish session stayed open indefinitely preventing further events to be dispatched and accumulating in the queue instead.\r\n\r\nUsing \"perst.alternative.btree\" didn't help, so it was necessary to synchronize on the storage class so that Storage.commit() can never be called when modifications are being made to persistent objects (note that the need for this wasn't clear in the PERST documentation). The bug actually seems to happen only when the storing of a new object necessitates creation of a new page pool."}}