{"action":"created","comment":{"url":"https://api.github.com/repos/criteo/garmadon/pulls/comments/234940799","pull_request_review_id":176656516,"id":234940799,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNDk0MDc5OQ==","diff_hunk":"@@ -0,0 +1,67 @@\n+package com.criteo.hadoop.garmadon.hdfs.writer;\n+\n+import com.criteo.hadoop.garmadon.reader.Offset;\n+import org.apache.hadoop.fs.Path;\n+\n+import java.io.IOException;\n+import java.time.Instant;\n+import java.time.temporal.TemporalAmount;\n+\n+/**\n+ * Consumer exposing an \"expired\" status (but not auto-closing) after a set idle time or number of messages. When\n+ * closing, commit the latest processed offset\n+ *\n+ * @param <MessageType>     The actual consumed message type\n+ */\n+public class ExpiringConsumer<MessageType> implements CloseableBiConsumer<MessageType, Offset> {\n+    private final CloseableBiConsumer<MessageType, Offset> writer;\n+    private final TemporalAmount expirationDelay;\n+    private long messagesReceived;\n+    private long messagesBeforeExpiring;","path":"readers/hdfs/src/main/java/com/criteo/hadoop/garmadon/hdfs/writer/ExpiringConsumer.java","position":20,"original_position":20,"commit_id":"70985556db0f387e94218a92be63d12728f11dd7","original_commit_id":"70985556db0f387e94218a92be63d12728f11dd7","user":{"login":"jpbempel","id":4610701,"node_id":"MDQ6VXNlcjQ2MTA3MDE=","avatar_url":"https://avatars3.githubusercontent.com/u/4610701?v=4","gravatar_id":"","url":"https://api.github.com/users/jpbempel","html_url":"https://github.com/jpbempel","followers_url":"https://api.github.com/users/jpbempel/followers","following_url":"https://api.github.com/users/jpbempel/following{/other_user}","gists_url":"https://api.github.com/users/jpbempel/gists{/gist_id}","starred_url":"https://api.github.com/users/jpbempel/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpbempel/subscriptions","organizations_url":"https://api.github.com/users/jpbempel/orgs","repos_url":"https://api.github.com/users/jpbempel/repos","events_url":"https://api.github.com/users/jpbempel/events{/privacy}","received_events_url":"https://api.github.com/users/jpbempel/received_events","type":"User","site_admin":false},"body":"final?","created_at":"2018-11-20T10:12:20Z","updated_at":"2018-11-20T10:35:52Z","html_url":"https://github.com/criteo/garmadon/pull/32#discussion_r234940799","pull_request_url":"https://api.github.com/repos/criteo/garmadon/pulls/32","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/criteo/garmadon/pulls/comments/234940799"},"html":{"href":"https://github.com/criteo/garmadon/pull/32#discussion_r234940799"},"pull_request":{"href":"https://api.github.com/repos/criteo/garmadon/pulls/32"}}},"pull_request":{"url":"https://api.github.com/repos/criteo/garmadon/pulls/32","id":232043259,"node_id":"MDExOlB1bGxSZXF1ZXN0MjMyMDQzMjU5","html_url":"https://github.com/criteo/garmadon/pull/32","diff_url":"https://github.com/criteo/garmadon/pull/32.diff","patch_url":"https://github.com/criteo/garmadon/pull/32.patch","issue_url":"https://api.github.com/repos/criteo/garmadon/issues/32","number":32,"state":"open","locked":false,"title":"WIP - Hdfs exporter","user":{"login":"gray-matter","id":1437238,"node_id":"MDQ6VXNlcjE0MzcyMzg=","avatar_url":"https://avatars3.githubusercontent.com/u/1437238?v=4","gravatar_id":"","url":"https://api.github.com/users/gray-matter","html_url":"https://github.com/gray-matter","followers_url":"https://api.github.com/users/gray-matter/followers","following_url":"https://api.github.com/users/gray-matter/following{/other_user}","gists_url":"https://api.github.com/users/gray-matter/gists{/gist_id}","starred_url":"https://api.github.com/users/gray-matter/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gray-matter/subscriptions","organizations_url":"https://api.github.com/users/gray-matter/orgs","repos_url":"https://api.github.com/users/gray-matter/repos","events_url":"https://api.github.com/users/gray-matter/events{/privacy}","received_events_url":"https://api.github.com/users/gray-matter/received_events","type":"User","site_admin":false},"body":"Pushed for early review, will review & polish the code a bit later","created_at":"2018-11-19T16:52:03Z","updated_at":"2018-11-20T10:35:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"418cfa2355335dd2dc3c58b2093cbc5f4c2486d6","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/criteo/garmadon/pulls/32/commits","review_comments_url":"https://api.github.com/repos/criteo/garmadon/pulls/32/comments","review_comment_url":"https://api.github.com/repos/criteo/garmadon/pulls/comments{/number}","comments_url":"https://api.github.com/repos/criteo/garmadon/issues/32/comments","statuses_url":"https://api.github.com/repos/criteo/garmadon/statuses/70985556db0f387e94218a92be63d12728f11dd7","head":{"label":"criteo:hdfs-reader-draft","ref":"hdfs-reader-draft","sha":"70985556db0f387e94218a92be63d12728f11dd7","user":{"login":"criteo","id":1713646,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MTM2NDY=","avatar_url":"https://avatars2.githubusercontent.com/u/1713646?v=4","gravatar_id":"","url":"https://api.github.com/users/criteo","html_url":"https://github.com/criteo","followers_url":"https://api.github.com/users/criteo/followers","following_url":"https://api.github.com/users/criteo/following{/other_user}","gists_url":"https://api.github.com/users/criteo/gists{/gist_id}","starred_url":"https://api.github.com/users/criteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/criteo/subscriptions","organizations_url":"https://api.github.com/users/criteo/orgs","repos_url":"https://api.github.com/users/criteo/repos","events_url":"https://api.github.com/users/criteo/events{/privacy}","received_events_url":"https://api.github.com/users/criteo/received_events","type":"Organization","site_admin":false},"repo":{"id":152245376,"node_id":"MDEwOlJlcG9zaXRvcnkxNTIyNDUzNzY=","name":"garmadon","full_name":"criteo/garmadon","private":false,"owner":{"login":"criteo","id":1713646,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MTM2NDY=","avatar_url":"https://avatars2.githubusercontent.com/u/1713646?v=4","gravatar_id":"","url":"https://api.github.com/users/criteo","html_url":"https://github.com/criteo","followers_url":"https://api.github.com/users/criteo/followers","following_url":"https://api.github.com/users/criteo/following{/other_user}","gists_url":"https://api.github.com/users/criteo/gists{/gist_id}","starred_url":"https://api.github.com/users/criteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/criteo/subscriptions","organizations_url":"https://api.github.com/users/criteo/orgs","repos_url":"https://api.github.com/users/criteo/repos","events_url":"https://api.github.com/users/criteo/events{/privacy}","received_events_url":"https://api.github.com/users/criteo/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/criteo/garmadon","description":"Java event logs collector for hadoop and frameworks","fork":false,"url":"https://api.github.com/repos/criteo/garmadon","forks_url":"https://api.github.com/repos/criteo/garmadon/forks","keys_url":"https://api.github.com/repos/criteo/garmadon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/criteo/garmadon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/criteo/garmadon/teams","hooks_url":"https://api.github.com/repos/criteo/garmadon/hooks","issue_events_url":"https://api.github.com/repos/criteo/garmadon/issues/events{/number}","events_url":"https://api.github.com/repos/criteo/garmadon/events","assignees_url":"https://api.github.com/repos/criteo/garmadon/assignees{/user}","branches_url":"https://api.github.com/repos/criteo/garmadon/branches{/branch}","tags_url":"https://api.github.com/repos/criteo/garmadon/tags","blobs_url":"https://api.github.com/repos/criteo/garmadon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/criteo/garmadon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/criteo/garmadon/git/refs{/sha}","trees_url":"https://api.github.com/repos/criteo/garmadon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/criteo/garmadon/statuses/{sha}","languages_url":"https://api.github.com/repos/criteo/garmadon/languages","stargazers_url":"https://api.github.com/repos/criteo/garmadon/stargazers","contributors_url":"https://api.github.com/repos/criteo/garmadon/contributors","subscribers_url":"https://api.github.com/repos/criteo/garmadon/subscribers","subscription_url":"https://api.github.com/repos/criteo/garmadon/subscription","commits_url":"https://api.github.com/repos/criteo/garmadon/commits{/sha}","git_commits_url":"https://api.github.com/repos/criteo/garmadon/git/commits{/sha}","comments_url":"https://api.github.com/repos/criteo/garmadon/comments{/number}","issue_comment_url":"https://api.github.com/repos/criteo/garmadon/issues/comments{/number}","contents_url":"https://api.github.com/repos/criteo/garmadon/contents/{+path}","compare_url":"https://api.github.com/repos/criteo/garmadon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/criteo/garmadon/merges","archive_url":"https://api.github.com/repos/criteo/garmadon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/criteo/garmadon/downloads","issues_url":"https://api.github.com/repos/criteo/garmadon/issues{/number}","pulls_url":"https://api.github.com/repos/criteo/garmadon/pulls{/number}","milestones_url":"https://api.github.com/repos/criteo/garmadon/milestones{/number}","notifications_url":"https://api.github.com/repos/criteo/garmadon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/criteo/garmadon/labels{/name}","releases_url":"https://api.github.com/repos/criteo/garmadon/releases{/id}","deployments_url":"https://api.github.com/repos/criteo/garmadon/deployments","created_at":"2018-10-09T12:15:07Z","updated_at":"2018-11-19T13:50:03Z","pushed_at":"2018-11-20T09:57:52Z","git_url":"git://github.com/criteo/garmadon.git","ssh_url":"git@github.com:criteo/garmadon.git","clone_url":"https://github.com/criteo/garmadon.git","svn_url":"https://github.com/criteo/garmadon","homepage":"","size":618,"stargazers_count":6,"watchers_count":6,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":8,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":4,"open_issues":8,"watchers":6,"default_branch":"master"}},"base":{"label":"criteo:master","ref":"master","sha":"ed63e6f373846454f8a0cb1200194fa209fe5af8","user":{"login":"criteo","id":1713646,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MTM2NDY=","avatar_url":"https://avatars2.githubusercontent.com/u/1713646?v=4","gravatar_id":"","url":"https://api.github.com/users/criteo","html_url":"https://github.com/criteo","followers_url":"https://api.github.com/users/criteo/followers","following_url":"https://api.github.com/users/criteo/following{/other_user}","gists_url":"https://api.github.com/users/criteo/gists{/gist_id}","starred_url":"https://api.github.com/users/criteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/criteo/subscriptions","organizations_url":"https://api.github.com/users/criteo/orgs","repos_url":"https://api.github.com/users/criteo/repos","events_url":"https://api.github.com/users/criteo/events{/privacy}","received_events_url":"https://api.github.com/users/criteo/received_events","type":"Organization","site_admin":false},"repo":{"id":152245376,"node_id":"MDEwOlJlcG9zaXRvcnkxNTIyNDUzNzY=","name":"garmadon","full_name":"criteo/garmadon","private":false,"owner":{"login":"criteo","id":1713646,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE3MTM2NDY=","avatar_url":"https://avatars2.githubusercontent.com/u/1713646?v=4","gravatar_id":"","url":"https://api.github.com/users/criteo","html_url":"https://github.com/criteo","followers_url":"https://api.github.com/users/criteo/followers","following_url":"https://api.github.com/users/criteo/following{/other_user}","gists_url":"https://api.github.com/users/criteo/gists{/gist_id}","starred_url":"https://api.github.com/users/criteo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/criteo/subscriptions","organizations_url":"https://api.github.com/users/criteo/orgs","repos_url":"https://api.github.com/users/criteo/repos","events_url":"https://api.github.com/users/criteo/events{/privacy}","received_events_url":"https://api.github.com/users/criteo/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/criteo/garmadon","description":"Java event logs collector for hadoop and frameworks","fork":false,"url":"https://api.github.com/repos/criteo/garmadon","forks_url":"https://api.github.com/repos/criteo/garmadon/forks","keys_url":"https://api.github.com/repos/criteo/garmadon/keys{/key_id}","collaborators_url":"https://api.github.com/repos/criteo/garmadon/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/criteo/garmadon/teams","hooks_url":"https://api.github.com/repos/criteo/garmadon/hooks","issue_events_url":"https://api.github.com/repos/criteo/garmadon/issues/events{/number}","events_url":"https://api.github.com/repos/criteo/garmadon/events","assignees_url":"https://api.github.com/repos/criteo/garmadon/assignees{/user}","branches_url":"https://api.github.com/repos/criteo/garmadon/branches{/branch}","tags_url":"https://api.github.com/repos/criteo/garmadon/tags","blobs_url":"https://api.github.com/repos/criteo/garmadon/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/criteo/garmadon/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/criteo/garmadon/git/refs{/sha}","trees_url":"https://api.github.com/repos/criteo/garmadon/git/trees{/sha}","statuses_url":"https://api.github.com/repos/criteo/garmadon/statuses/{sha}","languages_url":"https://api.github.com/repos/criteo/garmadon/languages","stargazers_url":"https://api.github.com/repos/criteo/garmadon/stargazers","contributors_url":"https://api.github.com/repos/criteo/garmadon/contributors","subscribers_url":"https://api.github.com/repos/criteo/garmadon/subscribers","subscription_url":"https://api.github.com/repos/criteo/garmadon/subscription","commits_url":"https://api.github.com/repos/criteo/garmadon/commits{/sha}","git_commits_url":"https://api.github.com/repos/criteo/garmadon/git/commits{/sha}","comments_url":"https://api.github.com/repos/criteo/garmadon/comments{/number}","issue_comment_url":"https://api.github.com/repos/criteo/garmadon/issues/comments{/number}","contents_url":"https://api.github.com/repos/criteo/garmadon/contents/{+path}","compare_url":"https://api.github.com/repos/criteo/garmadon/compare/{base}...{head}","merges_url":"https://api.github.com/repos/criteo/garmadon/merges","archive_url":"https://api.github.com/repos/criteo/garmadon/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/criteo/garmadon/downloads","issues_url":"https://api.github.com/repos/criteo/garmadon/issues{/number}","pulls_url":"https://api.github.com/repos/criteo/garmadon/pulls{/number}","milestones_url":"https://api.github.com/repos/criteo/garmadon/milestones{/number}","notifications_url":"https://api.github.com/repos/criteo/garmadon/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/criteo/garmadon/labels{/name}","releases_url":"https://api.github.com/repos/criteo/garmadon/releases{/id}","deployments_url":"https://api.github.com/repos/criteo/garmadon/deployments","created_at":"2018-10-09T12:15:07Z","updated_at":"2018-11-19T13:50:03Z","pushed_at":"2018-11-20T09:57:52Z","git_url":"git://github.com/criteo/garmadon.git","ssh_url":"git@github.com:criteo/garmadon.git","clone_url":"https://github.com/criteo/garmadon.git","svn_url":"https://github.com/criteo/garmadon","homepage":"","size":618,"stargazers_count":6,"watchers_count":6,"language":"Java","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"archived":false,"open_issues_count":8,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":4,"open_issues":8,"watchers":6,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/criteo/garmadon/pulls/32"},"html":{"href":"https://github.com/criteo/garmadon/pull/32"},"issue":{"href":"https://api.github.com/repos/criteo/garmadon/issues/32"},"comments":{"href":"https://api.github.com/repos/criteo/garmadon/issues/32/comments"},"review_comments":{"href":"https://api.github.com/repos/criteo/garmadon/pulls/32/comments"},"review_comment":{"href":"https://api.github.com/repos/criteo/garmadon/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/criteo/garmadon/pulls/32/commits"},"statuses":{"href":"https://api.github.com/repos/criteo/garmadon/statuses/70985556db0f387e94218a92be63d12728f11dd7"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jpbempel"}}