[ https://issues.apache.org/jira/browse/THRIFT-347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13397441#comment-13397441 ]
Ruben de Vries commented on THRIFT-347: --------------------------------------- afaik this issue is back in hive-0.8.1, probally since regenerating the PHP libs with thrift reintroduces the bug > PHP TSocket Timeout Issues > -------------------------- > > Key: THRIFT-347 > URL: https://issues.apache.org/jira/browse/THRIFT-347 > Project: Thrift > Issue Type: Bug > Components: PHP - Library > Environment: Fedora 8, 64bit, php 5.2.4 > Reporter: Gary Richardson > Assignee: Tyler Hobbs > Fix For: 0.6 > > Attachments: TSocket.php.diff, TSocket.php.patch, thrift-347-0.5.0.txt > > > 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. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira