[ 
https://issues.apache.org/jira/browse/THRIFT-347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Takuya Watabe updated THRIFT-347:
---------------------------------

    Attachment: TSocket.php.patch

I found similar problem on Hive (thirft v0.50), and patch on this page was not 
enough for my case.
This is the patch for my case.

By using this patch, my php code below is working.

// Set up the transport/protocol/client
$transport = new TSocket('localhost', 10000);
$protocol = new TBinaryProtocol($transport);
$client = new ThriftHiveClient($protocol);
$transport->open();
$client->execute('SELECT * from sample order by id desc');
var_dump($client->fetchAll());
$transport->close();

> 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
>         Attachments: TSocket.php.diff, TSocket.php.patch
>
>
> 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