Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-2600

Interrupted system call error in MessagingPort::recv() not propagated to the user code

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major - P3
    • Resolution: Incomplete
    • Affects Version/s: 1.6.5, 1.7.6
    • Fix Version/s: None
    • Component/s: Internal Client
    • Labels:
    • Environment:
      MacOS X 10.6.6 (appears to be on any unix platform)
    • Operating System:
      ALL

      Description

      My program consists of short-live multiple processes, parent processes are often receive SIGCHLD, it sometimes happen during mongodb query execution or data retrieval via cursor. When signal is received, MessagingPort::recv( char * buf , int len ) throws SocketException (message.cpp:653 in 1.7.6 sources), that exception is then caught in MessagingPort::recv(Message& m) (message.cpp:477 in 1.7.6 sources) and false is returned. Returned value is ignored by DBClientConnection::recv( Message &m ) (dbclient.cpp:892) and my program does not receive any information about that exception, it just looks like query found no results (while matching documents are in the database).

      Would be good to just allow user code to receive SocketException or DBException, then user code could repeat the query.

      Thanks.

        Attachments

          Activity

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            skepner Eugene Skepner
            Participants:
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: