So I just tried your changes and ran my test. The first time it succeeded fine 
without issues, but when I started running it again, this happened:

- run number 20 of 100
       using order: %DB4:46:REAL, %DB4:17:USINT, %DB4:396:WSTRING(10), 
%DB4:50:LREAL, %DB4:58:TIME, %DB4:914:RAW_BYTE_ARRAY[11], %DB4:22:DINT, 
%DB4:1:BYTE, %DB4:4:DWORD, %DB4:138:WCHAR, %DB4:72:TIME_OF_DAY, %DB4:26:UDINT, 
%DB4:70:DATE, %DB4:18:INT, %DB4:16:SINT, %DB4:0.0:BOOL, %DB4:2:WORD, 
%DB4:20:UINT, %DB4:908:CHAR[5], %DB4:136:CHAR, %DB4:140:STRING(10),
17:16:40.785 [plc4x-tm-thread-2] WARN  i.n.channel.ChannelOutboundBuffer - 
Failed to mark a promise as success because it has succeeded already: 
DefaultChannelPromise@68b805c6(success)
Exception in thread "main" org.opentest4j.AssertionFailedError
            at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:46)
            at org.junit.jupiter.api.Assertions.fail(Assertions.java:161)
            at org.apache.plc4x.test.manual.ManualTest.run(ManualTest.java:245)
            at 
org.apache.plc4x.java.s7.readwrite.ManualS71200DriverTest.main(ManualS71200DriverTest.java:114)
Caused by: java.util.concurrent.ExecutionException: 
org.apache.plc4x.java.api.exceptions.PlcProtocolException: Error reading
            at 
java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
            at 
java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
            at org.apache.plc4x.test.manual.ManualTest.run(ManualTest.java:193)
            ... 1 more
Caused by: org.apache.plc4x.java.api.exceptions.PlcProtocolException: Error 
reading
            at 
org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$17(S7ProtocolLogic.java:334)
            at 
java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
            at 
java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
            at 
java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
            at 
java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2194)
            at 
org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic$TransactionErrorCallback.accept(S7ProtocolLogic.java:2349)
            at 
org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic$TransactionErrorCallback.accept(S7ProtocolLogic.java:1)
            at 
org.apache.plc4x.java.spi.Plc4xNettyWrapper.lambda$8(Plc4xNettyWrapper.java:273)
            at 
org.apache.plc4x.java.spi.netty.NettyHashTimerTimeoutManager.lambda$0(NettyHashTimerTimeoutManager.java:55)
            at 
io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:713)
            at 
io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34)
            at 
io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:701)
            at 
io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:788)
            at 
io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:501)
            at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.util.concurrent.TimeoutException
            at 
org.apache.plc4x.java.spi.netty.NettyHashTimerTimeoutManager.lambda$0(NettyHashTimerTimeoutManager.java:54)
            ... 6 more



Chris


Von: Cesar Garcia <cesar.gar...@ceos.com.ve>
Datum: Freitag, 23. Mai 2025 um 08:09
An: dev@plc4x.apache.org <dev@plc4x.apache.org>
Betreff: Re: [DISCUSS] Should we switch the names of the S7 drivers?
Hello,
Can you send it to me via Wetransfer or another similar tool? I'd really
appreciate it.
Thanks,


El vie, 23 may 2025 a las 1:57, Christofer Dutz (<christofer.d...@c-ware.de>)
escribió:

> Hi Cesar,
>
> I could send you the TIA Portal program, that I use for testing. (It’s
> generally just a DB Block with pre-defined constant values). With that the
> issues I am having should be reproducible. As I mentioned before. I spent
> so much time trying to track them down and with my s7-light I’m no longer
> having issues, so I’ll stick with that.
>
> Just if you want to try to solve them in the s7 ... give me a ping and
> I’ll send it to you.
>
> Chris
>
> Von: Cesar Garcia <cesar.gar...@ceos.com.ve>
> Datum: Freitag, 23. Mai 2025 um 07:41
> An: dev@plc4x.apache.org <dev@plc4x.apache.org>
> Betreff: Re: [DISCUSS] Should we switch the names of the S7 drivers?
> Hi,
>
> I tried checking the connection parameters with an S7-300 and found that
> the number of transactions requested for this device is 5. From my memory,
> I remembered that the maximum is 2.
>
> Compare this parameterization with other software:
>
> 1. *KepWare*: max-amq-caller=1 max-amq-callee=1, not configurable
> 2. *DirectLink*: max-amq-caller=1 (default) max-amq-callee=1 (default)
> maximum 2
> 3. *WinCC*: max-amq-caller=2 max-amq-callee=2
> 4. *Snap7*: max-amq-caller=1 max-amq-callee=1
>
> I tested the S7 driver with max-amq-caller=1 and max-amq-callee=1, and the
> driver works without any issues,
>
> I tested the S7 driver with max-amq-caller=2 and max-amq-callee=2, and the
> driver works without any issues, but during subsequent startups, the
> following issue may appear, which points to this section of code, but don't
> crash.
>
> 1533 .handle(p -> {
> 1534 // Finish the request-transaction.
> 1535 transaction.endRequest();
> 1536
> 1537 try {
> 1538 future.complete(p);
> 1539 } catch (Exception e) {
> 1540 logger.warn("Error sending 'write' message: '{}'", e.getMessage(), e);
> 1541 }
>
> My recommendation is:
> 1. that the driver's default value for max-amq-calle and max-amq-callee be
> 1, and that the user increase it according to their requirements. This can
> be done immediately.
> 2. Check the transaction manager to evaluate why it returns "p = null." It
> should take longer since it's part of the SPI.
>
> Tomorrow I can try it with S7-400 and S7-1200 to see what results we get.
>
> My modifications, which are very few, are at
>
> https://github.com/apache/plc4x/tree/fix/s7hmux
>
> If you try it and get the same results, I'll merge it.
>
> Mis modificaciones
>
>
> I'll let you know the results.
>
> El jue, 22 may 2025 a las 15:29, Christofer Dutz (<
> christofer.d...@c-ware.de>)
> escribió:
>
> > Another result is this:
> >
> > - run number 12 of 100
> >        using order: %DB4:70:DATE, %DB4:17:USINT, %DB4:396:WSTRING(10),
> > %DB4:140:STRING(10), %DB4:914:RAW_BYTE_ARRAY[11], %DB4:2:WORD,
> > %DB4:16:SINT, %DB4:58:TIME, %DB4:1:BYTE, %DB4:138:WCHAR,
> %DB4:908:CHAR[5],
> > %DB4:0.0:BOOL, %DB4:20:UINT, %DB4:72:TIME_OF_DAY, %DB4:50:LREAL,
> > %DB4:18:INT, %DB4:26:UDINT, %DB4:136:CHAR, %DB4:46:REAL, %DB4:22:DINT,
> > %DB4:4:DWORD,
> >         - Read OK (48 ms)
> > 21:27:21.342 [plc4x-tm-thread-3] ERROR
> > o.a.p.j.s.c.DefaultNettyPlcConnection - unknown error, close the
> connection
> > java.lang.NullPointerException: Cannot invoke
> > "io.netty.channel.ChannelPromise.setUncancellable()" because
> > "entry.promise" is null
> >             at
> >
> io.netty.channel.ChannelOutboundBuffer.addFlush(ChannelOutboundBuffer.java:160)
> >             at
> >
> io.netty.channel.AbstractChannel$AbstractUnsafe.flush(AbstractChannel.java:892)
> >             at
> >
> io.netty.channel.embedded.EmbeddedChannel$EmbeddedUnsafe$1.flush(EmbeddedChannel.java:1158)
> >             at
> >
> io.netty.channel.DefaultChannelPipeline$HeadContext.flush(DefaultChannelPipeline.java:1319)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:935)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907)
> >             at
> >
> io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:957)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000)
> >             at
> >
> io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:974)
> >             at
> >
> org.apache.plc4x.java.spi.Plc4xNettyWrapper$1.sendToWire(Plc4xNettyWrapper.java:100)
> >             at
> >
> org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(DefaultSendRequestContext.java:108)
> >             at
> >
> org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(DefaultSendRequestContext.java:1)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$42(S7ProtocolLogic.java:1533)
> >             at
> >
> org.apache.plc4x.java.spi.transaction.RequestTransactionManager$TransactionOperation.run(RequestTransactionManager.java:225)
> >             at
> >
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
> >             at
> > java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
> >             at
> >
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> >             at
> >
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> >             at java.base/java.lang.Thread.run(Thread.java:1583)
> > 21:27:21.347 [plc4x-tm-thread-3] WARN
> i.n.c.AbstractChannelHandlerContext
> > - Failed to mark a promise as failure because it has succeeded already:
> > DefaultChannelPromise@1161d65(success)
> > java.lang.NullPointerException: Cannot invoke
> > "io.netty.util.concurrent.Promise.tryFailure(java.lang.Throwable)"
> because
> > "p" is null
> >             at
> >
> io.netty.util.internal.PromiseNotificationUtil.tryFailure(PromiseNotificationUtil.java:64)
> >             at
> >
> io.netty.channel.ChannelOutboundBuffer.safeFail(ChannelOutboundBuffer.java:754)
> >             at
> >
> io.netty.channel.ChannelOutboundBuffer.remove0(ChannelOutboundBuffer.java:339)
> >             at
> >
> io.netty.channel.ChannelOutboundBuffer.failFlushed(ChannelOutboundBuffer.java:691)
> >             at
> >
> io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:733)
> >             at
> >
> io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:619)
> >             at
> >
> io.netty.channel.embedded.EmbeddedChannel$EmbeddedUnsafe$1.close(EmbeddedChannel.java:1103)
> >             at
> >
> io.netty.channel.DefaultChannelPipeline$HeadContext.close(DefaultChannelPipeline.java:1299)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:755)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:733)
> >             at
> > io.netty.channel.ChannelDuplexHandler.close(ChannelDuplexHandler.java:79)
> >             at
> >
> org.apache.plc4x.java.spi.Plc4xNettyWrapper.close(Plc4xNettyWrapper.java:139)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:757)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:733)
> >             at
> >
> io.netty.channel.DefaultChannelPipeline.close(DefaultChannelPipeline.java:943)
> >             at
> > io.netty.channel.AbstractChannel.close(AbstractChannel.java:279)
> >             at
> > io.netty.channel.embedded.EmbeddedChannel.close(EmbeddedChannel.java:608)
> >             at
> > io.netty.channel.embedded.EmbeddedChannel.close(EmbeddedChannel.java:592)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.onDisconnect(S7ProtocolLogic.java:267)
> >             at
> >
> org.apache.plc4x.java.spi.Plc4xNettyWrapper.userEventTriggered(Plc4xNettyWrapper.java:220)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:398)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:376)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireUserEventTriggered(AbstractChannelHandlerContext.java:368)
> >             at
> >
> io.netty.channel.ChannelInboundHandlerAdapter.userEventTriggered(ChannelInboundHandlerAdapter.java:117)
> >             at
> >
> org.apache.plc4x.java.spi.connection.DefaultNettyPlcConnection$1$1.userEventTriggered(DefaultNettyPlcConnection.java:258)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:398)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:376)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireUserEventTriggered(AbstractChannelHandlerContext.java:368)
> >             at
> >
> io.netty.channel.ChannelInboundHandlerAdapter.userEventTriggered(ChannelInboundHandlerAdapter.java:117)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl.userEventTriggered(S7HMuxImpl.java:208)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:398)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:376)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireUserEventTriggered(AbstractChannelHandlerContext.java:368)
> >             at
> >
> io.netty.channel.DefaultChannelPipeline$HeadContext.userEventTriggered(DefaultChannelPipeline.java:1375)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:396)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeUserEventTriggered(AbstractChannelHandlerContext.java:376)
> >             at
> >
> io.netty.channel.DefaultChannelPipeline.fireUserEventTriggered(DefaultChannelPipeline.java:862)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection.close(S7HPlcConnection.java:245)
> >             at
> >
> org.apache.plc4x.java.spi.connection.DefaultNettyPlcConnection$1$2.exceptionCaught(DefaultNettyPlcConnection.java:268)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:317)
> >             at
> >
> io.netty.channel.ChannelInboundHandlerAdapter.exceptionCaught(ChannelInboundHandlerAdapter.java:143)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl.exceptionCaught(S7HMuxImpl.java:156)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:325)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.fireExceptionCaught(AbstractChannelHandlerContext.java:317)
> >             at
> >
> io.netty.channel.DefaultChannelPipeline$HeadContext.exceptionCaught(DefaultChannelPipeline.java:1324)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeExceptionCaught(AbstractChannelHandlerContext.java:346)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:944)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeFlush(AbstractChannelHandlerContext.java:921)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.flush(AbstractChannelHandlerContext.java:907)
> >             at
> >
> io.netty.channel.ChannelDuplexHandler.flush(ChannelDuplexHandler.java:127)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeFlush0(AbstractChannelHandlerContext.java:937)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:957)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950)
> >             at
> >
> io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000)
> >             at
> >
> io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:974)
> >             at
> >
> org.apache.plc4x.java.spi.Plc4xNettyWrapper$1.sendToWire(Plc4xNettyWrapper.java:100)
> >             at
> >
> org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(DefaultSendRequestContext.java:108)
> >             at
> >
> org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(DefaultSendRequestContext.java:1)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$42(S7ProtocolLogic.java:1533)
> >             at
> >
> org.apache.plc4x.java.spi.transaction.RequestTransactionManager$TransactionOperation.run(RequestTransactionManager.java:225)
> >             at
> >
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
> >             at
> > java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
> >             at
> >
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> >             at
> >
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> >             at java.base/java.lang.Thread.run(Thread.java:1583)
> >
> > Von: Christofer Dutz <christofer.d...@c-ware.de>
> > Datum: Donnerstag, 22. Mai 2025 um 21:25
> > An: dev@plc4x.apache.org <dev@plc4x.apache.org>
> > Betreff: AW: [DISCUSS] Should we switch the names of the S7 drivers?
> > Also running the ManualS71200DriverTest with s7 instead of s7-light
> > results in the following after several rounds:
> >
> > - run number 88 of 100
> >        using order: %DB4:908:CHAR[5], %DB4:20:UINT, %DB4:2:WORD,
> > %DB4:22:DINT, %DB4:914:RAW_BYTE_ARRAY[11], %DB4:72:TIME_OF_DAY,
> > %DB4:4:DWORD, %DB4:26:UDINT, %DB4:140:STRING(10), %DB4:70:DATE,
> > %DB4:16:SINT, %DB4:17:USINT, %DB4:138:WCHAR, %DB4:0.0:BOOL,
> > %DB4:396:WSTRING, %DB4:136:CHAR, %DB4:50:LREAL, %DB4:58:TIME,
> %DB4:18:INT,
> > %DB4:1:BYTE, %DB4:396:WSTRING(10), %DB4:140:STRING, %DB4:46:REAL,
> > Exception in thread "main" org.opentest4j.AssertionFailedError
> >             at
> > org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java:46)
> >             at org.junit.jupiter.api.Assertions.fail(Assertions.java:161)
> >             at
> > org.apache.plc4x.test.manual.ManualTest.run(ManualTest.java:245)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.ManualS71200DriverTest.main(ManualS71200DriverTest.java:114)
> > Caused by: java.util.concurrent.ExecutionException:
> > org.apache.plc4x.java.api.exceptions.PlcProtocolException: Error reading
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
> >             at
> > org.apache.plc4x.test.manual.ManualTest.run(ManualTest.java:193)
> >             ... 1 more
> > Caused by: org.apache.plc4x.java.api.exceptions.PlcProtocolException:
> > Error reading
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$17(S7ProtocolLogic.java:332)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2194)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$38(S7ProtocolLogic.java:1339)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
> >             at
> >
> java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2194)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic$TransactionErrorCallback.accept(S7ProtocolLogic.java:2348)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic$TransactionErrorCallback.accept(S7ProtocolLogic.java:1)
> >             at
> >
> org.apache.plc4x.java.spi.Plc4xNettyWrapper.lambda$8(Plc4xNettyWrapper.java:273)
> >             at
> >
> org.apache.plc4x.java.spi.netty.NettyHashTimerTimeoutManager.lambda$0(NettyHashTimerTimeoutManager.java:55)
> >             at
> >
> io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:713)
> >             at
> >
> io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34)
> >             at
> >
> io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:701)
> >             at
> >
> io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:788)
> >             at
> > io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:501)
> >             at java.base/java.lang.Thread.run(Thread.java:1583)
> > Caused by: java.util.concurrent.TimeoutException
> >             at
> >
> org.apache.plc4x.java.spi.netty.NettyHashTimerTimeoutManager.lambda$0(NettyHashTimerTimeoutManager.java:54)
> >             ... 6 more
> >
> > Von: Christofer Dutz <christofer.d...@c-ware.de>
> > Datum: Donnerstag, 22. Mai 2025 um 20:50
> > An: dev@plc4x.apache.org <dev@plc4x.apache.org>
> > Betreff: AW: [DISCUSS] Should we switch the names of the S7 drivers?
> > Hi Cesar,
> >
> > so I just changed my test connection string in
> > ManualS71200DriverWithBlockOptimizerTest from s7-light to s7, and it
> > constantly fails on the first request.
> >
> > Reading all items together in random order
> > - run number 0 of 100
> >        using order: %DB4:914:RAW_BYTE_ARRAY[11], %DB4:58:TIME,
> > %DB4:46:REAL, %DB4:17:USINT, %DB4:138:WCHAR, %DB4:70:DATE, %DB4:4:DWORD,
> > %DB4:140:STRING(200), %DB4:908:CHAR[5], %DB4:136:CHAR, %DB4:1:BYTE,
> > %DB4:0.0:BOOL, %DB4:16:SINT, %DB4:72:TIME_OF_DAY, %DB4:2:WORD,
> > %DB4:50:LREAL, %DB4:18:INT, %DB4:396:WSTRING(100), %DB4:26:UDINT,
> > %DB4:20:UINT, %DB4:22:DINT,
> > 20:48:24.259 [plc4x-app-thread-2] WARN
> > o.a.p.j.s.r.protocol.S7ProtocolLogic - Got an error response from the
> PLC.
> > This particular response code usually indicates that we sent a too large
> > packet or would be receiving a too large one. Please report this, as this
> > is most probably a bug.
> > Exception in thread "main" org.opentest4j.AssertionFailedError: Tag:
> > %DB4:914:RAW_BYTE_ARRAY[11] ==> expected: <OK> but was: <ACCESS_DENIED>
> >             at
> >
> org.junit.jupiter.api.AssertionFailureBuilder.build(AssertionFailureBuilder.java:151)
> >             at
> >
> org.junit.jupiter.api.AssertionFailureBuilder.buildAndThrow(AssertionFailureBuilder.java:132)
> >             at
> > org.junit.jupiter.api.AssertEquals.failNotEqual(AssertEquals.java:197)
> >             at
> > org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
> >             at
> > org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1156)
> >             at
> > org.apache.plc4x.test.manual.ManualTest.run(ManualTest.java:200)
> >             at
> >
> org.apache.plc4x.java.s7.readwrite.ManualS71200DriverWithBlockOptimizerTest.main(ManualS71200DriverWithBlockOptimizerTest.java:114)
> >
> > So I guess I’ll not quite remove the light version just yet.
> >
> > Chris
> >
> > Von: Cesar Garcia <cesar.gar...@ceos.com.ve>
> > Datum: Donnerstag, 22. Mai 2025 um 19:21
> > An: dev@plc4x.apache.org <dev@plc4x.apache.org>
> > Betreff: Re: [DISCUSS] Should we switch the names of the S7 drivers?
> > Hi Chris,
> >
> > You did an excellent job with the optimizer. We'll be testing it out.
> >
> > I'll keep you posted with any details.
> >
> > Thank you very much,
> >
> > El jue, 22 may 2025 a las 11:28, Christofer Dutz (<
> > christofer.d...@c-ware.de>)
> > escribió:
> >
> > > Hi Cesar,
> > >
> > > well I guess we’ll leave them both in for now and not do any renaming
> ...
> > > the main difference, I guess is also the different default optimizer.
> > >
> > > You can currently run the S7 with the new optimizer, but you have to
> > > explicitly tell it to do so, and the S7-Light will use the new
> optimizer
> > > and you can make it use the old one, via config option.
> > > We should probably let both run for a while and I’ll inspect if I am
> > > seeing improvements with the full version. Right now I am hesitant to
> > drop
> > > the s7-light as it was such a hastle to get things runnig smoothly.
> > >
> > > Chris
> > >
> > >
> > > Von: Cesar Garcia <cesar.gar...@ceos.com.ve>
> > > Datum: Donnerstag, 22. Mai 2025 um 16:57
> > > An: dev@plc4x.apache.org <dev@plc4x.apache.org>
> > > Betreff: Re: [DISCUSS] Should we switch the names of the S7 drivers?
> > > Hi Chris,
> > >
> > > I've already tested the S7 versions and fixed a bug it was
> experiencing.
> > >
> > > I've compared both drivers (S7 and S7-light) and the failure rate is
> > > currently the same.
> > > Identifying the bug is quite difficult in both cases due to their
> > > architecture and the randomness of the occurrence.
> > > I can tell you that the bug is outside the S7Mux, so the problem isn't
> > with
> > > the driver's pub/sub capabilities.
> > >
> > > In my particular use case, a name change would affect computers that
> are
> > > currently running 24/7 at a high transfer rate, so I'm very attentive
> to
> > > the details.
> > >
> > > There are many hours of testing, and more to go, so I need to focus on
> > one
> > > problem, not two.
> > >
> > > Sorry, but -1,
> > >
> > > Best regards,
> > >
> > > El mié, 21 may 2025 a las 3:22, Christofer Dutz (<
> > > christofer.d...@c-ware.de>)
> > > escribió:
> > >
> > > > Hi all,
> > > >
> > > > as some of you might know, I recently introduced a „s7-light“ driver
> in
> > > > the S7 which is basically a stripped down version of our normal s7
> > > driver.
> > > > I did that, as I found many issues in combination with the parts that
> > > were
> > > > intended for the pub/sub stuff for some of the S7 300 models.
> > > > This resolved all of my remaining issues and seems to have resolved
> all
> > > > problems people I was in direct contect with and just now also the
> ones
> > > > with the NiFi bug.
> > > >
> > > > So my question here is: Should re rename the „s7-light“ to „s7“ and
> > > rename
> > > > the „s7“ to something „s7-pubsub“ or alike? The reason is, that I
> think
> > > > most people will try the normal „s7“ as this seems to be the place to
> > go
> > > > instead of the „light“ version. This could cause many people to run
> > into
> > > > problems. With all S7 400, 1200, 1500 and Logo models, the s7-light
> > > > currently has all you need and all you can use. Also can you use it
> > with
> > > > the 300 models. Only if you want to use this pub/sub mechanism, that
> > only
> > > > works on S7-300 does it make a difference (feature-wise) to use the
> > „s7“.
> > > >
> > > > What do you think?
> > > >
> > > > Chris
> > > >
> > > >
> > >
> > > --
> > > *CEOS Automatización, C.A.*
> > > *GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,*
> > > *PISO 1, OFICINA 2, AV. RAUL LEONI, SECTOR GUAMACHITO,*
> > >
> > > *FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI*
> > > *Ing. César García*
> > >
> > > *Cel: +58 414-760.98.95*
> > >
> > > *Hotline Técnica SIEMENS: 0800 1005080*
> > >
> > > *Email: support.aan.automat...@siemens.com
> > > <support.aan.automat...@siemens.com>*
> > >
> >
> >
> > --
> > *CEOS Automatización, C.A.*
> > *GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,*
> > *PISO 1, OFICINA 2, AV. RAUL LEONI, SECTOR GUAMACHITO,*
> >
> > *FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI*
> > *Ing. César García*
> >
> > *Cel: +58 414-760.98.95*
> >
> > *Hotline Técnica SIEMENS: 0800 1005080*
> >
> > *Email: support.aan.automat...@siemens.com
> > <support.aan.automat...@siemens.com>*
> >
>
>
> --
> *CEOS Automatización, C.A.*
> *GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,*
> *PISO 1, OFICINA 2, AV. RAUL LEONI, SECTOR GUAMACHITO,*
>
> *FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI*
> *Ing. César García*
>
> *Cel: +58 414-760.98.95*
>
> *Hotline Técnica SIEMENS: 0800 1005080*
>
> *Email: support.aan.automat...@siemens.com
> <support.aan.automat...@siemens.com>*
>


--
*CEOS Automatización, C.A.*
*GALPON SERVICIO INDUSTRIALES Y NAVALES FA, C.A.,*
*PISO 1, OFICINA 2, AV. RAUL LEONI, SECTOR GUAMACHITO,*

*FRENTE A LA ASOCIACION DE GANADEROS,BARCELONA,EDO. ANZOATEGUI*
*Ing. César García*

*Cel: +58 414-760.98.95*

*Hotline Técnica SIEMENS: 0800 1005080*

*Email: support.aan.automat...@siemens.com
<support.aan.automat...@siemens.com>*

Reply via email to