[ 
https://issues.apache.org/jira/browse/THRIFT-347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12859150#action_12859150
 ] 

Mike Lerch commented on THRIFT-347:
-----------------------------------

Same issue here as Nathan Marz. Everything was working great until I tried to 
retrieve a larger bit of data (about 5kb). Before applying the patch, the 
request would fail with the 'TSocket: timed out reading 4 bytes from' message. 
After the patch, the script hangs indefinitely using 100% CPU.

Tried TBuffered, TFramed, and standard TSocket connections, all with the same 
result.

Does not happen with other client libraries, only PHP, which tells me it isn't 
the server itself.

Any advice?

> PHP TSocket Timeout Issues
> --------------------------
>
>                 Key: THRIFT-347
>                 URL: https://issues.apache.org/jira/browse/THRIFT-347
>             Project: Thrift
>          Issue Type: Bug
>          Components: Library (PHP)
>         Environment: Fedora 8, 64bit, php 5.2.4
>            Reporter: Gary Richardson
>         Attachments: TSocket.php.diff
>
>
> I'm working with the Hive thrift service and I get the following exception 
> when I execute a SELECT statement:
> PHP Fatal error:  Uncaught exception 'TException' with message 'TSocket: 
> timed out reading 4 bytes from localhost:10000' in 
> /root/leap/dev/servers/hive/thriftroot/
> transport/TSocket.php:228
> Stack trace:
> #0 /root/leap/dev/servers/hive/thriftroot/protocol/TBinaryProtocol.php(292): 
> TSocket->readAll(4)
> #1 /root/leap/dev/servers/hive/thriftroot/protocol/TBinaryProtocol.php(184): 
> TBinaryProtocol->readI32(NULL)
> #2 
> /root/leap/dev/servers/hive/thriftroot/packages/hive_service/ThriftHive.php(59):
>  TBinaryProtocol->readMessageBegin(NULL, 0, 0)
> #3 
> /root/leap/dev/servers/hive/thriftroot/packages/hive_service/ThriftHive.php(28):
>  ThriftHiveClient->recv_execute()
> #4 /root/leap/dev/servers/hive/testscript.php(30): 
> ThriftHiveClient->execute('SELECT num FROM...')
> #5 {main}
>   thrown in /root/leap/dev/servers/hive/thriftroot/transport/TSocket.php on 
> line 228
> The script I'm using to cause this is:
> ======================================
> #!/usr/bin/php
> <?php
> $GLOBALS['THRIFT_ROOT'] = 'thriftroot/';
> require_once $GLOBALS['THRIFT_ROOT'] . 'packages/hive_service/ThriftHive.php';
> require_once $GLOBALS['THRIFT_ROOT'] . 'transport/TSocket.php';
> require_once $GLOBALS['THRIFT_ROOT'] . 'protocol/TBinaryProtocol.php';
> $transport = new TSocket('localhost', 10000);
> $protocol = new TBinaryProtocol($transport);
> $client = new ThriftHiveClient($protocol);
> $transport->open();
> try
> {
>     $client->execute('DROP TABLE testOverThrift');
> }
> catch (Exception $e)
> {
>     error_log("Got exception while trying to drop table: " . 
> $e->getMessage());
> }
> $client->execute('CREATE TABLE testOverThrift (num int)');
> $client->execute('LOAD DATA LOCAL
>                INPATH "/root/testdata.txt"
>                INTO TABLE testOverThrift');
> $client->execute('SELECT num FROM testOverThrift WHERE num < 5');
> $result = $client->fetchAll();
> var_dump($result);
> ==================================
> I have a patch that fixes the problem that I'll attach. It looks like 
> fetchAll() doesn't know the difference between a timeout and a blocking port.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to