{"action":"closed","issue":{"url":"https://api.github.com/repos/tarantool/tarantool/issues/1601","repository_url":"https://api.github.com/repos/tarantool/tarantool","labels_url":"https://api.github.com/repos/tarantool/tarantool/issues/1601/labels{/name}","comments_url":"https://api.github.com/repos/tarantool/tarantool/issues/1601/comments","events_url":"https://api.github.com/repos/tarantool/tarantool/issues/1601/events","html_url":"https://github.com/tarantool/tarantool/issues/1601","id":164169095,"number":1601,"title":"vinyl: don't block TX thread on pthread_cond_wait when quota is exceed","user":{"login":"rtsisyk","id":1799054,"avatar_url":"https://avatars.githubusercontent.com/u/1799054?v=3","gravatar_id":"","url":"https://api.github.com/users/rtsisyk","html_url":"https://github.com/rtsisyk","followers_url":"https://api.github.com/users/rtsisyk/followers","following_url":"https://api.github.com/users/rtsisyk/following{/other_user}","gists_url":"https://api.github.com/users/rtsisyk/gists{/gist_id}","starred_url":"https://api.github.com/users/rtsisyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtsisyk/subscriptions","organizations_url":"https://api.github.com/users/rtsisyk/orgs","repos_url":"https://api.github.com/users/rtsisyk/repos","events_url":"https://api.github.com/users/rtsisyk/events{/privacy}","received_events_url":"https://api.github.com/users/rtsisyk/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/tarantool/tarantool/labels/bug","name":"bug","color":"eb6420"},{"url":"https://api.github.com/repos/tarantool/tarantool/labels/vinyl","name":"vinyl","color":"000000"}],"state":"closed","locked":false,"assignee":{"login":"rtsisyk","id":1799054,"avatar_url":"https://avatars.githubusercontent.com/u/1799054?v=3","gravatar_id":"","url":"https://api.github.com/users/rtsisyk","html_url":"https://github.com/rtsisyk","followers_url":"https://api.github.com/users/rtsisyk/followers","following_url":"https://api.github.com/users/rtsisyk/following{/other_user}","gists_url":"https://api.github.com/users/rtsisyk/gists{/gist_id}","starred_url":"https://api.github.com/users/rtsisyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtsisyk/subscriptions","organizations_url":"https://api.github.com/users/rtsisyk/orgs","repos_url":"https://api.github.com/users/rtsisyk/repos","events_url":"https://api.github.com/users/rtsisyk/events{/privacy}","received_events_url":"https://api.github.com/users/rtsisyk/received_events","type":"User","site_admin":false},"assignees":[{"login":"rtsisyk","id":1799054,"avatar_url":"https://avatars.githubusercontent.com/u/1799054?v=3","gravatar_id":"","url":"https://api.github.com/users/rtsisyk","html_url":"https://github.com/rtsisyk","followers_url":"https://api.github.com/users/rtsisyk/followers","following_url":"https://api.github.com/users/rtsisyk/following{/other_user}","gists_url":"https://api.github.com/users/rtsisyk/gists{/gist_id}","starred_url":"https://api.github.com/users/rtsisyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtsisyk/subscriptions","organizations_url":"https://api.github.com/users/rtsisyk/orgs","repos_url":"https://api.github.com/users/rtsisyk/repos","events_url":"https://api.github.com/users/rtsisyk/events{/privacy}","received_events_url":"https://api.github.com/users/rtsisyk/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/tarantool/tarantool/milestones/18","html_url":"https://github.com/tarantool/tarantool/milestones/1.7.2","labels_url":"https://api.github.com/repos/tarantool/tarantool/milestones/18/labels","id":1847097,"number":18,"title":"1.7.2","description":"1.7.x beta, stabilize disk engine.","creator":{"login":"rtsisyk","id":1799054,"avatar_url":"https://avatars.githubusercontent.com/u/1799054?v=3","gravatar_id":"","url":"https://api.github.com/users/rtsisyk","html_url":"https://github.com/rtsisyk","followers_url":"https://api.github.com/users/rtsisyk/followers","following_url":"https://api.github.com/users/rtsisyk/following{/other_user}","gists_url":"https://api.github.com/users/rtsisyk/gists{/gist_id}","starred_url":"https://api.github.com/users/rtsisyk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rtsisyk/subscriptions","organizations_url":"https://api.github.com/users/rtsisyk/orgs","repos_url":"https://api.github.com/users/rtsisyk/repos","events_url":"https://api.github.com/users/rtsisyk/events{/privacy}","received_events_url":"https://api.github.com/users/rtsisyk/received_events","type":"User","site_admin":false},"open_issues":25,"closed_issues":85,"state":"open","created_at":"2016-06-24T12:47:28Z","updated_at":"2016-09-01T17:22:55Z","due_on":"2016-08-31T20:00:00Z","closed_at":null},"comments":2,"created_at":"2016-07-06T20:42:22Z","updated_at":"2016-09-01T17:22:55Z","closed_at":"2016-09-01T17:22:54Z","body":"```\r\nstatic int\r\nss_quota(struct ssquota *q, enum ssquotaop op, int64_t v)\r\n{\r\n\tif (likely(v == 0))\r\n\t\treturn 0;\r\n\ttt_pthread_mutex_lock(&q->lock);\r\n\tswitch (op) {\r\n\tcase SS_QADD:\r\n\t\tif (unlikely(!q->enable || q->limit == 0)) {\r\n\t\t\t/*\r\n\t\t\t * Fall through to quota accounting, skip\r\n\t\t\t * the wait.\r\n\t\t\t */\r\n\t\t} else {\r\n\t\t\twhile (q->used + v >= q->limit) {\r\n\t\t\t\tq->wait++;\r\n\t\t\t\ttt_pthread_cond_wait(&q->cond, &q->lock); <!-- OMG\r\n\t\t\t\tq->wait--;\r\n```\r\n\r\nSee also #1550"}}
{"actor":{"display_login":"rtsisyk"}}