Uploaded image for project: 'Mesos'
  1. Mesos
  2. MESOS-8670

Implement `process::io::read/write` using Thread Pool API

Attach filesAttach ScreenshotVotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.7.0
    • None

    Description

      process::io::read/write currently use a read/write loop with io:: poll, which is implemented by the libevent loop. This doesn't work on Windows, because libevent only works on sockets. Furthermore, the reads/writes are blocking on Windows for pipes. Instead, we should use I/O completion ports with overlapped I/O and the thread pool API to implement read/write.

      Note: when read/write receive a file/socket/pipe handle in overlapped mode, they will assign them to the IOCP handle. The stout function os::nonblock will (continue to) be a no-op on Windows. It does not make sense to make os::nonblock do the association, as the IOCP handle is a global in libprocess, of which stout has no knowledge.

      Attachments

        Issue Links

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            akagup Akash Gupta
            akagup Akash Gupta
            Andrew Schwartzmeyer Andrew Schwartzmeyer
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment