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)
-
}