{"action":"created","comment":{"url":"https://api.github.com/repos/pravega/pravega/pulls/comments/121208870","pull_request_review_id":43246119,"id":121208870,"diff_hunk":"@@ -26,7 +26,6 @@\n import java.util.function.Function;\n import java.util.function.Predicate;\n import java.util.stream.Collectors;\n-","path":"common/src/test/java/io/pravega/common/concurrent/FutureHelpersTests.java","position":4,"original_position":4,"commit_id":"5fce187db2f18d3901d953eef33aae902eeb1ed2","original_commit_id":"e1fdee35349151639e2491013216caf0e661cb30","user":{"login":"andreipaduroiu","id":14354377,"avatar_url":"https://avatars1.githubusercontent.com/u/14354377?v=3","gravatar_id":"","url":"https://api.github.com/users/andreipaduroiu","html_url":"https://github.com/andreipaduroiu","followers_url":"https://api.github.com/users/andreipaduroiu/followers","following_url":"https://api.github.com/users/andreipaduroiu/following{/other_user}","gists_url":"https://api.github.com/users/andreipaduroiu/gists{/gist_id}","starred_url":"https://api.github.com/users/andreipaduroiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andreipaduroiu/subscriptions","organizations_url":"https://api.github.com/users/andreipaduroiu/orgs","repos_url":"https://api.github.com/users/andreipaduroiu/repos","events_url":"https://api.github.com/users/andreipaduroiu/events{/privacy}","received_events_url":"https://api.github.com/users/andreipaduroiu/received_events","type":"User","site_admin":false},"body":"fixed","created_at":"2017-06-09T19:48:31Z","updated_at":"2017-06-09T19:48:31Z","html_url":"https://github.com/pravega/pravega/pull/1391#discussion_r121208870","pull_request_url":"https://api.github.com/repos/pravega/pravega/pulls/1391","_links":{"self":{"href":"https://api.github.com/repos/pravega/pravega/pulls/comments/121208870"},"html":{"href":"https://github.com/pravega/pravega/pull/1391#discussion_r121208870"},"pull_request":{"href":"https://api.github.com/repos/pravega/pravega/pulls/1391"}}},"pull_request":{"url":"https://api.github.com/repos/pravega/pravega/pulls/1391","id":123910211,"html_url":"https://github.com/pravega/pravega/pull/1391","diff_url":"https://github.com/pravega/pravega/pull/1391.diff","patch_url":"https://github.com/pravega/pravega/pull/1391.patch","issue_url":"https://api.github.com/repos/pravega/pravega/issues/1391","number":1391,"state":"open","locked":false,"title":"Issue 1330: (SegmentStore) Async Writes to Tier1","user":{"login":"andreipaduroiu","id":14354377,"avatar_url":"https://avatars1.githubusercontent.com/u/14354377?v=3","gravatar_id":"","url":"https://api.github.com/users/andreipaduroiu","html_url":"https://github.com/andreipaduroiu","followers_url":"https://api.github.com/users/andreipaduroiu/followers","following_url":"https://api.github.com/users/andreipaduroiu/following{/other_user}","gists_url":"https://api.github.com/users/andreipaduroiu/gists{/gist_id}","starred_url":"https://api.github.com/users/andreipaduroiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/andreipaduroiu/subscriptions","organizations_url":"https://api.github.com/users/andreipaduroiu/orgs","repos_url":"https://api.github.com/users/andreipaduroiu/repos","events_url":"https://api.github.com/users/andreipaduroiu/events{/privacy}","received_events_url":"https://api.github.com/users/andreipaduroiu/received_events","type":"User","site_admin":false},"body":"**Change log description**\r\nImplements asynchronous, parallel writes to Tier1. Previously, the Segment Store (SSS) wrote to Tier1 in sequence, always waiting for a write to finish before issuing a new one. That was the simplest approach that could work, however it does have limitations (see parent issue).\r\n\r\nMajor changes:\r\n- **OperationProcessor**: \r\n    - The Operation Queueing part stays the same.\r\n    - The part where it writes to Tier1 via a DataFrame Builder has changed substantially. As it no longer waits for writes to Tier1 to finish, it builds Data Frames continuously and ships them to Tier1. Every Data Frame is associated with an appropriate Metadata Update Transaction (see below). Upon an ack (from Tier1) that a frame has been committed, all such update transactions up to and including the one for that frame are committed to the metadata. Should a frame fail to commit, all update transactions starting at the one associated with it will be failed.\r\n    - Does not do any Tier1 throttling. That is the responsibility of the Tier1 implementation, since it's the closes to the wire.\r\n- **OperationMetadataUpdater**\r\n    - Split into 3 classes and changed to **chain** UpdateTransactions on top of each other - this is to support associating such update transaction with the corresponding Data Frame that is written to Tier1 (previously the entire class was exactly one Update Transaction, which could either be committed or rolled back).\r\n    - ContainerMetadataUpdateTransaction is that part which deals with changes to the entire ContainerMetadata. It has a base (previous transaction), it can be rebased (when the previous transaction is committed) and can itself be committed to the main ContainerMetadata.\r\n        - The vast majority of the code here was moved from OperationMetadataProcessor, with the rest being added to support chaining.\r\n    - SegmenteMetadataUpdateTransaction is that part which deals with changes to a particular Segment's Metadata.\r\n        - Similar to its ContainerMetadata counterpart, it has a base and can be applied to the main metadata.\r\n- **DataFrameBuilder** (DFB)\r\n    - Rewrote from being sequential to allowing frames to be committed asynchronously.\r\n    - append(Operation) is a synchronous operation that writes the operation to the underlying DataFrameOutputStream (DFOS)\r\n    - The DFOS has a synchronous callback that notifies the DFB when a frame is full.\r\n    - The DFB then\r\n        - Invokes its own callback (synchronously) that notifies the OperationProcessor that a frame is about to be committed (the OP then creates a Metadata transaction and associates it with the frame)\r\n       - Submits the frame to Tier1 asynchronously and returns. Based on the outcome, asynchronously invokes either a success or failure callback which is then used by the OP to handle the situation (see above).\r\n- **BookKeeperLog**\r\n     - Significant rewrite to support parallel writes and guarantee write ordering across ledgers. This was previously \"guaranteed\" by the expectation that all calls would happen in sequence and never overlap.\r\n     - Each new write is added to a queue. A Write Processor is invoked after every new add, after every write to BK completes and after every rollover.\r\n    - The WriteProcessor: removes completed items from the head of the queue and attempts or reattempts to execute writes to BK.\r\n    - Never will there be two writes to two different ledgers at the same time. If a rollover is detected (items in the queue start having a new ledger id), the Write Processor stops there until all writes to the current ledger are done. If a rollover and writes fail with LedgerClosedException, then such writes are upgraded to the current ledger and retried.\r\n    - This queue also performs throttling.\r\n- Additional Changes\r\n    - Minor changes required to support all of these\r\n    - Unit test changes and additions\r\n    - DataFrames no longer have sequence numbers due to the asynchrony. This may be re-added in the future but its too complex now.\r\n\r\n**Purpose of the change**\r\nFixes #1330. Performance improvement.\r\nFixes #1355. BugFix.\r\nFixes #1419. BugFix.\r\n\r\n**What the code does**\r\nSee description.\r\n\r\n**How to verify it**\r\nNew unit tests. Existing unit tests have been updated or enhanced.\r\nPlease refer to the Description field to figure out the general outline of the code.","created_at":"2017-06-05T04:00:53Z","updated_at":"2017-06-09T19:48:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2c4306b309fb015ecc57333b02479dcbe453399f","assignee":{"login":"fpj","id":572920,"avatar_url":"https://avatars0.githubusercontent.com/u/572920?v=3","gravatar_id":"","url":"https://api.github.com/users/fpj","html_url":"https://github.com/fpj","followers_url":"https://api.github.com/users/fpj/followers","following_url":"https://api.github.com/users/fpj/following{/other_user}","gists_url":"https://api.github.com/users/fpj/gists{/gist_id}","starred_url":"https://api.github.com/users/fpj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpj/subscriptions","organizations_url":"https://api.github.com/users/fpj/orgs","repos_url":"https://api.github.com/users/fpj/repos","events_url":"https://api.github.com/users/fpj/events{/privacy}","received_events_url":"https://api.github.com/users/fpj/received_events","type":"User","site_admin":false},"assignees":[{"login":"fpj","id":572920,"avatar_url":"https://avatars0.githubusercontent.com/u/572920?v=3","gravatar_id":"","url":"https://api.github.com/users/fpj","html_url":"https://github.com/fpj","followers_url":"https://api.github.com/users/fpj/followers","following_url":"https://api.github.com/users/fpj/following{/other_user}","gists_url":"https://api.github.com/users/fpj/gists{/gist_id}","starred_url":"https://api.github.com/users/fpj/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fpj/subscriptions","organizations_url":"https://api.github.com/users/fpj/orgs","repos_url":"https://api.github.com/users/fpj/repos","events_url":"https://api.github.com/users/fpj/events{/privacy}","received_events_url":"https://api.github.com/users/fpj/received_events","type":"User","site_admin":false},{"login":"arvindkandhare","id":2305381,"avatar_url":"https://avatars2.githubusercontent.com/u/2305381?v=3","gravatar_id":"","url":"https://api.github.com/users/arvindkandhare","html_url":"https://github.com/arvindkandhare","followers_url":"https://api.github.com/users/arvindkandhare/followers","following_url":"https://api.github.com/users/arvindkandhare/following{/other_user}","gists_url":"https://api.github.com/users/arvindkandhare/gists{/gist_id}","starred_url":"https://api.github.com/users/arvindkandhare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arvindkandhare/subscriptions","organizations_url":"https://api.github.com/users/arvindkandhare/orgs","repos_url":"https://api.github.com/users/arvindkandhare/repos","events_url":"https://api.github.com/users/arvindkandhare/events{/privacy}","received_events_url":"https://api.github.com/users/arvindkandhare/received_events","type":"User","site_admin":false},{"login":"tkaitchuck","id":4756752,"avatar_url":"https://avatars2.githubusercontent.com/u/4756752?v=3","gravatar_id":"","url":"https://api.github.com/users/tkaitchuck","html_url":"https://github.com/tkaitchuck","followers_url":"https://api.github.com/users/tkaitchuck/followers","following_url":"https://api.github.com/users/tkaitchuck/following{/other_user}","gists_url":"https://api.github.com/users/tkaitchuck/gists{/gist_id}","starred_url":"https://api.github.com/users/tkaitchuck/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tkaitchuck/subscriptions","organizations_url":"https://api.github.com/users/tkaitchuck/orgs","repos_url":"https://api.github.com/users/tkaitchuck/repos","events_url":"https://api.github.com/users/tkaitchuck/events{/privacy}","received_events_url":"https://api.github.com/users/tkaitchuck/received_events","type":"User","site_admin":false}],"requested_reviewers":[{"login":"arvindkandhare","id":2305381,"avatar_url":"https://avatars2.githubusercontent.com/u/2305381?v=3","gravatar_id":"","url":"https://api.github.com/users/arvindkandhare","html_url":"https://github.com/arvindkandhare","followers_url":"https://api.github.com/users/arvindkandhare/followers","following_url":"https://api.github.com/users/arvindkandhare/following{/other_user}","gists_url":"https://api.github.com/users/arvindkandhare/gists{/gist_id}","starred_url":"https://api.github.com/users/arvindkandhare/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arvindkandhare/subscriptions","organizations_url":"https://api.github.com/users/arvindkandhare/orgs","repos_url":"https://api.github.com/users/arvindkandhare/repos","events_url":"https://api.github.com/users/arvindkandhare/events{/privacy}","received_events_url":"https://api.github.com/users/arvindkandhare/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/pravega/pravega/pulls/1391/commits","review_comments_url":"https://api.github.com/repos/pravega/pravega/pulls/1391/comments","review_comment_url":"https://api.github.com/repos/pravega/pravega/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pravega/pravega/issues/1391/comments","statuses_url":"https://api.github.com/repos/pravega/pravega/statuses/5fce187db2f18d3901d953eef33aae902eeb1ed2","head":{"label":"pravega:issue-1330-tier1-perf","ref":"issue-1330-tier1-perf","sha":"5fce187db2f18d3901d953eef33aae902eeb1ed2","user":{"login":"pravega","id":25698199,"avatar_url":"https://avatars2.githubusercontent.com/u/25698199?v=3","gravatar_id":"","url":"https://api.github.com/users/pravega","html_url":"https://github.com/pravega","followers_url":"https://api.github.com/users/pravega/followers","following_url":"https://api.github.com/users/pravega/following{/other_user}","gists_url":"https://api.github.com/users/pravega/gists{/gist_id}","starred_url":"https://api.github.com/users/pravega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pravega/subscriptions","organizations_url":"https://api.github.com/users/pravega/orgs","repos_url":"https://api.github.com/users/pravega/repos","events_url":"https://api.github.com/users/pravega/events{/privacy}","received_events_url":"https://api.github.com/users/pravega/received_events","type":"Organization","site_admin":false},"repo":{"id":63096822,"name":"pravega","full_name":"pravega/pravega","owner":{"login":"pravega","id":25698199,"avatar_url":"https://avatars2.githubusercontent.com/u/25698199?v=3","gravatar_id":"","url":"https://api.github.com/users/pravega","html_url":"https://github.com/pravega","followers_url":"https://api.github.com/users/pravega/followers","following_url":"https://api.github.com/users/pravega/following{/other_user}","gists_url":"https://api.github.com/users/pravega/gists{/gist_id}","starred_url":"https://api.github.com/users/pravega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pravega/subscriptions","organizations_url":"https://api.github.com/users/pravega/orgs","repos_url":"https://api.github.com/users/pravega/repos","events_url":"https://api.github.com/users/pravega/events{/privacy}","received_events_url":"https://api.github.com/users/pravega/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pravega/pravega","description":"Pravega - Streaming as a new software defined storage primitive","fork":false,"url":"https://api.github.com/repos/pravega/pravega","forks_url":"https://api.github.com/repos/pravega/pravega/forks","keys_url":"https://api.github.com/repos/pravega/pravega/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pravega/pravega/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pravega/pravega/teams","hooks_url":"https://api.github.com/repos/pravega/pravega/hooks","issue_events_url":"https://api.github.com/repos/pravega/pravega/issues/events{/number}","events_url":"https://api.github.com/repos/pravega/pravega/events","assignees_url":"https://api.github.com/repos/pravega/pravega/assignees{/user}","branches_url":"https://api.github.com/repos/pravega/pravega/branches{/branch}","tags_url":"https://api.github.com/repos/pravega/pravega/tags","blobs_url":"https://api.github.com/repos/pravega/pravega/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pravega/pravega/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pravega/pravega/git/refs{/sha}","trees_url":"https://api.github.com/repos/pravega/pravega/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pravega/pravega/statuses/{sha}","languages_url":"https://api.github.com/repos/pravega/pravega/languages","stargazers_url":"https://api.github.com/repos/pravega/pravega/stargazers","contributors_url":"https://api.github.com/repos/pravega/pravega/contributors","subscribers_url":"https://api.github.com/repos/pravega/pravega/subscribers","subscription_url":"https://api.github.com/repos/pravega/pravega/subscription","commits_url":"https://api.github.com/repos/pravega/pravega/commits{/sha}","git_commits_url":"https://api.github.com/repos/pravega/pravega/git/commits{/sha}","comments_url":"https://api.github.com/repos/pravega/pravega/comments{/number}","issue_comment_url":"https://api.github.com/repos/pravega/pravega/issues/comments{/number}","contents_url":"https://api.github.com/repos/pravega/pravega/contents/{+path}","compare_url":"https://api.github.com/repos/pravega/pravega/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pravega/pravega/merges","archive_url":"https://api.github.com/repos/pravega/pravega/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pravega/pravega/downloads","issues_url":"https://api.github.com/repos/pravega/pravega/issues{/number}","pulls_url":"https://api.github.com/repos/pravega/pravega/pulls{/number}","milestones_url":"https://api.github.com/repos/pravega/pravega/milestones{/number}","notifications_url":"https://api.github.com/repos/pravega/pravega/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pravega/pravega/labels{/name}","releases_url":"https://api.github.com/repos/pravega/pravega/releases{/id}","deployments_url":"https://api.github.com/repos/pravega/pravega/deployments","created_at":"2016-07-11T19:41:03Z","updated_at":"2017-06-06T04:27:50Z","pushed_at":"2017-06-09T19:19:37Z","git_url":"git://github.com/pravega/pravega.git","ssh_url":"git@github.com:pravega/pravega.git","clone_url":"https://github.com/pravega/pravega.git","svn_url":"https://github.com/pravega/pravega","homepage":"http://pravega.io","size":18686,"stargazers_count":68,"watchers_count":68,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":24,"mirror_url":null,"open_issues_count":347,"forks":24,"open_issues":347,"watchers":68,"default_branch":"master"}},"base":{"label":"pravega:master","ref":"master","sha":"25c4d9c866a8e77ddf96815e0748e22afd04d771","user":{"login":"pravega","id":25698199,"avatar_url":"https://avatars2.githubusercontent.com/u/25698199?v=3","gravatar_id":"","url":"https://api.github.com/users/pravega","html_url":"https://github.com/pravega","followers_url":"https://api.github.com/users/pravega/followers","following_url":"https://api.github.com/users/pravega/following{/other_user}","gists_url":"https://api.github.com/users/pravega/gists{/gist_id}","starred_url":"https://api.github.com/users/pravega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pravega/subscriptions","organizations_url":"https://api.github.com/users/pravega/orgs","repos_url":"https://api.github.com/users/pravega/repos","events_url":"https://api.github.com/users/pravega/events{/privacy}","received_events_url":"https://api.github.com/users/pravega/received_events","type":"Organization","site_admin":false},"repo":{"id":63096822,"name":"pravega","full_name":"pravega/pravega","owner":{"login":"pravega","id":25698199,"avatar_url":"https://avatars2.githubusercontent.com/u/25698199?v=3","gravatar_id":"","url":"https://api.github.com/users/pravega","html_url":"https://github.com/pravega","followers_url":"https://api.github.com/users/pravega/followers","following_url":"https://api.github.com/users/pravega/following{/other_user}","gists_url":"https://api.github.com/users/pravega/gists{/gist_id}","starred_url":"https://api.github.com/users/pravega/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pravega/subscriptions","organizations_url":"https://api.github.com/users/pravega/orgs","repos_url":"https://api.github.com/users/pravega/repos","events_url":"https://api.github.com/users/pravega/events{/privacy}","received_events_url":"https://api.github.com/users/pravega/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pravega/pravega","description":"Pravega - Streaming as a new software defined storage primitive","fork":false,"url":"https://api.github.com/repos/pravega/pravega","forks_url":"https://api.github.com/repos/pravega/pravega/forks","keys_url":"https://api.github.com/repos/pravega/pravega/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pravega/pravega/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pravega/pravega/teams","hooks_url":"https://api.github.com/repos/pravega/pravega/hooks","issue_events_url":"https://api.github.com/repos/pravega/pravega/issues/events{/number}","events_url":"https://api.github.com/repos/pravega/pravega/events","assignees_url":"https://api.github.com/repos/pravega/pravega/assignees{/user}","branches_url":"https://api.github.com/repos/pravega/pravega/branches{/branch}","tags_url":"https://api.github.com/repos/pravega/pravega/tags","blobs_url":"https://api.github.com/repos/pravega/pravega/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pravega/pravega/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pravega/pravega/git/refs{/sha}","trees_url":"https://api.github.com/repos/pravega/pravega/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pravega/pravega/statuses/{sha}","languages_url":"https://api.github.com/repos/pravega/pravega/languages","stargazers_url":"https://api.github.com/repos/pravega/pravega/stargazers","contributors_url":"https://api.github.com/repos/pravega/pravega/contributors","subscribers_url":"https://api.github.com/repos/pravega/pravega/subscribers","subscription_url":"https://api.github.com/repos/pravega/pravega/subscription","commits_url":"https://api.github.com/repos/pravega/pravega/commits{/sha}","git_commits_url":"https://api.github.com/repos/pravega/pravega/git/commits{/sha}","comments_url":"https://api.github.com/repos/pravega/pravega/comments{/number}","issue_comment_url":"https://api.github.com/repos/pravega/pravega/issues/comments{/number}","contents_url":"https://api.github.com/repos/pravega/pravega/contents/{+path}","compare_url":"https://api.github.com/repos/pravega/pravega/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pravega/pravega/merges","archive_url":"https://api.github.com/repos/pravega/pravega/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pravega/pravega/downloads","issues_url":"https://api.github.com/repos/pravega/pravega/issues{/number}","pulls_url":"https://api.github.com/repos/pravega/pravega/pulls{/number}","milestones_url":"https://api.github.com/repos/pravega/pravega/milestones{/number}","notifications_url":"https://api.github.com/repos/pravega/pravega/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pravega/pravega/labels{/name}","releases_url":"https://api.github.com/repos/pravega/pravega/releases{/id}","deployments_url":"https://api.github.com/repos/pravega/pravega/deployments","created_at":"2016-07-11T19:41:03Z","updated_at":"2017-06-06T04:27:50Z","pushed_at":"2017-06-09T19:19:37Z","git_url":"git://github.com/pravega/pravega.git","ssh_url":"git@github.com:pravega/pravega.git","clone_url":"https://github.com/pravega/pravega.git","svn_url":"https://github.com/pravega/pravega","homepage":"http://pravega.io","size":18686,"stargazers_count":68,"watchers_count":68,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":24,"mirror_url":null,"open_issues_count":347,"forks":24,"open_issues":347,"watchers":68,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pravega/pravega/pulls/1391"},"html":{"href":"https://github.com/pravega/pravega/pull/1391"},"issue":{"href":"https://api.github.com/repos/pravega/pravega/issues/1391"},"comments":{"href":"https://api.github.com/repos/pravega/pravega/issues/1391/comments"},"review_comments":{"href":"https://api.github.com/repos/pravega/pravega/pulls/1391/comments"},"review_comment":{"href":"https://api.github.com/repos/pravega/pravega/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pravega/pravega/pulls/1391/commits"},"statuses":{"href":"https://api.github.com/repos/pravega/pravega/statuses/5fce187db2f18d3901d953eef33aae902eeb1ed2"}}}}
{"actor":{"display_login":"andreipaduroiu"}}