)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"b992455e6dad434c5855e9ef492633143c09e450","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This change set conditions the fsync call not to run if the file handle"},{"line_number":14,"context_line":"represents a FIFO or socket."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"WIP: Core buy-in"},{"line_number":17,"context_line":"WIP: UT"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://review.openstack.org/#/c/441246/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ffe62b97_9ef4a7f2","line":16,"updated":"2017-03-29 10:35:48.000000000","message":"I\u0027m not core, but for my buy in I\u0027d want:\n\n* Confirmation the PowerVM driver is at least heading upstream\n* A comment explaining that it\u0027s required by the PowerVM driver, which isn\u0027t in tree\n\nIt\u0027s pretty innocuous change. Still, we don\u0027t make a habit of checking that files we open aren\u0027t pipes everywhere, so it\u0027s definitely out of the ordinary.","commit_id":"74b7876353972090113cf96a28cd7595dcb1684a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7c060f861ca94b33c491b082dc1048d362b92189","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This change set conditions the fsync call not to run if the file handle"},{"line_number":14,"context_line":"represents a FIFO or socket."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"WIP: Core buy-in"},{"line_number":17,"context_line":"WIP: UT"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://review.openstack.org/#/c/441246/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ffe62b97_ce55d2fb","line":16,"in_reply_to":"ffe62b97_9ef4a7f2","updated":"2017-03-29 14:08:58.000000000","message":"Thanks for the feedback.\n\nAs Drew mentioned, we\u0027re upstreaming right now.  In fact, it was in the process of testing one of those patches (https://review.openstack.org/443189) that this problem was discovered.\n\nI agree we wouldn\u0027t want to have to go through the whole of OpenStack validating file types for fsync.  Thinking this must have been encountered before, I looked in oslo.* for a util that already does this.  Nada.  More greppage discovered that there are actually zero hits (other than this one) of fsync in either the nova or glance projects.  (There\u0027s one instance of fdatasync in libvirt/storage/lvm.py.)\n\nI\u0027m not sure what that tells us - other than that use of fsync itself is definitely out of the ordinary too ;-)","commit_id":"74b7876353972090113cf96a28cd7595dcb1684a"}],"nova/utils.py":[{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"6f61cf09b1c3f968d03150b9a43f6d29577ca07b","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"    fileno \u003d fh.fileno()"},{"line_number":1506,"context_line":"    mode \u003d os.fstat(fileno).st_mode"},{"line_number":1507,"context_line":"    # A pipe answers True to S_ISFIFO"},{"line_number":1508,"context_line":"    if not any([check(mode) for check in (stat.S_ISFIFO, stat.S_ISSOCK)]):"},{"line_number":1509,"context_line":"        os.fsync(fileno)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_301d8a0f","line":1508,"updated":"2017-03-30 14:13:37.000000000","message":"Incidentally, if you removed [ and ] from the above line it would become a generator comprehension and have exactly the same effect.","commit_id":"8c52b43c0c05bf56b46494822829ef2358654800"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"9c44cce9bec181c0483bd5a5631e9c80650524b3","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"    fileno \u003d fh.fileno()"},{"line_number":1506,"context_line":"    mode \u003d os.fstat(fileno).st_mode"},{"line_number":1507,"context_line":"    # A pipe answers True to S_ISFIFO"},{"line_number":1508,"context_line":"    if not any([check(mode) for check in (stat.S_ISFIFO, stat.S_ISSOCK)]):"},{"line_number":1509,"context_line":"        os.fsync(fileno)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_593a79cd","line":1508,"in_reply_to":"ffe62b97_301d8a0f","updated":"2017-03-30 14:57:36.000000000","message":"Ah, neat!  I can never keep straight which of these suckers needs a real list vs. a generator.  And actually it\u0027s not the same effect because it should short-circuit if the first one hits, which is more efficient.  Will update.","commit_id":"8c52b43c0c05bf56b46494822829ef2358654800"},{"author":{"_account_id":9555,"name":"Matthew Booth","email":"mbooth@redhat.com","username":"MatthewBooth"},"change_message_id":"c90cb2038ee87c3a19e9e4672c96f75402bc5323","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"    fileno \u003d fh.fileno()"},{"line_number":1506,"context_line":"    mode \u003d os.fstat(fileno).st_mode"},{"line_number":1507,"context_line":"    # A pipe answers True to S_ISFIFO"},{"line_number":1508,"context_line":"    if not any([check(mode) for check in (stat.S_ISFIFO, stat.S_ISSOCK)]):"},{"line_number":1509,"context_line":"        os.fsync(fileno)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dfeb2761_51d92981","line":1508,"in_reply_to":"ffe62b97_593a79cd","updated":"2017-03-31 10:03:53.000000000","message":"Heh, I deliberately didn\u0027t say it would be more efficient, because with such a small list and such a trivial function (they\u0027re just bit tests), the generator overhead may be more significant.\n\nIt\u0027s slightly prettier and equally readable imho, though :)","commit_id":"8c52b43c0c05bf56b46494822829ef2358654800"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9c687730e3f37ad1bc521c1c9bb3a6ce128d561a","unresolved":false,"context_lines":[{"line_number":1357,"context_line":"    return missing"},{"line_number":1358,"context_line":""},{"line_number":1359,"context_line":""},{"line_number":1360,"context_line":"def safe_fsync(fh):"},{"line_number":1361,"context_line":"    \"\"\"Performs os.fsync on a filehandle only if it is supported."},{"line_number":1362,"context_line":""},{"line_number":1363,"context_line":"    fsync on a pipe, FIFO, or socket raises OSError with EINVAL.  This method"}],"source_content_type":"text/x-python","patch_set":7,"id":"7f287b81_5d3a3998","line":1360,"range":{"start_line":1360,"start_character":0,"end_line":1360,"end_character":19},"updated":"2017-08-24 16:15:54.000000000","message":"This is only used in one place, fwict. I wonder if it\u0027s actually worth placing in the bag-of-cats that is \u0027utils\u0027, or would be be better off inlining this/using a nested function?","commit_id":"0bc463d81d1f7ff16eed0e5f74e89e335d4ccfa6"}]}
