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

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

      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.

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

              Created:
              Updated:
              Resolved: