[ https://issues.apache.org/jira/browse/THRIFT-2582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14036369#comment-14036369 ]
Jens Geyer commented on THRIFT-2582: ------------------------------------ Yes, after taking a short look, the {{esize}} and {{ebytes}} part in Java's {{TFileTransport.readEvent()}} looks strange to me. Anyone any idea what that is intended for? > "FileTransport error" exception is raised when trying to use Java's > TFileTransport > ----------------------------------------------------------------------------------- > > Key: THRIFT-2582 > URL: https://issues.apache.org/jira/browse/THRIFT-2582 > Project: Thrift > Issue Type: Bug > Components: Java - Library > Affects Versions: 0.9.1 > Reporter: Ahmed Ali-Eldin > > I am trying to wrap a Java class to be called from Python using thrift's > TFileTransport. I tried using two protocols TJSON and TBinary but I keep > getting an exception > {code} > org.apache.thrift.transport.TTransportException: FileTransport error: bad > event size > at > org.apache.thrift.transport.TFileTransport.readEvent(TFileTransport.java:327) > at > org.apache.thrift.transport.TFileTransport.read(TFileTransport.java:468) > at > org.apache.thrift.transport.TFileTransport.readAll(TFileTransport.java:439) > at > org.apache.thrift.protocol.TJSONProtocol$LookaheadReader.read(TJSONProtocol.java:263) > at > org.apache.thrift.protocol.TJSONProtocol.readJSONSyntaxChar(TJSONProtocol.java:320) > at > org.apache.thrift.protocol.TJSONProtocol.readJSONArrayStart(TJSONProtocol.java:784) > at > org.apache.thrift.protocol.TJSONProtocol.readMessageBegin(TJSONProtocol.java:795) > at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27) > at > org.apache.thrift.transport.TFileProcessor.processUntil(TFileProcessor.java:69) > at > org.apache.thrift.transport.TFileProcessor.processChunk(TFileProcessor.java:102) > at > org.apache.thrift.transport.TFileProcessor.processChunk(TFileProcessor.java:111) > at > org.apache.thrift.transport.TFileProcessor.processChunk(TFileProcessor.java:118) > at > com.netflix.suro.client.SendToPyServer.startThriftServer(SendToPyServer.java:51) > at com.netflix.suro.client.SendToPyServer.main(SendToPyServer.java:67) > {code} > This is how my Python client looks: > {code} > def __init__(self): > self.outFile=open("../../ThriftFile.in","a") > self.transport = TTransport.TFileObjectTransport(self.outFile) > self.protocol = TJSONProtocol.TJSONProtocol(self.transport) > self.client = sendPyInterface.Client(self.protocol) > self.transport.open() > > def send(self,routingKey, message): > self.client.send_send(routingKey, message) > > def configClient(self,configurationDict): > self.client.send_ClientConfig(configurationDict) > > if __name__ == "__main__": > SuroClient=SuroPyClient() > > configurationDict={"ClientConfig.LB_TYPE":"static","ClientConfig.LB_SERVER":"localhost:7101"} > SuroClient.configClient(configurationDict) > SuroClient.send("routingKey", "testMessage") > {code} > and this is my server (or rather one version I have tried): > {code} > public static void startThriftServer(SendPyInterface.Processor processor) { > try { > File input = new > File("src/main/java/com/netflix/suro/client/ThriftFile.in"); > if(!input.exists()){ > input.createNewFile(); > } > File output = new > File("src/main/java/com/netflix/suro/client/ThriftFile.out"); > if(!output.exists()){ > output.createNewFile(); > } > > TFileTransport inputFileTransport = new > TFileTransport(input.getAbsolutePath(), true); > TFileTransport outputFileTransport = new > TFileTransport(output.getAbsolutePath(), false); > inputFileTransport.open(); > outputFileTransport.open(); > > > inputFileTransport.setTailPolicy(tailPolicy.WAIT_FOREVER); > TFileProcessor fProcessor = > new TFileProcessor(processor, > new TJSONProtocol.Factory(), inputFileTransport, outputFileTransport); > try { > fProcessor.processChunk(); > } catch (TTransportException e) { > e.printStackTrace(); > } > > System.out.println("File Thrift service started > ..."); > } catch (Exception e) { > e.printStackTrace(); > } > {code} > I have been able to read the JSON file using Python, but not Java. JensG > suggested on StackOverFlow that this is a bug. -- This message was sent by Atlassian JIRA (v6.2#6252)