)]}'
{"nodepool/elements/initialize-urandom/static/usr/local/bin/initialize-urandom.py":[{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"6555c911d1203530f550cee75116687b7047be28","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    initialized.  The kernel will output a notice[1] if this happens."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    In order to avoid the situation where urandom is used when"},{"line_number":53,"context_line":"    uninitialized, the Linux diverts entropy from timers and"},{"line_number":54,"context_line":"    interrupts to the nonblocking pool (instead of the input pool)"},{"line_number":55,"context_line":"    until it is initialized.  In this way, as the system boots, the"},{"line_number":56,"context_line":"    nonblocking pool accumulates entropy first, reducing the time"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_3c6c699b","line":53,"updated":"2016-08-17 21:24:03.000000000","message":"\"the Linux kernel\", or just \"Linux\" perhaps?","commit_id":"e014bede5f3fb081502464c72514bb7c3a31aae2"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"c10109d07a405c9c0d0a70aecf479dabe29792d7","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        # Read one byte from getrandom.  This will block until the"},{"line_number":211,"context_line":"        # nonblocking pool is initialized."},{"line_number":212,"context_line":"        r, buf \u003d self.getrandom(1)"},{"line_number":213,"context_line":"        assert(r \u003d\u003d 1)"},{"line_number":214,"context_line":"        print(\"Nonblocking pool initialized\")"},{"line_number":215,"context_line":"        # Tell the other thread to stop running."},{"line_number":216,"context_line":"        self.running \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_fcd491ec","line":213,"updated":"2016-08-17 21:32:42.000000000","message":"If I run this on an already initialized system, in my case centos7 running within the OSIC cloud, r returned \"-1\" which raised AssertionError and caused the loop to run indefinitely, I let the script run for a few minutes before I killed the process. Maybe we need to try/except-\u003esignal?","commit_id":"e014bede5f3fb081502464c72514bb7c3a31aae2"},{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"4c333b41e5c113c2eb2132a3a7a059ef5680a0dc","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        # Read one byte from getrandom.  This will block until the"},{"line_number":211,"context_line":"        # nonblocking pool is initialized."},{"line_number":212,"context_line":"        r, buf \u003d self.getrandom(1)"},{"line_number":213,"context_line":"        assert(r \u003d\u003d 1)"},{"line_number":214,"context_line":"        print(\"Nonblocking pool initialized\")"},{"line_number":215,"context_line":"        # Tell the other thread to stop running."},{"line_number":216,"context_line":"        self.running \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_5f0b17d6","line":213,"updated":"2016-08-17 21:44:54.000000000","message":"That\u0027s a good point that the error case here sort of falls apart.  I\u0027ll take care of that.\n\nHowever, if it\u0027s already initialized, it should not return -1, it should immediately return 1.  It\u0027s likely that the actual cause of the error is the nonportability of this code -- the syscall number may very well be different on centos7.","commit_id":"e014bede5f3fb081502464c72514bb7c3a31aae2"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"d38dbe1c274b318f3a0708ebc062f5b17ed3c2a8","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        # Read one byte from getrandom.  This will block until the"},{"line_number":211,"context_line":"        # nonblocking pool is initialized."},{"line_number":212,"context_line":"        r, buf \u003d self.getrandom(1)"},{"line_number":213,"context_line":"        assert(r \u003d\u003d 1)"},{"line_number":214,"context_line":"        print(\"Nonblocking pool initialized\")"},{"line_number":215,"context_line":"        # Tell the other thread to stop running."},{"line_number":216,"context_line":"        self.running \u003d False"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_42497ecf","line":213,"in_reply_to":"3ac371cc_5f0b17d6","updated":"2016-08-17 22:14:55.000000000","message":"I tested this on a few other systems, all of which were instances in OSIC cloud1, and both centos7 and trusty returned \"-1\" while xenial returned \"1\". Maybe the issue is the return value is different in old kernels?\n\nxenial:  4.4.0-21-generic\ntrusty:  3.13.0-66-generic\ncentos7: 3.10.0-327.13.1.el7.x86_64","commit_id":"e014bede5f3fb081502464c72514bb7c3a31aae2"}]}
