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?



Reply via email to