ottlukas opened a new issue, #636:
URL: https://github.com/apache/plc4x/issues/636

   Note: The version is 0.9.1.
   
   1. The document 
(here)[https://plc4x.apache.org/users/protocols/modbus.html](https://plc4x.apache.org/users/protocols/modbus.html)
 seems wrong. It tells me the connection string format is: 
"modbus-tcp:tcp://127.0.0.1:502", but my test code throws exception saying no 
driver until I change it to "modbus://127.0.0.1".
   
   2. My test code writes (or reads) some value via modbus tcp every 1 second, 
using short tcp connection (open and close every time). The memory increases 
every second until out-of-memory. In process monitor I find the thread count 
increases 1 every time the connection opens, but never releases, althought I 
consider the `try-block` shall closes it automatically. In fact, I see it calls 
`connection.close` after the `try-block`.
   
   Test code:
   
   ```
   
           while (true) {
               String connectionString = "modbus://127.0.0.1";
               try
   (PlcConnection plcConnection = new 
PlcDriverManager().getConnection(connectionString)) {
            
         PlcWriteRequest.Builder builder = plcConnection.writeRequestBuilder();
                   builder.addItem("value-1",
   "holding-register:1:DINT", 30000);
                   builder.addItem("value-2", "holding-register:3:REAL",
   3.14);
                   PlcWriteRequest writeRequest = builder.build();
                   PlcWriteResponse
   response = writeRequest.execute().get();
                   
                   for (String fieldName :
   response.getFieldNames()) {
                       if(response.getResponseCode(fieldName) == 
PlcResponseCode.OK)
   {
                           System.out.println("Value[" + fieldName + "]: 
updated");
                  
       }
   
                       // Something went wrong, to output an error message 
instead.
            
             else {
                           System.out.println("Error[" + fieldName + "]: " + 
response.getResponseCode(fieldName).name());
                       
                                        }
                   }
                   System.out.println("done");
        
         }
               Thread.sleep(1000);
           }
   
   ```
   
   
   It shows the connection is not cleaned properly.
   
   I see it's more efficient to do this using long tcp connection (reuse 1 
connection or use a pool). But short tcp connection should also work.
   
   Imported from Jira 
[PLC4X-339](https://issues.apache.org/jira/browse/PLC4X-339). Original Jira may 
contain additional context.
   Reported by: liangjian.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to