{"action":"created","issue":{"url":"https://api.github.com/repos/owncloud/core/issues/19964","repository_url":"https://api.github.com/repos/owncloud/core","labels_url":"https://api.github.com/repos/owncloud/core/issues/19964/labels{/name}","comments_url":"https://api.github.com/repos/owncloud/core/issues/19964/comments","events_url":"https://api.github.com/repos/owncloud/core/issues/19964/events","html_url":"https://github.com/owncloud/core/issues/19964","id":112740098,"number":19964,"title":"Provision API pagination for subadmins is broken","user":{"login":"rullzer","id":45821,"avatar_url":"https://avatars1.githubusercontent.com/u/45821?v=3","gravatar_id":"","url":"https://api.github.com/users/rullzer","html_url":"https://github.com/rullzer","followers_url":"https://api.github.com/users/rullzer/followers","following_url":"https://api.github.com/users/rullzer/following{/other_user}","gists_url":"https://api.github.com/users/rullzer/gists{/gist_id}","starred_url":"https://api.github.com/users/rullzer/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rullzer/subscriptions","organizations_url":"https://api.github.com/users/rullzer/orgs","repos_url":"https://api.github.com/users/rullzer/repos","events_url":"https://api.github.com/users/rullzer/events{/privacy}","received_events_url":"https://api.github.com/users/rullzer/received_events","type":"User","site_admin":false},"labels":[{"id":203623804,"url":"https://api.github.com/repos/owncloud/core/labels/app:provisioning_api","name":"app:provisioning_api","color":"02d7e1","default":false},{"id":12406434,"url":"https://api.github.com/repos/owncloud/core/labels/bug","name":"bug","color":"fc2929","default":true},{"id":279699786,"url":"https://api.github.com/repos/owncloud/core/labels/in%20progress","name":"in progress","color":"ededed","default":false},{"id":80995269,"url":"https://api.github.com/repos/owncloud/core/labels/performance","name":"performance","color":"fbca04","default":false},{"id":120033373,"url":"https://api.github.com/repos/owncloud/core/labels/sev2-high","name":"sev2-high","color":"fc2929","default":false}],"state":"open","locked":false,"assignee":{"login":"tomneedham","id":660805,"avatar_url":"https://avatars2.githubusercontent.com/u/660805?v=3","gravatar_id":"","url":"https://api.github.com/users/tomneedham","html_url":"https://github.com/tomneedham","followers_url":"https://api.github.com/users/tomneedham/followers","following_url":"https://api.github.com/users/tomneedham/following{/other_user}","gists_url":"https://api.github.com/users/tomneedham/gists{/gist_id}","starred_url":"https://api.github.com/users/tomneedham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomneedham/subscriptions","organizations_url":"https://api.github.com/users/tomneedham/orgs","repos_url":"https://api.github.com/users/tomneedham/repos","events_url":"https://api.github.com/users/tomneedham/events{/privacy}","received_events_url":"https://api.github.com/users/tomneedham/received_events","type":"User","site_admin":false},"assignees":[{"login":"tomneedham","id":660805,"avatar_url":"https://avatars2.githubusercontent.com/u/660805?v=3","gravatar_id":"","url":"https://api.github.com/users/tomneedham","html_url":"https://github.com/tomneedham","followers_url":"https://api.github.com/users/tomneedham/followers","following_url":"https://api.github.com/users/tomneedham/following{/other_user}","gists_url":"https://api.github.com/users/tomneedham/gists{/gist_id}","starred_url":"https://api.github.com/users/tomneedham/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tomneedham/subscriptions","organizations_url":"https://api.github.com/users/tomneedham/orgs","repos_url":"https://api.github.com/users/tomneedham/repos","events_url":"https://api.github.com/users/tomneedham/events{/privacy}","received_events_url":"https://api.github.com/users/tomneedham/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/owncloud/core/milestones/76","html_url":"https://github.com/owncloud/core/milestone/76","labels_url":"https://api.github.com/repos/owncloud/core/milestones/76/labels","id":1632230,"number":76,"title":"10.0","description":null,"creator":{"login":"MorrisJobke","id":245432,"avatar_url":"https://avatars0.githubusercontent.com/u/245432?v=3","gravatar_id":"","url":"https://api.github.com/users/MorrisJobke","html_url":"https://github.com/MorrisJobke","followers_url":"https://api.github.com/users/MorrisJobke/followers","following_url":"https://api.github.com/users/MorrisJobke/following{/other_user}","gists_url":"https://api.github.com/users/MorrisJobke/gists{/gist_id}","starred_url":"https://api.github.com/users/MorrisJobke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MorrisJobke/subscriptions","organizations_url":"https://api.github.com/users/MorrisJobke/orgs","repos_url":"https://api.github.com/users/MorrisJobke/repos","events_url":"https://api.github.com/users/MorrisJobke/events{/privacy}","received_events_url":"https://api.github.com/users/MorrisJobke/received_events","type":"User","site_admin":false},"open_issues":349,"closed_issues":876,"state":"open","created_at":"2016-03-09T07:18:43Z","updated_at":"2017-04-06T11:24:44Z","due_on":null,"closed_at":null},"comments":7,"created_at":"2015-10-22T06:30:41Z","updated_at":"2017-04-06T11:25:56Z","closed_at":null,"body":"Now that we allow subadmins to get the list of users they have access to via the provisioning API we run into issues.\n\nhttps://github.com/owncloud/core/blob/e1e1f4fd99eafbfe17d7d3729d17739c221d75de/apps/provisioning_api/lib/users.php#L84-L97\n\nAs you can see what we do there is for each group the subadmin is a subadmin of we get the list of users. We merge those lists and then slice the array accordingly.\n\nNow this introduces a few issues:\n1. Assume 10 groups with 1000 members each, your system won't be happy\n2. Since we ask the backends to sort it will be hard to write proper pagination test\n\nTo solve problem 1 I think we might need to introduce new calls to the groupManager i.e. `displayNamesInGroups` and then the additional calls all the way down. This will allow us to let the backend handle deduplication (which is most likely can do much more efficiently).\n\nProblem 2 is something different but can be solved with integration tests. Basically we do not quarantee any order on the results. So if we fill the database with random users to query all we need to check is if (when doing pagination) all users get enumerated exactly once.\n\nTagging for 9.0 since especially problem 1 could be an issue for large installs.\n\nCC: @DeepDiver1975 @tomneedham \n"},"comment":{"url":"https://api.github.com/repos/owncloud/core/issues/comments/292144825","html_url":"https://github.com/owncloud/core/issues/19964#issuecomment-292144825","issue_url":"https://api.github.com/repos/owncloud/core/issues/19964","id":292144825,"user":{"login":"PVince81","id":277525,"avatar_url":"https://avatars1.githubusercontent.com/u/277525?v=3","gravatar_id":"","url":"https://api.github.com/users/PVince81","html_url":"https://github.com/PVince81","followers_url":"https://api.github.com/users/PVince81/followers","following_url":"https://api.github.com/users/PVince81/following{/other_user}","gists_url":"https://api.github.com/users/PVince81/gists{/gist_id}","starred_url":"https://api.github.com/users/PVince81/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PVince81/subscriptions","organizations_url":"https://api.github.com/users/PVince81/orgs","repos_url":"https://api.github.com/users/PVince81/repos","events_url":"https://api.github.com/users/PVince81/events{/privacy}","received_events_url":"https://api.github.com/users/PVince81/received_events","type":"User","site_admin":false},"created_at":"2017-04-06T11:25:56Z","updated_at":"2017-04-06T11:25:56Z","body":"moving to backlog as no one complained about this, maybe no one is actually using this pagination currently"}}
{"actor":{"display_login":"PVince81"}}