You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/08/29 15:50:19 UTC

[plc4x] 02/02: fix(plc4go/spi): fix AwaitCompletion of RequestTransactionManager

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 10962f133609d4ed31b8efecd39f667d749612b1
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Mon Aug 29 17:50:10 2022 +0200

    fix(plc4go/spi): fix AwaitCompletion of RequestTransactionManager
---
 plc4go/spi/RequestTransactionManager.go               | 15 ++++++++++++++-
 plc4go/tests/drivers/tests/manual_cbus_driver_test.go |  5 +----
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/plc4go/spi/RequestTransactionManager.go b/plc4go/spi/RequestTransactionManager.go
index 0113cd165..a6b025502 100644
--- a/plc4go/spi/RequestTransactionManager.go
+++ b/plc4go/spi/RequestTransactionManager.go
@@ -377,5 +377,18 @@ func (t *RequestTransaction) AwaitCompletion() error {
 	for t.completionFuture == nil {
 		time.Sleep(time.Millisecond * 10)
 	}
-	return t.completionFuture.AwaitCompletion()
+	if err := t.completionFuture.AwaitCompletion(); err != nil {
+		return err
+	}
+	stillActive := true
+	for stillActive {
+		stillActive = false
+		for _, runningRequest := range t.parent.runningRequests {
+			if runningRequest.transactionId == t.transactionId {
+				stillActive = true
+				break
+			}
+		}
+	}
+	return nil
 }
diff --git a/plc4go/tests/drivers/tests/manual_cbus_driver_test.go b/plc4go/tests/drivers/tests/manual_cbus_driver_test.go
index 6fbc971d3..b385a4e09 100644
--- a/plc4go/tests/drivers/tests/manual_cbus_driver_test.go
+++ b/plc4go/tests/drivers/tests/manual_cbus_driver_test.go
@@ -154,9 +154,7 @@ func TestManualCBusRead(t *testing.T) {
 	readRequest, err := connection.ReadRequestBuilder().
 		AddQuery("asd", "cal/3/identify=OutputUnitSummary").
 		Build()
-	if err != nil {
-		panic(err)
-	}
+	require.NoError(t, err)
 	readRequestResult := <-readRequest.Execute()
 	fmt.Printf("%s", readRequestResult.GetResponse())
 }
@@ -179,5 +177,4 @@ func TestManualDiscovery(t *testing.T) {
 		println(event.(fmt.Stringer).String())
 	})
 	require.NoError(t, err)
-
 }