We run a Hudson continuous integration server that does a build, then runs a set of tests.

One of the tests is a Thrift client. It spawns multiple Thrift server processes, then uses them to perform various operations.

This works almost all of the time.

Once in a while, though, we get an error:

server_test Error: apache::thrift::TApplicationException: Invalid method name: 'listWorkers'

which is generated by the generated server code. It seems that the function name can't be found in the "processMap_" member variable.

This always happens on the very first RPC call from the client. We have never seen it later. And, of course, the 'listWorkers' method does exist. The test mostly just works.

While I was working on the Windows port of the C++ library, I noticed that the non-blocking stress test (test/cpp/src/nb-main.cpp) does a sleep(1) between starting the servers (there are 2) and starting to do client processing. But the regular stress test (test/cpp/src/main.cpp) doesn't have the sleep() call. Is there some race condition that the sleep() avoids? And if so, is it only a problem when launching multiple server processes/threads?

Has anyone else seen this, or does anyone know anything about it?

Thanks,
Rush

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to