{"action":"closed","issue":{"url":"https://api.github.com/repos/oklog/oklog/issues/133","repository_url":"https://api.github.com/repos/oklog/oklog","labels_url":"https://api.github.com/repos/oklog/oklog/issues/133/labels{/name}","comments_url":"https://api.github.com/repos/oklog/oklog/issues/133/comments","events_url":"https://api.github.com/repos/oklog/oklog/issues/133/events","html_url":"https://github.com/oklog/oklog/issues/133","id":337263334,"node_id":"MDU6SXNzdWUzMzcyNjMzMzQ=","number":133,"title":"Proposal: Create ULID from timestamp contained in record","user":{"login":"oliverhausler","id":8090341,"node_id":"MDQ6VXNlcjgwOTAzNDE=","avatar_url":"https://avatars2.githubusercontent.com/u/8090341?v=4","gravatar_id":"","url":"https://api.github.com/users/oliverhausler","html_url":"https://github.com/oliverhausler","followers_url":"https://api.github.com/users/oliverhausler/followers","following_url":"https://api.github.com/users/oliverhausler/following{/other_user}","gists_url":"https://api.github.com/users/oliverhausler/gists{/gist_id}","starred_url":"https://api.github.com/users/oliverhausler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oliverhausler/subscriptions","organizations_url":"https://api.github.com/users/oliverhausler/orgs","repos_url":"https://api.github.com/users/oliverhausler/repos","events_url":"https://api.github.com/users/oliverhausler/events{/privacy}","received_events_url":"https://api.github.com/users/oliverhausler/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-07-01T04:47:46Z","updated_at":"2018-07-02T02:11:34Z","closed_at":"2018-07-02T02:11:34Z","author_association":"NONE","body":"When logging from a multi-threaded language like Java, multiple loggers may collect and forward logs, which means, when these are inserted:\r\n\r\n- the lines may not be in sequence.\r\n- the lines may be delayed.\r\n\r\nIf we stamp such records after ingest, we add a second (global) timestamp, which is not the true time when the record has been produced.\r\n\r\nGlobal timestamps let us account for clock skew to compare between multiple log sources when we query logs, but it's much more important that logs from the same source are in sequence and carry the correct timestamp of when they have been produced on the originating system.\r\n\r\nI would propose:\r\n\r\nInstead of creating and prepending the ULID locally, assume that each record is stamped with an epoch timestamp (first characters) and replace that timestamp with the ULID (which uses the epoch timestamp as input)."}}
{"actor":{"display_login":"peterbourgon"}}