Hey Cesar,

I modified my code to use CachedPlcConnectionManager but the problem
persists: the program gets stuck on the getConnection call.

This is my code now:

public static void main(String[] args) {

// System.setProperty(SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "Error");

Logger logger = LoggerFactory.getLogger(TestConnection.class);

String connectionString = "s7://10.10.26.88?controller-type:S7_300";

PlcConnection plcConnection = null;

try {

CachedPlcConnectionManager connectionManager = CachedPlcConnectionManager.
getBuilder(new DefaultPlcDriverManager()).build();

plcConnection = connectionManager.getConnection(connectionString);

if (!plcConnection.getMetadata().isReadSupported()) {

logger.error("This connection doesn't support reading.");

return;

}

System.out.println("Success");

} catch (Exception e) {

e.printStackTrace();

} finally {

if (plcConnection != null) {

try {

plcConnection.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}


}


The exception trace is:

[main] INFO org.apache.plc4x.java.DefaultPlcDriverManager - Instantiating
new PLC Driver Manager with class loader
jdk.internal.loader.ClassLoaders$AppClassLoader@2cdf8d8a

[main] INFO org.apache.plc4x.java.DefaultPlcDriverManager - Registering
available drivers...

[main] INFO org.apache.plc4x.java.DefaultPlcDriverManager - Registering
driver for Protocol s7 (Siemens S7 (Basic))

[main] INFO org.apache.plc4x.java.transport.tcp.TcpChannelFactory -
Configuring Bootstrap with
org.apache.plc4x.java.s7.readwrite.configuration.S7TcpTransportConfiguration@345965f2

[main] INFO org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic -
S7 Driver running in ACTIVE mode.

[main] INFO org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl -
15:11:46.130938260 userEventTriggered: Multiplexor Event:
org.apache.plc4x.java.spi.events.ConnectEvent@139982de

[nioEventLoopGroup-2-1] WARN io.netty.channel.embedded.EmbeddedChannel -
More than one exception was raised. Will report only the first one and log
others.

io.netty.handler.codec.DecoderException:
io.netty.handler.codec.EncoderException: MessageToMessageCodec$1 must
produce at least one message.

at io.netty.handler.codec.MessageToMessageDecoder.channelRead(
MessageToMessageDecoder.java:98)

at io.netty.handler.codec.MessageToMessageCodec.channelRead(
MessageToMessageCodec.java:111)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:442)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:420)

at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
AbstractChannelHandlerContext.java:412)

at io.netty.handler.codec.MessageToMessageDecoder.channelRead(
MessageToMessageDecoder.java:103)

at io.netty.handler.codec.MessageToMessageCodec.channelRead(
MessageToMessageCodec.java:111)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:442)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:420)

at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
AbstractChannelHandlerContext.java:412)

at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(
ByteToMessageDecoder.java:346)

at io.netty.handler.codec.ByteToMessageDecoder.channelRead(
ByteToMessageDecoder.java:318)

at io.netty.handler.codec.ByteToMessageCodec.channelRead(
ByteToMessageCodec.java:103)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:442)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:420)

at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
AbstractChannelHandlerContext.java:412)

at io.netty.handler.logging.LoggingHandler.channelRead(
LoggingHandler.java:280)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:442)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:420)

at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
AbstractChannelHandlerContext.java:412)

at org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl.decode(
S7HMuxImpl.java:145)

at org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl.decode(
S7HMuxImpl.java:1)

at io.netty.handler.codec.MessageToMessageCodec$2.decode(
MessageToMessageCodec.java:81)

at io.netty.handler.codec.MessageToMessageDecoder.channelRead(
MessageToMessageDecoder.java:88)

at io.netty.handler.codec.MessageToMessageCodec.channelRead(
MessageToMessageCodec.java:111)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:442)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:420)

at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(
AbstractChannelHandlerContext.java:412)

at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(
DefaultChannelPipeline.java:1410)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:440)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(
AbstractChannelHandlerContext.java:420)

at io.netty.channel.DefaultChannelPipeline.fireChannelRead(
DefaultChannelPipeline.java:919)

at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(
AbstractNioByteChannel.java:166)

at io.netty.channel.nio.NioEventLoop.processSelectedKey(
NioEventLoop.java:788)

at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(
NioEventLoop.java:724)

at io.netty.channel.nio.NioEventLoop.processSelectedKeys(
NioEventLoop.java:650)

at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)

at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(
SingleThreadEventExecutor.java:997)

at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)

at io.netty.util.concurrent.FastThreadLocalRunnable.run(
FastThreadLocalRunnable.java:30)

at java.base/java.lang.Thread.run(Thread.java:840)

Caused by: io.netty.handler.codec.EncoderException: MessageToMessageCodec$1
must produce at least one message.

at io.netty.handler.codec.MessageToMessageEncoder.write(
MessageToMessageEncoder.java:99)

at io.netty.handler.codec.MessageToMessageCodec.write(
MessageToMessageCodec.java:116)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(
AbstractChannelHandlerContext.java:891)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(
AbstractChannelHandlerContext.java:875)

at io.netty.channel.AbstractChannelHandlerContext.write(
AbstractChannelHandlerContext.java:984)

at io.netty.channel.AbstractChannelHandlerContext.write(
AbstractChannelHandlerContext.java:868)

at io.netty.handler.logging.LoggingHandler.write(LoggingHandler.java:288)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(
AbstractChannelHandlerContext.java:891)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(
AbstractChannelHandlerContext.java:875)

at io.netty.channel.AbstractChannelHandlerContext.write(
AbstractChannelHandlerContext.java:984)

at io.netty.channel.AbstractChannelHandlerContext.write(
AbstractChannelHandlerContext.java:868)

at io.netty.handler.codec.MessageToByteEncoder.write(
MessageToByteEncoder.java:113)

at io.netty.handler.codec.ByteToMessageCodec.write(
ByteToMessageCodec.java:108)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(
AbstractChannelHandlerContext.java:891)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(
AbstractChannelHandlerContext.java:875)

at io.netty.channel.AbstractChannelHandlerContext.write(
AbstractChannelHandlerContext.java:984)

at io.netty.channel.AbstractChannelHandlerContext.write(
AbstractChannelHandlerContext.java:868)

at io.netty.handler.codec.MessageToMessageEncoder.write(
MessageToMessageEncoder.java:113)

at io.netty.handler.codec.MessageToMessageCodec.write(
MessageToMessageCodec.java:116)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(
AbstractChannelHandlerContext.java:891)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(
AbstractChannelHandlerContext.java:875)

at io.netty.channel.AbstractChannelHandlerContext.write(
AbstractChannelHandlerContext.java:984)

at io.netty.channel.AbstractChannelHandlerContext.write(
AbstractChannelHandlerContext.java:868)

at io.netty.handler.codec.MessageToMessageEncoder.write(
MessageToMessageEncoder.java:113)

at io.netty.handler.codec.MessageToMessageCodec.write(
MessageToMessageCodec.java:116)

at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(
AbstractChannelHandlerContext.java:891)

at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(
AbstractChannelHandlerContext.java:956)

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:1025)

at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:306)

at org.apache.plc4x.java.spi.internal.DefaultConversationContext.sendToWire(
DefaultConversationContext.java:70)

at org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(
DefaultSendRequestContext.java:107)

at org.apache.plc4x.java.spi.internal.DefaultSendRequestContext.handle(
DefaultSendRequestContext.java:1)

at org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$3(
S7ProtocolLogic.java:194)

at java.base/java.util.function.Consumer.lambda$andThen$0(Consumer.java:65)

at org.apache.plc4x.java.spi.Plc4xNettyWrapper.decode(
Plc4xNettyWrapper.java:183)

at io.netty.handler.codec.MessageToMessageCodec$2.decode(
MessageToMessageCodec.java:81)

at io.netty.handler.codec.MessageToMessageDecoder.channelRead(
MessageToMessageDecoder.java:88)

... 40 more

[pool-6-thread-1] WARN
org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic - Timeout
during Connection establishing, closing channel...

[pool-6-thread-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - Unregistered of
channel: PRIMARY

[pool-6-thread-1] WARN io.netty.channel.AbstractChannelHandlerContext -
Failed to mark a promise as failure because it has succeeded already:
DefaultChannelPromise@53d1d4d1(success)

java.lang.IllegalStateException: HashedWheelTimer.stop() cannot be called
from TimerTask

at io.netty.util.HashedWheelTimer.stop(HashedWheelTimer.java:393)

at org.apache.plc4x.java.spi.netty.NettyHashTimerTimeoutManager.stop(
NettyHashTimerTimeoutManager.java:63)

at org.apache.plc4x.java.spi.Plc4xNettyWrapper.close(
Plc4xNettyWrapper.java:130)

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:994)

at io.netty.channel.AbstractChannel.close(AbstractChannel.java:280)

at io.netty.channel.embedded.EmbeddedChannel.close(EmbeddedChannel.java:569)

at io.netty.channel.embedded.EmbeddedChannel.close(EmbeddedChannel.java:556)

at org.apache.plc4x.java.s7.readwrite.protocol.S7ProtocolLogic.lambda$4(
S7ProtocolLogic.java:185)

at org.apache.plc4x.java.spi.Plc4xNettyWrapper.lambda$8(
Plc4xNettyWrapper.java:253)

at org.apache.plc4x.java.spi.netty.NettyHashTimerTimeoutManager.lambda$0(
NettyHashTimerTimeoutManager.java:55)

at io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(
HashedWheelTimer.java:715)

at io.netty.util.concurrent.ImmediateExecutor.execute(
ImmediateExecutor.java:34)

at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(
HashedWheelTimer.java:703)

at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(
HashedWheelTimer.java:790)

at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:503)

at java.base/java.lang.Thread.run(Thread.java:840)

[nioEventLoopGroup-2-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - Unregistered of
channel: PRIMARY

[nioEventLoopGroup-2-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl -
io.netty.channel.embedded.EmbeddedEventLoop@476a35e8

[plc4x-s7ha-thread-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection - Creating
prymary connection.

[plc4x-s7ha-thread-1] INFO
org.apache.plc4x.java.transport.tcp.TcpChannelFactory - Configuring
Bootstrap with
org.apache.plc4x.java.s7.readwrite.configuration.S7TcpTransportConfiguration@345965f2

[plc4x-s7ha-thread-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection - Reconnecting
primary channel.

[nioEventLoopGroup-3-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - Unregistered of
channel: PRIMARY

[nioEventLoopGroup-3-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl -
io.netty.channel.embedded.EmbeddedEventLoop@476a35e8

[plc4x-s7ha-thread-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection - Creating
prymary connection.

[plc4x-s7ha-thread-1] INFO
org.apache.plc4x.java.transport.tcp.TcpChannelFactory - Configuring
Bootstrap with
org.apache.plc4x.java.s7.readwrite.configuration.S7TcpTransportConfiguration@345965f2

[plc4x-s7ha-thread-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection - Reconnecting
primary channel.

[nioEventLoopGroup-4-1] INFO
org.apache.plc4x.java.s7.readwrite.protocol.S7HMuxImpl - Unregistered of
channel: PRIMARY

...

Reply via email to