@Mike: Will definitely consider implementing that. Thanks Aaron and Mike for your help.
Really appreciate it. On Tue, May 27, 2014 at 9:39 PM, Mike Riley <[email protected]> wrote: > This is probably the single most common error that anyone will see when > they try to set up thrift, it usually means that your server is outputting > something other than the output generated by thrift, and particularly in > the case of PHP, it's most commonly just an error, warning or notice that > gets emmitted and not handled elsewhere, hence output along with the rest > of your thrift bytes. The client sees this as nonsense and freaks out. > > The best way to debug this is: > > set display_errors=0 > install your own error handler for the more serious problems that logs them > somewhere, but doesn't output them > catch all exceptions thrown during the duration of your thrift RPC call and > throw them back over the wire using some kind of generic extension to > TException so that the client can interpret them > > you should be able to diagnose the problem using a combination of your > error logs and inspecting any thrown exceptions client side > > > > On Tue, May 27, 2014 at 2:31 PM, Phillip Simbwa <[email protected]> wrote: > >> @Aaron: >> >> Thanks for your quick response. >> >> Let me look into that and see.. >> >> Thanks >> >> >> On Tue, May 27, 2014 at 8:07 PM, Aaron Mefford <[email protected]> wrote: >> > Have you verified that the Protocol and Transport on each end are the >> same? >> > Are you using a client with the same generated stubs, or is the client in >> > another language? >> > >> > It looks like the server was expecting to read more bytes than it was >> sent. >> > This would seem to point to some difference in expectations between the >> > client and the server. For instance, if the client were using the >> compact >> > binary protocol it would be sending fewer bytes than would be expected by >> > the standard binary protocol. >> > >> > I am by no means an expert in Thrift or PHP but wanted to offer my >> > observations in case they happen to help you find your problem. >> > >> > >> > On 5/27/14, 11:00 AM, Phillip Simbwa wrote: >> >> >> >> Greetings, >> >> >> >> I think the thrift-0.9.1 php libs have a bug somewhere. I seem to get >> >> this when I try to read the returned values from a client RPC call. >> >> >> >> >> >> 2014/05/27 18:56:54 [error] 8129#0: *9 FastCGI sent in stderr: "PHP >> >> message: PHP Fatal error: Uncaught exception >> >> 'Thrift\Exception\TTransportException' with message 'TSocket: timed >> >> out reading 4 bytes from localhost:9090' in >> >> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Transport/TSocket.php:274 >> >> Stack trace: >> >> #0 >> >> >> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Transport/TTransport.php(74): >> >> Thrift\Transport\TSocket->read(4) >> >> #1 >> >> >> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Transport/TBufferedTransport.php(113): >> >> Thrift\Transport\TTransport->readAll(4) >> >> #2 >> >> >> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Protocol/TBinaryProtocol.php(305): >> >> Thrift\Transport\TBufferedTransport->readAll(4) >> >> #3 >> >> >> /usr/local/src/thrift-0.9.1/lib/php/lib/Thrift/Protocol/TBinaryProtocol.php(197): >> >> Thrift\Protocol\TBinaryProtocol->readI32(NULL) >> >> #4 /srv/www/vhosts/async/lib/v1/php/gen-php/wiadSysAPIv1.php(114): >> >> Thrift\Protocol\TBinaryProtocol->readMessageBegin(NULL, 0, 0) >> >> #5 /srv/www/vhosts/async/lib/v1/php/gen-php/wiadSysAPIv1.php(82): >> >> wiadSysAPIv1Client->recv_createUser() >> >> >> >> >> >> And my .thrift file looks like this: >> >> >> >> struct useraccount { >> >> 1:i64 uid, >> >> 2:string owner, >> >> 3:string email, >> >> 4:string passwd, >> >> 5:i32 enabled, >> >> 6:i32 deleted, >> >> 7:i32 gid, >> >> 8:string creator >> >> } >> >> >> >> struct auditf { >> >> 1:string schema, >> >> 2:string table, >> >> 3:i64 uid, >> >> 4:i64 gid, >> >> 5:string account, >> >> 6:string ip, >> >> 7:string qtype, >> >> 8:string vafter, >> >> 9:string vbefore, >> >> 10:string detail >> >> } >> >> >> >> service wiadSysAPIv1 { >> >> i32 ping(), >> >> string createUser(1:auditf af, 2:useraccount u) >> >> } >> >> >> >> >> >> Can someone advise on how I can get around this? >> >> >> >> >> > >> >> >> >> -- >> - Phillip. >> >> "Aoccdrnig to rscheearch at an Elingsh uinervtisy, it deosn't mttaer in >> waht >> oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist >> and lsat ltteer are in the rghit pclae. >> The rset can be a toatl mses and >> you can sitll raed it wouthit a porbelm. Tihs is bcuseae we do not raed >> ervey lteter by it slef but the wrod as a wlohe and the biran fguiers it >> out aynawy." >> -- - Phillip. "Aoccdrnig to rscheearch at an Elingsh uinervtisy, it deosn't mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist and lsat ltteer are in the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit a porbelm. Tihs is bcuseae we do not raed ervey lteter by it slef but the wrod as a wlohe and the biran fguiers it out aynawy."
