{"action":"created","comment":{"url":"https://api.github.com/repos/root-project/root/pulls/comments/218527716","pull_request_review_id":156486540,"id":218527716,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIxODUyNzcxNg==","diff_hunk":"@@ -53,25 +57,43 @@ void draw_canvas(const std::string &title, RColor col)\n    }\n \n    // Create a canvas to be displayed.\n-   auto canvas = RCanvas::Create(title);\n+   auto canvas = RCanvas::Create(title + \" canvas\");\n    canvas->Draw(pHist)->SetLineColor(col);\n+   // canvas->Draw(pHist)->SetLineColor(RColor::kRed);\n    canvas->Draw(pHist2)->SetLineColor(RColor::kBlue);\n \n-   canvas->Show();\n \n-   for (int loop=0;loop<50;++loop) {\n+   bool batch = gROOT->IsWebDisplayBatch();\n+\n+   int maxloop = batch ? 10 : 100;\n+\n+   if (title == \"Zero\") {","path":"tutorials/v7/draw_mt.cxx","position":36,"original_position":36,"commit_id":"f4cdac1cf45a42f3629251adc48976bf8f0a80b5","original_commit_id":"f4cdac1cf45a42f3629251adc48976bf8f0a80b5","user":{"login":"linev","id":4936580,"node_id":"MDQ6VXNlcjQ5MzY1ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/4936580?v=4","gravatar_id":"","url":"https://api.github.com/users/linev","html_url":"https://github.com/linev","followers_url":"https://api.github.com/users/linev/followers","following_url":"https://api.github.com/users/linev/following{/other_user}","gists_url":"https://api.github.com/users/linev/gists{/gist_id}","starred_url":"https://api.github.com/users/linev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/linev/subscriptions","organizations_url":"https://api.github.com/users/linev/orgs","repos_url":"https://api.github.com/users/linev/repos","events_url":"https://api.github.com/users/linev/events{/privacy}","received_events_url":"https://api.github.com/users/linev/received_events","type":"User","site_admin":false},"body":"Yes, it was try to solve I/O problem","created_at":"2018-09-18T17:39:11Z","updated_at":"2018-09-18T17:39:11Z","html_url":"https://github.com/root-project/root/pull/2603#discussion_r218527716","pull_request_url":"https://api.github.com/repos/root-project/root/pulls/2603","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/root-project/root/pulls/comments/218527716"},"html":{"href":"https://github.com/root-project/root/pull/2603#discussion_r218527716"},"pull_request":{"href":"https://api.github.com/repos/root-project/root/pulls/2603"}},"in_reply_to_id":218417839},"pull_request":{"url":"https://api.github.com/repos/root-project/root/pulls/2603","id":213860797,"node_id":"MDExOlB1bGxSZXF1ZXN0MjEzODYwNzk3","html_url":"https://github.com/root-project/root/pull/2603","diff_url":"https://github.com/root-project/root/pull/2603.diff","patch_url":"https://github.com/root-project/root/pull/2603.patch","issue_url":"https://api.github.com/repos/root-project/root/issues/2603","number":2603,"state":"open","locked":false,"title":"WebWindow: cummulative patch with many fixes and updates","user":{"login":"linev","id":4936580,"node_id":"MDQ6VXNlcjQ5MzY1ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/4936580?v=4","gravatar_id":"","url":"https://api.github.com/users/linev","html_url":"https://github.com/linev","followers_url":"https://api.github.com/users/linev/followers","following_url":"https://api.github.com/users/linev/following{/other_user}","gists_url":"https://api.github.com/users/linev/gists{/gist_id}","starred_url":"https://api.github.com/users/linev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/linev/subscriptions","organizations_url":"https://api.github.com/users/linev/orgs","repos_url":"https://api.github.com/users/linev/repos","events_url":"https://api.github.com/users/linev/events{/privacy}","received_events_url":"https://api.github.com/users/linev/received_events","type":"User","site_admin":false},"body":"1. Fix problem with fragmented websocket messages - some browsers can split messages on 120KB chunks. Now message merged together before delivered to the user.\r\n2. Solve problem with Google Chrome run in headless mode. \r\nNow chrome browser can run in headless mode without any special debugging flags, which opens some http ports. Now THttpServer provides special \"dummy\" script, which timedout until batch job is not finished.\r\n3. Try to correctly handle situation when browser hangs and does not reply for a long time. After pre-configured timeout (default 50 sec) such browser application will be closed.\r\n4. Let identify connecting websocket at the very beginning - with the first connect request. Allows to reject not allowed connection. Also for the future simplifies re-connection.\r\n5. In TWebWindow clearly identify batch job connection, let reuse if for consequent jobs, close it after 20 sec of idle time\r\n6. Use std::recursive_mutex in WebWindowsManager to protect methods which creates THttpServer /  creates new window / starts new web browser. Comment out special manager guard - useless without special threading functionality\r\n7. Correspondent changes in JSROOT. \r\n8. Special handling of 2d/3d canvas when producing PNG images - now is more consistent, no need to use THREE.SVGRenderer for that\r\n9. Add canvas size to the RPadDisplayItem class, used only in batch mode to configure image size\r\n10. Use workaround with static mutex to protect I/O in canvas painter in multi-threaded environment.\r\n","created_at":"2018-09-07T08:58:31Z","updated_at":"2018-09-18T17:39:11Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2f0c535056819f00f64d55f9849d90baac584ea5","assignee":{"login":"Axel-Naumann","id":144675,"node_id":"MDQ6VXNlcjE0NDY3NQ==","avatar_url":"https://avatars1.githubusercontent.com/u/144675?v=4","gravatar_id":"","url":"https://api.github.com/users/Axel-Naumann","html_url":"https://github.com/Axel-Naumann","followers_url":"https://api.github.com/users/Axel-Naumann/followers","following_url":"https://api.github.com/users/Axel-Naumann/following{/other_user}","gists_url":"https://api.github.com/users/Axel-Naumann/gists{/gist_id}","starred_url":"https://api.github.com/users/Axel-Naumann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Axel-Naumann/subscriptions","organizations_url":"https://api.github.com/users/Axel-Naumann/orgs","repos_url":"https://api.github.com/users/Axel-Naumann/repos","events_url":"https://api.github.com/users/Axel-Naumann/events{/privacy}","received_events_url":"https://api.github.com/users/Axel-Naumann/received_events","type":"User","site_admin":false},"assignees":[{"login":"Axel-Naumann","id":144675,"node_id":"MDQ6VXNlcjE0NDY3NQ==","avatar_url":"https://avatars1.githubusercontent.com/u/144675?v=4","gravatar_id":"","url":"https://api.github.com/users/Axel-Naumann","html_url":"https://github.com/Axel-Naumann","followers_url":"https://api.github.com/users/Axel-Naumann/followers","following_url":"https://api.github.com/users/Axel-Naumann/following{/other_user}","gists_url":"https://api.github.com/users/Axel-Naumann/gists{/gist_id}","starred_url":"https://api.github.com/users/Axel-Naumann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Axel-Naumann/subscriptions","organizations_url":"https://api.github.com/users/Axel-Naumann/orgs","repos_url":"https://api.github.com/users/Axel-Naumann/repos","events_url":"https://api.github.com/users/Axel-Naumann/events{/privacy}","received_events_url":"https://api.github.com/users/Axel-Naumann/received_events","type":"User","site_admin":false},{"login":"pcanal","id":5175087,"node_id":"MDQ6VXNlcjUxNzUwODc=","avatar_url":"https://avatars3.githubusercontent.com/u/5175087?v=4","gravatar_id":"","url":"https://api.github.com/users/pcanal","html_url":"https://github.com/pcanal","followers_url":"https://api.github.com/users/pcanal/followers","following_url":"https://api.github.com/users/pcanal/following{/other_user}","gists_url":"https://api.github.com/users/pcanal/gists{/gist_id}","starred_url":"https://api.github.com/users/pcanal/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pcanal/subscriptions","organizations_url":"https://api.github.com/users/pcanal/orgs","repos_url":"https://api.github.com/users/pcanal/repos","events_url":"https://api.github.com/users/pcanal/events{/privacy}","received_events_url":"https://api.github.com/users/pcanal/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/root-project/root/pulls/2603/commits","review_comments_url":"https://api.github.com/repos/root-project/root/pulls/2603/comments","review_comment_url":"https://api.github.com/repos/root-project/root/pulls/comments{/number}","comments_url":"https://api.github.com/repos/root-project/root/issues/2603/comments","statuses_url":"https://api.github.com/repos/root-project/root/statuses/f4cdac1cf45a42f3629251adc48976bf8f0a80b5","head":{"label":"linev:webwin_run","ref":"webwin_run","sha":"f4cdac1cf45a42f3629251adc48976bf8f0a80b5","user":{"login":"linev","id":4936580,"node_id":"MDQ6VXNlcjQ5MzY1ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/4936580?v=4","gravatar_id":"","url":"https://api.github.com/users/linev","html_url":"https://github.com/linev","followers_url":"https://api.github.com/users/linev/followers","following_url":"https://api.github.com/users/linev/following{/other_user}","gists_url":"https://api.github.com/users/linev/gists{/gist_id}","starred_url":"https://api.github.com/users/linev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/linev/subscriptions","organizations_url":"https://api.github.com/users/linev/orgs","repos_url":"https://api.github.com/users/linev/repos","events_url":"https://api.github.com/users/linev/events{/privacy}","received_events_url":"https://api.github.com/users/linev/received_events","type":"User","site_admin":false},"repo":{"id":85197448,"node_id":"MDEwOlJlcG9zaXRvcnk4NTE5NzQ0OA==","name":"root","full_name":"linev/root","private":false,"owner":{"login":"linev","id":4936580,"node_id":"MDQ6VXNlcjQ5MzY1ODA=","avatar_url":"https://avatars3.githubusercontent.com/u/4936580?v=4","gravatar_id":"","url":"https://api.github.com/users/linev","html_url":"https://github.com/linev","followers_url":"https://api.github.com/users/linev/followers","following_url":"https://api.github.com/users/linev/following{/other_user}","gists_url":"https://api.github.com/users/linev/gists{/gist_id}","starred_url":"https://api.github.com/users/linev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/linev/subscriptions","organizations_url":"https://api.github.com/users/linev/orgs","repos_url":"https://api.github.com/users/linev/repos","events_url":"https://api.github.com/users/linev/events{/privacy}","received_events_url":"https://api.github.com/users/linev/received_events","type":"User","site_admin":false},"html_url":"https://github.com/linev/root","description":"The official ROOT repository","fork":true,"url":"https://api.github.com/repos/linev/root","forks_url":"https://api.github.com/repos/linev/root/forks","keys_url":"https://api.github.com/repos/linev/root/keys{/key_id}","collaborators_url":"https://api.github.com/repos/linev/root/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/linev/root/teams","hooks_url":"https://api.github.com/repos/linev/root/hooks","issue_events_url":"https://api.github.com/repos/linev/root/issues/events{/number}","events_url":"https://api.github.com/repos/linev/root/events","assignees_url":"https://api.github.com/repos/linev/root/assignees{/user}","branches_url":"https://api.github.com/repos/linev/root/branches{/branch}","tags_url":"https://api.github.com/repos/linev/root/tags","blobs_url":"https://api.github.com/repos/linev/root/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/linev/root/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/linev/root/git/refs{/sha}","trees_url":"https://api.github.com/repos/linev/root/git/trees{/sha}","statuses_url":"https://api.github.com/repos/linev/root/statuses/{sha}","languages_url":"https://api.github.com/repos/linev/root/languages","stargazers_url":"https://api.github.com/repos/linev/root/stargazers","contributors_url":"https://api.github.com/repos/linev/root/contributors","subscribers_url":"https://api.github.com/repos/linev/root/subscribers","subscription_url":"https://api.github.com/repos/linev/root/subscription","commits_url":"https://api.github.com/repos/linev/root/commits{/sha}","git_commits_url":"https://api.github.com/repos/linev/root/git/commits{/sha}","comments_url":"https://api.github.com/repos/linev/root/comments{/number}","issue_comment_url":"https://api.github.com/repos/linev/root/issues/comments{/number}","contents_url":"https://api.github.com/repos/linev/root/contents/{+path}","compare_url":"https://api.github.com/repos/linev/root/compare/{base}...{head}","merges_url":"https://api.github.com/repos/linev/root/merges","archive_url":"https://api.github.com/repos/linev/root/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/linev/root/downloads","issues_url":"https://api.github.com/repos/linev/root/issues{/number}","pulls_url":"https://api.github.com/repos/linev/root/pulls{/number}","milestones_url":"https://api.github.com/repos/linev/root/milestones{/number}","notifications_url":"https://api.github.com/repos/linev/root/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/linev/root/labels{/name}","releases_url":"https://api.github.com/repos/linev/root/releases{/id}","deployments_url":"https://api.github.com/repos/linev/root/deployments","created_at":"2017-03-16T13:12:48Z","updated_at":"2018-09-07T06:42:45Z","pushed_at":"2018-09-17T12:46:36Z","git_url":"git://github.com/linev/root.git","ssh_url":"git@github.com:linev/root.git","clone_url":"https://github.com/linev/root.git","svn_url":"https://github.com/linev/root","homepage":"","size":707841,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"root-project:master","ref":"master","sha":"faadea7f8730fea105a3e0ec625dc715b35b8438","user":{"login":"root-project","id":6450093,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY0NTAwOTM=","avatar_url":"https://avatars1.githubusercontent.com/u/6450093?v=4","gravatar_id":"","url":"https://api.github.com/users/root-project","html_url":"https://github.com/root-project","followers_url":"https://api.github.com/users/root-project/followers","following_url":"https://api.github.com/users/root-project/following{/other_user}","gists_url":"https://api.github.com/users/root-project/gists{/gist_id}","starred_url":"https://api.github.com/users/root-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/root-project/subscriptions","organizations_url":"https://api.github.com/users/root-project/orgs","repos_url":"https://api.github.com/users/root-project/repos","events_url":"https://api.github.com/users/root-project/events{/privacy}","received_events_url":"https://api.github.com/users/root-project/received_events","type":"Organization","site_admin":false},"repo":{"id":10994345,"node_id":"MDEwOlJlcG9zaXRvcnkxMDk5NDM0NQ==","name":"root","full_name":"root-project/root","private":false,"owner":{"login":"root-project","id":6450093,"node_id":"MDEyOk9yZ2FuaXphdGlvbjY0NTAwOTM=","avatar_url":"https://avatars1.githubusercontent.com/u/6450093?v=4","gravatar_id":"","url":"https://api.github.com/users/root-project","html_url":"https://github.com/root-project","followers_url":"https://api.github.com/users/root-project/followers","following_url":"https://api.github.com/users/root-project/following{/other_user}","gists_url":"https://api.github.com/users/root-project/gists{/gist_id}","starred_url":"https://api.github.com/users/root-project/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/root-project/subscriptions","organizations_url":"https://api.github.com/users/root-project/orgs","repos_url":"https://api.github.com/users/root-project/repos","events_url":"https://api.github.com/users/root-project/events{/privacy}","received_events_url":"https://api.github.com/users/root-project/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/root-project/root","description":"The official repository for ROOT: analyzing, storing and visualizing big data","fork":false,"url":"https://api.github.com/repos/root-project/root","forks_url":"https://api.github.com/repos/root-project/root/forks","keys_url":"https://api.github.com/repos/root-project/root/keys{/key_id}","collaborators_url":"https://api.github.com/repos/root-project/root/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/root-project/root/teams","hooks_url":"https://api.github.com/repos/root-project/root/hooks","issue_events_url":"https://api.github.com/repos/root-project/root/issues/events{/number}","events_url":"https://api.github.com/repos/root-project/root/events","assignees_url":"https://api.github.com/repos/root-project/root/assignees{/user}","branches_url":"https://api.github.com/repos/root-project/root/branches{/branch}","tags_url":"https://api.github.com/repos/root-project/root/tags","blobs_url":"https://api.github.com/repos/root-project/root/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/root-project/root/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/root-project/root/git/refs{/sha}","trees_url":"https://api.github.com/repos/root-project/root/git/trees{/sha}","statuses_url":"https://api.github.com/repos/root-project/root/statuses/{sha}","languages_url":"https://api.github.com/repos/root-project/root/languages","stargazers_url":"https://api.github.com/repos/root-project/root/stargazers","contributors_url":"https://api.github.com/repos/root-project/root/contributors","subscribers_url":"https://api.github.com/repos/root-project/root/subscribers","subscription_url":"https://api.github.com/repos/root-project/root/subscription","commits_url":"https://api.github.com/repos/root-project/root/commits{/sha}","git_commits_url":"https://api.github.com/repos/root-project/root/git/commits{/sha}","comments_url":"https://api.github.com/repos/root-project/root/comments{/number}","issue_comment_url":"https://api.github.com/repos/root-project/root/issues/comments{/number}","contents_url":"https://api.github.com/repos/root-project/root/contents/{+path}","compare_url":"https://api.github.com/repos/root-project/root/compare/{base}...{head}","merges_url":"https://api.github.com/repos/root-project/root/merges","archive_url":"https://api.github.com/repos/root-project/root/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/root-project/root/downloads","issues_url":"https://api.github.com/repos/root-project/root/issues{/number}","pulls_url":"https://api.github.com/repos/root-project/root/pulls{/number}","milestones_url":"https://api.github.com/repos/root-project/root/milestones{/number}","notifications_url":"https://api.github.com/repos/root-project/root/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/root-project/root/labels{/name}","releases_url":"https://api.github.com/repos/root-project/root/releases{/id}","deployments_url":"https://api.github.com/repos/root-project/root/deployments","created_at":"2013-06-27T10:46:59Z","updated_at":"2018-09-18T14:48:19Z","pushed_at":"2018-09-18T17:35:54Z","git_url":"git://github.com/root-project/root.git","ssh_url":"git@github.com:root-project/root.git","clone_url":"https://github.com/root-project/root.git","svn_url":"https://github.com/root-project/root","homepage":"https://root.cern","size":708262,"stargazers_count":642,"watchers_count":642,"language":"C++","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":454,"mirror_url":null,"archived":false,"open_issues_count":101,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":454,"open_issues":101,"watchers":642,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/root-project/root/pulls/2603"},"html":{"href":"https://github.com/root-project/root/pull/2603"},"issue":{"href":"https://api.github.com/repos/root-project/root/issues/2603"},"comments":{"href":"https://api.github.com/repos/root-project/root/issues/2603/comments"},"review_comments":{"href":"https://api.github.com/repos/root-project/root/pulls/2603/comments"},"review_comment":{"href":"https://api.github.com/repos/root-project/root/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/root-project/root/pulls/2603/commits"},"statuses":{"href":"https://api.github.com/repos/root-project/root/statuses/f4cdac1cf45a42f3629251adc48976bf8f0a80b5"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"linev"}}