You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@thrift.apache.org by Rush Manbert <ru...@manbert.com> on 2009/09/25 19:46:31 UTC

C++ Server Test Failure

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