Skip to content

[Bug]: When returning the cached connection, a failure recovery was triggered, and it got stuck in S7HPlcConnection.connect() #2654

Description

@bajiedewow

What happened?

"device-collect-5" #112 prio=5 os_prio=0 cpu=2909.49ms elapsed=25057.22s tid=0x00007f393c005e50 nid=0x29f2 waiting on condition  [0x00007f39658fb000]
   java.lang.Thread.State: WAITING (parking)
	at jdk.internal.misc.Unsafe.park(java.base@17.0.2/Native Method)
	- parking to wait for  <0x000000041a006610> (a java.util.concurrent.CompletableFuture$Signaller)
	at java.util.concurrent.locks.LockSupport.park(java.base@17.0.2/LockSupport.java:211)
	at java.util.concurrent.CompletableFuture$Signaller.block(java.base@17.0.2/CompletableFuture.java:1864)
	at java.util.concurrent.ForkJoinPool.unmanagedBlock(java.base@17.0.2/ForkJoinPool.java:3463)
	at java.util.concurrent.ForkJoinPool.managedBlock(java.base@17.0.2/ForkJoinPool.java:3434)
	at java.util.concurrent.CompletableFuture.waitingGet(java.base@17.0.2/CompletableFuture.java:1898)
	at java.util.concurrent.CompletableFuture.get(java.base@17.0.2/CompletableFuture.java:2072)
	at org.apache.plc4x.java.s7.readwrite.protocol.S7HPlcConnection.connect(S7HPlcConnection.java:214)
	at org.apache.plc4x.java.DefaultPlcDriverManager.getConnection(DefaultPlcDriverManager.java:80)
	at org.apache.plc4x.java.utils.cache.ConnectionContainer.returnConnection(ConnectionContainer.java:150)
	- locked <0x000000041a005e00> (a org.apache.plc4x.java.utils.cache.ConnectionContainer)
	at org.apache.plc4x.java.utils.cache.LeasedPlcConnection.close(LeasedPlcConnection.java:94)
	- locked <0x000000041a0066c8> (a org.apache.plc4x.java.utils.cache.LeasedPlcConnection)
	at com.industrial.collector.core.DeviceCollector.returnConnection(DeviceCollector.java:201)
	at com.industrial.collector.task.CollectTask.processDevice(CollectTask.java:374)
	at com.industrial.collector.task.CollectTask.lambda$tick$2(CollectTask.java:282)
	at com.industrial.collector.task.CollectTask$$Lambda$1073/0x00000008013b1f58.run(Unknown Source)
	at java.util.concurrent.Executors$RunnableAdapter.call(java.base@17.0.2/Executors.java:539)
	at java.util.concurrent.FutureTask.run(java.base@17.0.2/FutureTask.java:264)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.2/ThreadPoolExecutor.java:1136)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.2/ThreadPoolExecutor.java:635)
	at java.lang.Thread.run(java.base@17.0.2/Thread.java:833)

this thread rutun connection failed 。


"plc-conn-acquire-81" #105183 daemon prio=5 os_prio=0 cpu=13.38ms elapsed=17301.01s tid=0x00007f3920ef30b0 nid=0x32d5 waiting for monitor entry  [0x00007f38eb8a9000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.apache.plc4x.java.utils.cache.ConnectionContainer.lease(ConnectionContainer.java:98)
	- waiting to lock <0x000000041a005e00> (a org.apache.plc4x.java.utils.cache.ConnectionContainer)
	at org.apache.plc4x.java.utils.cache.CachedPlcConnectionManager.getConnection(CachedPlcConnectionManager.java:116)
	at com.industrial.collector.core.DeviceCollector.lambda$submitAcquireFuture$1(DeviceCollector.java:144)
	at com.industrial.collector.core.DeviceCollector$$Lambda$1074/0x00000008013b2b68.call(Unknown Source)
	at java.util.concurrent.FutureTask.run(java.base@17.0.2/FutureTask.java:264)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(java.base@17.0.2/ThreadPoolExecutor.java:1136)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(java.base@17.0.2/ThreadPoolExecutor.java:635)
	at java.lang.Thread.run(java.base@17.0.2/Thread.java:833)

   Locked ownable synchronizers:
	- <0x000000041980ec18> (a java.util.concurrent.ThreadPoolExecutor$Worker)

getconnction was blocked

Version

v0.13.1

Programming Languages

  • plc4c
  • plc4go
  • plc4j
  • plc4net
  • plc4py

Protocols

  • AB-Ethernet
  • ADS /AMS
  • BACnet/IP
  • C-Bus
  • CANopen
  • EtherNet/IP
  • Firmata
  • IEC-69870
  • KNXnet/IP
  • Modbus
  • OPC-UA
  • Profinet
  • S7
  • S7-light

Metadata

Metadata

Assignees

No one assigned

    Labels

    S7https://plc4x.apache.org/users/protocols/s7.htmljavaPull requests that update Java code

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions