You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "SHIMOZAKI, Moriaki (JIRA)" <ji...@apache.org> on 2015/02/16 04:48:11 UTC

[jira] [Created] (AVRO-1639) python IPC request causes an exception if the client happens to use the same protocol and port again

SHIMOZAKI, Moriaki created AVRO-1639:
----------------------------------------

             Summary: python IPC request causes an exception if the client happens to use the same protocol and port again
                 Key: AVRO-1639
                 URL: https://issues.apache.org/jira/browse/AVRO-1639
             Project: Avro
          Issue Type: Bug
          Components: python
    Affects Versions: 1.7.7
         Environment: Client: python avro 1.7.7
Server: Java avro 1.7.7
            Reporter: SHIMOZAKI, Moriaki


IPC request causes the exception below if the client happens to use the same protocol and port again.
{quote}
2015-02-13 22:08:17 - [ERROR] - <type 'exceptions.AttributeError'>
2015-02-13 22:08:17 - [ERROR] - Traceback (most recent call last):
File "/home/spyder/work/spyderZkAgent/camera/server/_init_.py", line 69, in _request
result = requestor.request(command, param)
File "/usr/local/lib/python2.7/dist-packages/avro/ipc.py", line 145, in request
return self.issue_request(call_request, message_name, request_datum)
File "/usr/local/lib/python2.7/dist-packages/avro/ipc.py", line 262, in issue_request
return self.read_call_response(message_name, buffer_decoder)
File "/usr/local/lib/python2.7/dist-packages/avro/ipc.py", line 225, in read_call_response
remote_message_schema = self.remote_protocol.messages.get(message_name)
AttributeError: 'NoneType' object has no attribute 'messages'
{quote}

What's happening in my environment is as follows:
1. In BaseRequestor.write_handshake_request, remote_hash gets something other than None, and self.remote_protocol is not updated
2. In BaseRequestor.read_handshake_response, the server returns 'BOTH' for 'match' response. This still doesn't update self.remote_protocol.
3. BaseRequestor.read_call_response accesses self.remote_protocol.messages but self.remote_protocol is None.

I am avoiding this issue by applying the patch below to my system.
{quote}
diff -u avro/ipc.py avro.patched/ipc.py
--- avro/ipc.py	2015-02-16 10:54:04.000000000 +0900
+++ avro.patched/ipc.py	2015-02-16 10:58:21.000000000 +0900
@@ -151,6 +151,8 @@
     if remote_hash is None:
       remote_hash = local_hash
       self.remote_protocol = self.local_protocol
+    else:
+      self.remote_protocol = REMOTE_PROTOCOLS.get(remote_name)
     request_datum = {}
     request_datum['clientHash'] = local_hash
     request_datum['serverHash'] = remote_hash
{quote}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)