{"action":"created","issue":{"url":"https://api.github.com/repos/molgenis/molgenis/issues/3520","labels_url":"https://api.github.com/repos/molgenis/molgenis/issues/3520/labels{/name}","comments_url":"https://api.github.com/repos/molgenis/molgenis/issues/3520/comments","events_url":"https://api.github.com/repos/molgenis/molgenis/issues/3520/events","html_url":"https://github.com/molgenis/molgenis/issues/3520","id":102988112,"number":3520,"title":"Tabix-based annotators not thread-safe.","user":{"login":"fdlk","id":1523838,"avatar_url":"https://avatars.githubusercontent.com/u/1523838?v=3","gravatar_id":"","url":"https://api.github.com/users/fdlk","html_url":"https://github.com/fdlk","followers_url":"https://api.github.com/users/fdlk/followers","following_url":"https://api.github.com/users/fdlk/following{/other_user}","gists_url":"https://api.github.com/users/fdlk/gists{/gist_id}","starred_url":"https://api.github.com/users/fdlk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fdlk/subscriptions","organizations_url":"https://api.github.com/users/fdlk/orgs","repos_url":"https://api.github.com/users/fdlk/repos","events_url":"https://api.github.com/users/fdlk/events{/privacy}","received_events_url":"https://api.github.com/users/fdlk/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/molgenis/molgenis/labels/bug","name":"bug","color":"fc2929"},{"url":"https://api.github.com/repos/molgenis/molgenis/labels/data-annotators","name":"data-annotators","color":"fef2c0"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/molgenis/molgenis/milestones/21","html_url":"https://github.com/molgenis/molgenis/milestones/Sprint%2072","labels_url":"https://api.github.com/repos/molgenis/molgenis/milestones/21/labels","id":1268773,"number":21,"title":"Sprint 72","description":"","creator":{"login":"dennishendriksen","id":2477186,"avatar_url":"https://avatars.githubusercontent.com/u/2477186?v=3","gravatar_id":"","url":"https://api.github.com/users/dennishendriksen","html_url":"https://github.com/dennishendriksen","followers_url":"https://api.github.com/users/dennishendriksen/followers","following_url":"https://api.github.com/users/dennishendriksen/following{/other_user}","gists_url":"https://api.github.com/users/dennishendriksen/gists{/gist_id}","starred_url":"https://api.github.com/users/dennishendriksen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dennishendriksen/subscriptions","organizations_url":"https://api.github.com/users/dennishendriksen/orgs","repos_url":"https://api.github.com/users/dennishendriksen/repos","events_url":"https://api.github.com/users/dennishendriksen/events{/privacy}","received_events_url":"https://api.github.com/users/dennishendriksen/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":8,"state":"open","created_at":"2015-08-24T06:43:55Z","updated_at":"2015-09-01T12:34:50Z","due_on":"2015-09-10T22:00:00Z","closed_at":null},"comments":3,"created_at":"2015-08-25T09:38:24Z","updated_at":"2015-09-02T12:22:29Z","closed_at":null,"body":"If two people use the same annotator concurrently, they'll get each other's results.\r\n\r\nThe TabixReader's Iterators share one and the same InputStream. Therefore if you read from them concurrently, the results will influence each other.\r\n\r\nThe TabixReader checks if the position matches so most often you get less results than you should or duplicate results.\r\nBut I *do* at times see results that are combinations of two rows, so some of the columns are invalid!"},"comment":{"url":"https://api.github.com/repos/molgenis/molgenis/issues/comments/137053751","html_url":"https://github.com/molgenis/molgenis/issues/3520#issuecomment-137053751","issue_url":"https://api.github.com/repos/molgenis/molgenis/issues/3520","id":137053751,"user":{"login":"fdlk","id":1523838,"avatar_url":"https://avatars.githubusercontent.com/u/1523838?v=3","gravatar_id":"","url":"https://api.github.com/users/fdlk","html_url":"https://github.com/fdlk","followers_url":"https://api.github.com/users/fdlk/followers","following_url":"https://api.github.com/users/fdlk/following{/other_user}","gists_url":"https://api.github.com/users/fdlk/gists{/gist_id}","starred_url":"https://api.github.com/users/fdlk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fdlk/subscriptions","organizations_url":"https://api.github.com/users/fdlk/orgs","repos_url":"https://api.github.com/users/fdlk/repos","events_url":"https://api.github.com/users/fdlk/events{/privacy}","received_events_url":"https://api.github.com/users/fdlk/received_events","type":"User","site_admin":false},"created_at":"2015-09-02T12:22:29Z","updated_at":"2015-09-02T12:22:29Z","body":"Yes. I think so too.\r\nThe query() methods are synchronized in both TabixRepository and TabixVcfRepository. So they'll only ever have one Iterator active on the TabixReader and cannot hurt each other's annotations.\r\n\r\nBut if one person surfs to the dataexplorer and browses the TabixRepository, he gets a new iterator from the reader which \"eats\" up results from the iterators that are created for the query() calls."}}