Quick update, I managed to fix this issue, it was really a problem with the tpudReference. The tpud was generated as Integer but later casted to short. So the app send a request with tpudRef=65536 but got a response with tpudRef=0 and couldn't handle it. I added this quick fix in the S7 protocol and it has worked for over 100k exchanges, will do a long time test soon: https://i.imgur.com/mOIu3hN.png
As I have a quite modified version from 0.7.0-SNAPSHOT, how is the procedure to submit my work any time soon to you so you can review it and maybe use the things you need for merging ? BR, Etienne Le ven. 28 févr. 2020 à 13:59, Robinet, Etienne <[email protected]> a écrit : > Good afternoon, > this is the version I am using. > I noticed that the application blocks when the tpduReference is back to 0 > (going over the limit of Short). Do you know by any chance if this could be > the reason? > Was the library already designed to fetch such a number of data in a > single run? By browsing a code I saw that this tpduRef is given by the > AtomicIntegerwith initial value 10. > > > Here the last correctly handled response: > > > TPKTPacket[payload=COTPPacketData[parameters={},payload=S7MessageResponseData[tpduReference=65534,parameter=S7ParameterReadVarResponse[numItems=1],payload=S7PayloadReadVarResponse[items={S7VarPayloadDataItem[returnCode=OK,transportSize=BYTE_WORD_DWORD,dataLength=16,data={0,-61}]}],errorClass=0,errorCode=0],eot=true,tpduRef=0]] > > And here the response that blocks: > > > TPKTPacket[payload=COTPPacketData[parameters={},payload=S7MessageResponseData[tpduReference=0,parameter=S7ParameterReadVarResponse[numItems=1],payload=S7PayloadReadVarResponse[items={S7VarPayloadDataItem[returnCode=OK,transportSize=BYTE_WORD_DWORD,dataLength=16,data={0,-61}]}],errorClass=0,errorCode=0],eot=true,tpduRef=0]] > > > > > Le ven. 28 févr. 2020 à 13:42, Christofer Dutz <[email protected]> > a écrit : > >> Exactly >> >> Am 28.02.20, 10:37 schrieb "Robinet, Etienne" <[email protected]>: >> >> By new driver do you mean the ones from the /develop branch >> (0.7.0-SNAPSHOT) ? >> >> Etienne >> >> Le ven. 28 févr. 2020 à 10:32, Christofer Dutz < >> [email protected]> >> a écrit : >> >> > H Etienne, >> > >> > the old drivers were unfortunately blocking ones ... with the new >> drivers >> > all requests have timeouts and will get cancelled if no responses >> come in >> > in a given timeframe. >> > >> > Chris >> > >> > Am 28.02.20, 10:12 schrieb "Robinet, Etienne" <[email protected]>: >> > >> > Well, after 1 hour it froze again. The thing is that this time >> it does >> > not >> > seem to be any memory leakage nor network overloading. The >> program just >> > stops, and the camel context tells me, when I shut it down, >> that there >> > is 1 >> > inflight exchange. The programm froze at the same point as the >> IDE app: >> > when the PollingConsumer created an PlcReadRequest and waits >> for the >> > response. It is known that the receive() method of the >> PollingConsumer >> > is >> > blocking if no message is coming. >> > >> > Etienne >> > >> > Le ven. 28 févr. 2020 à 09:34, Etienne Robinet < >> [email protected]> a >> > écrit : >> > >> > > Hi there, >> > > >> > > I am currently testing some fix/workaround. I tried a simple >> test >> > case >> > > like the previous one but I moved the connection to the PLC >> outside >> > the >> > > while loop and only connecting again if the connection drops. >> > > Without temp, I don't get memory leaks (it seems) but the IDE >> froze >> > after >> > > +- 60k MessageHandles. >> > > But with a 100ms sleep, I managed to get some decent result. >> I am >> > > currently testing my route again, and TCP ports/ Memory seem >> not >> > getting >> > > overloaded/leaking! >> > > >> > > I changed the Camel integration by putting the PlcConnection >> in the >> > > Endpoint class with a getter that can be used by >> Consumer/Producer >> > to send >> > > requests. Idk if this is the correct way to do it, but it >> seems it >> > kinda >> > > fixed/patched for a while my problem. >> > > >> > > Cheers, >> > > >> > > Etienne >> > > >> > > >> > > >> > >> > >> > >> >> >>
