Thanks. I did do that a bunch of times. I actually had to delete maven's 'target' directory and rebuilt, that got going.
On Oct 22, 2012, at 3:04 AM, Andras Szerdahelyi <[email protected]> wrote: > re-compile your java server with 0.9.0. This is a new abstract method on the > java library that should be present on the generated service code > https://issues.apache.org/jira/browse/THRIFT-1447 > > regards, > Andras > > On 21 Oct 2012, at 12:10, Matt Chambers <[email protected]> wrote: > >> Greetings, >> >> Figured I'd give 0.9.0 a try, getting an exception on the java server, using >> a python client. This all runs fine on 0.8.0. The server does actually get >> the data. It puts it into a LinkedBlockingQueue, and then returns. Thats >> all that happens, so I'm not sure where this is coming from. >> >> java.lang.AbstractMethodError: org.apache.thrift.ProcessFunction.isOneway()Z >> at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:51) >> at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) >> at >> org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer.invoke(AbstractNonblockingServer.java:478) >> at org.apache.thrift.server.Invocation.run(Invocation.java:18) >> at >> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) >> at >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) >> at java.lang.Thread.run(Thread.java:722) >> >> On the client side I'm seeing this. >> >> Traceback (most recent call last): >> File "./rndaemon.py", line 8, in <module> >> import plow.rndaemon.server as server >> File "../../client/python/plow/rndaemon/server.py", line 4, in <module> >> import core >> File "../../client/python/plow/rndaemon/core.py", line 192, in <module> >> ProcessMgr = ProcessManager() >> File "../../client/python/plow/rndaemon/core.py", line 74, in __init__ >> self.sendPing(True) >> File "../../client/python/plow/rndaemon/core.py", line 95, in sendPing >> Profiler.sendPing(tasks, isReboot) >> File "../../client/python/plow/rndaemon/profile/base.py", line 52, in >> sendPing >> service.sendPing(ping) >> File "../../client/python/plow/rndaemon/rpc/RndServiceApi.py", line 49, in >> sendPing >> self.recv_sendPing() >> File "../../client/python/plow/rndaemon/rpc/RndServiceApi.py", line 60, in >> recv_sendPing >> (fname, mtype, rseqid) = self._iprot.readMessageBegin() >> File "/Library/Python/2.7/site-packages/thrift/protocol/TBinaryProtocol.py", >> line 126, in readMessageBegin >> sz = self.readI32() >> File "/Library/Python/2.7/site-packages/thrift/protocol/TBinaryProtocol.py", >> line 203, in readI32 >> buff = self.trans.readAll(4) >> File "/Library/Python/2.7/site-packages/thrift/transport/TTransport.py", >> line 58, in readAll >> chunk = self.read(sz-have) >> File "/Library/Python/2.7/site-packages/thrift/transport/TTransport.py", >> line 272, in read >> self.readFrame() >> File "/Library/Python/2.7/site-packages/thrift/transport/TTransport.py", >> line 276, in readFrame >> buff = self.__trans.readAll(4) >> File "/Library/Python/2.7/site-packages/thrift/transport/TTransport.py", >> line 58, in readAll >> chunk = self.read(sz-have) >> File "/Library/Python/2.7/site-packages/thrift/transport/TSocket.py", line >> 108, in read >> raise TTransportException(type=TTransportException.END_OF_FILE, >> message='TSocket read 0 bytes') >> thrift.transport.TTransport.TTransportException: TSocket read 0 bytes >> >> Parts of my thrift file. >> >> struct Hardware { >> 1:i16 physicalCpus, >> 2:i16 logicalCpus >> 3:i32 totalRamMb >> 4:i32 freeRamMb, >> 5:i32 totalSwapMb, >> 6:i32 freeSwapMb, >> 7:string cpuModel, >> 8:string platform >> } >> >> struct Ping { >> 1:string hostname, >> 2:string ipAddr, >> 3:bool isReboot, >> 4:i64 bootTime, >> 5:Hardware hw, >> 6:list<RunningTask> tasks; >> } >> >> service RndServiceApi { >> void sendPing(1:Ping ping) throws (1:RndException e), >> } >> >> Java server code: >> >> transport = new TNonblockingServerSocket(port); >> server = new TThreadedSelectorServer( >> new TThreadedSelectorServer.Args(transport) >> .processor(processor) >> .workerThreads(8) >> .selectorThreads(4) >> .protocolFactory(new TBinaryProtocol.Factory(true, true)) >> .transportFactory(new TFramedTransport.Factory())); >> >> Python client code: >> >> host, port = conf.PLOW_HOSTS[0].split(":") >> socket = TSocket.TSocket(host, int(port)) >> transport = TTransport.TFramedTransport(socket) >> protocol = TBinaryProtocol.TBinaryProtocol(transport) >> service = RndServiceApi.Client(protocol) >> transport.open() >> >> >> >
