Skip to content

Commit 97145af

Browse files
committed
remove the need to pass a timeout
Signed-off-by: Angelo De Caro <[email protected]>
1 parent 113ff9b commit 97145af

File tree

20 files changed

+215
-129
lines changed

20 files changed

+215
-129
lines changed

token/services/certifier/interactive/service.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,11 @@ package interactive
99
import (
1010
"fmt"
1111
"sync"
12-
"time"
1312

1413
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/metrics"
1514
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
1615
token2 "github.com/hyperledger-labs/fabric-token-sdk/token"
17-
"github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
16+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
1817
"github.com/hyperledger-labs/fabric-token-sdk/token/token"
1918
"github.com/pkg/errors"
2019
)
@@ -60,7 +59,7 @@ func (c *CertificationService) SetWallet(tms *token2.ManagementService, wallet s
6059
func (c *CertificationService) Call(context view.Context) (interface{}, error) {
6160
// 1. receive request
6261
logger.Debugf("receive certification request [%s]", context.ID())
63-
s := session.JSON(context)
62+
s := jsession.FromContext(context)
6463
var cr *CertificationRequest
6564
if err := s.Receive(&cr); err != nil {
6665
return nil, errors.WithMessage(err, "failed receiving certification request")
@@ -162,7 +161,7 @@ func (i *CertificationRequestView) Call(context view.Context) (interface{}, erro
162161
return nil, errors.Errorf("no certifiers defined")
163162
}
164163

165-
s, err := session.NewJSON(context, i, i.certifier)
164+
s, err := jsession.NewJSON(context, i, i.certifier)
166165
if err != nil {
167166
return nil, errors.WithMessagef(err, "failed opening session to [%s]", i.certifier)
168167
}
@@ -178,7 +177,7 @@ func (i *CertificationRequestView) Call(context view.Context) (interface{}, erro
178177
// 3. wait response
179178
logger.Debugf("wait certification request response for [%v]", i.ids)
180179
var certifications [][]byte
181-
if err := s.ReceiveWithTimeout(&certifications, 60*time.Second); err != nil {
180+
if err := s.Receive(&certifications); err != nil {
182181
return nil, errors.WithMessagef(err, "failed receiving certifications [%v] from [%s]", i.ids, i.certifier)
183182
}
184183

token/services/interop/htlc/distribute.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212

1313
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
1414
"github.com/hyperledger-labs/fabric-token-sdk/token"
15-
"github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
15+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
1616
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
1717
"github.com/pkg/errors"
1818
)
@@ -95,7 +95,7 @@ func ReceiveTerms(context view.Context) (*Terms, error) {
9595

9696
func (v *termsReceiverView) Call(context view.Context) (interface{}, error) {
9797
terms := &Terms{}
98-
if err := session.JSON(context).Receive(terms); err != nil {
98+
if err := jsession.FromContext(context).Receive(terms); err != nil {
9999
return nil, errors.Wrapf(err, "failed unmarshalling terms")
100100
}
101101
return terms, nil

token/services/network/orion/approval.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import (
1919
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/keys"
2020
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/translator"
2121
driver2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/network/driver"
22-
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
22+
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
2323
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
2424
"github.com/pkg/errors"
2525
"go.opentelemetry.io/otel/trace"
@@ -88,12 +88,12 @@ func (r *RequestApprovalView) Call(context view.Context) (interface{}, error) {
8888
Request: r.RequestRaw,
8989
}
9090
span.AddEvent("send_approval_request")
91-
if err := session.SendWithContext(context.Context(), request); err != nil {
91+
if err := session.Send(request); err != nil {
9292
return nil, errors.Wrapf(err, "failed to send request to custodian [%s]", sm.CustodianID)
9393
}
9494
response := &ApprovalResponse{}
9595
span.AddEvent("receive_approval_response")
96-
if err := session.ReceiveWithTimeout(response, 30*time.Second); err != nil {
96+
if err := session.Receive(response); err != nil {
9797
span.RecordError(err)
9898
return nil, errors.Wrapf(err, "failed to receive response from custodian [%s]", sm.CustodianID)
9999
}
@@ -116,7 +116,7 @@ func (r *RequestApprovalResponderView) Call(context view.Context) (interface{},
116116
span := trace.SpanFromContext(context.Context())
117117

118118
// receive request
119-
session := session2.JSON(context)
119+
session := session2.FromContext(context)
120120
span.AddEvent("receive_approval_request")
121121
request := &ApprovalRequest{}
122122
if err := session.Receive(request); err != nil {
@@ -129,7 +129,7 @@ func (r *RequestApprovalResponderView) Call(context view.Context) (interface{},
129129
return nil, errors.Wrapf(err, "failed to process request")
130130
}
131131
span.AddEvent("send_approval_response")
132-
if err := session.SendWithContext(context.Context(), &ApprovalResponse{Envelope: txRaw}); err != nil {
132+
if err := session.Send(&ApprovalResponse{Envelope: txRaw}); err != nil {
133133
return nil, errors.Wrapf(err, "failed to send response")
134134
}
135135
return nil, nil

token/services/network/orion/broadcast.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import (
1717
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network"
1818
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/translator"
1919
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/driver"
20-
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
20+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
2121
"github.com/pkg/errors"
2222
"go.opentelemetry.io/otel/trace"
2323
"go.uber.org/zap/zapcore"
@@ -50,7 +50,7 @@ func (r *BroadcastView) Call(context view.Context) (interface{}, error) {
5050
return nil, errors.Wrapf(err, "failed getting session manager for network [%s]", r.Network)
5151
}
5252
custodian := sm.CustodianID
53-
session, err := session2.NewJSON(context, context.Initiator(), view2.GetIdentityProvider(context).Identity(custodian))
53+
session, err := jsession.NewJSON(context, context.Initiator(), view2.GetIdentityProvider(context).Identity(custodian))
5454
if err != nil {
5555
return nil, errors.Wrapf(err, "failed to get session to custodian [%s]", custodian)
5656
}
@@ -73,12 +73,12 @@ func (r *BroadcastView) Call(context view.Context) (interface{}, error) {
7373
Blob: blob,
7474
}
7575
span.AddEvent("send_broadcast_request")
76-
if err := session.SendWithContext(context.Context(), request); err != nil {
76+
if err := session.Send(request); err != nil {
7777
return nil, errors.Wrapf(err, "failed to send request to custodian [%s]", custodian)
7878
}
7979
response := &BroadcastResponse{}
8080
span.AddEvent("receive_broadcast_response")
81-
if err := session.ReceiveWithTimeout(response, 30*time.Second); err != nil {
81+
if err := session.Receive(response); err != nil {
8282
return nil, errors.Wrapf(err, "failed to receive response from custodian [%s]", custodian)
8383
}
8484
if len(response.Err) != 0 {
@@ -97,7 +97,7 @@ func (r *BroadcastResponderView) Call(context view.Context) (interface{}, error)
9797
span := trace.SpanFromContext(context.Context())
9898

9999
// receive request
100-
session := session2.JSON(context)
100+
session := jsession.FromContext(context)
101101
request := &BroadcastRequest{}
102102
span.AddEvent("receive_request")
103103
if err := session.Receive(request); err != nil {
@@ -170,7 +170,7 @@ func (r *BroadcastResponderView) Call(context view.Context) (interface{}, error)
170170
if broadcastErr != nil {
171171
broadcastResponse.Err = fmt.Sprintf("failed to broadcast to [%s] with err [%s]", sm.CustodianID, broadcastErr.Error())
172172
}
173-
if err := session.SendWithContext(context.Context(), broadcastResponse); err != nil {
173+
if err := session.Send(broadcastResponse); err != nil {
174174
return nil, errors.Wrapf(err, "failed to send response")
175175
}
176176
return nil, nil

token/services/network/orion/lookupkey.go

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
orion2 "github.com/hyperledger-labs/fabric-smart-client/platform/orion"
1515
view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view"
1616
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
17-
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
17+
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
1818
"github.com/pkg/errors"
1919
"go.uber.org/zap/zapcore"
2020
)
@@ -24,7 +24,6 @@ type LookupKeyRequest struct {
2424
Namespace string
2525
StartingTxID string
2626
Key string
27-
Timeout time.Duration
2827
}
2928

3029
func (l *LookupKeyRequest) String() string {
@@ -39,14 +38,13 @@ type LookupKeyRequestView struct {
3938
*LookupKeyRequest
4039
}
4140

42-
func NewLookupKeyRequestView(network string, namespace string, startingTxID string, key string, timeout time.Duration) *LookupKeyRequestView {
41+
func NewLookupKeyRequestView(network string, namespace string, startingTxID string, key string) *LookupKeyRequestView {
4342
return &LookupKeyRequestView{
4443
LookupKeyRequest: &LookupKeyRequest{
4544
Network: network,
4645
Namespace: namespace,
4746
StartingTxID: startingTxID,
4847
Key: key,
49-
Timeout: timeout,
5048
},
5149
}
5250
}
@@ -78,7 +76,7 @@ func (v *LookupKeyRequestView) Call(context view.Context) (interface{}, error) {
7876
return nil, errors.Wrapf(err, "failed to send request [%s] to custodian [%s]", v.LookupKeyRequest, custodian)
7977
}
8078
response := &LookupKeyResponse{}
81-
if err := session.ReceiveWithTimeout(response, v.Timeout); err != nil {
79+
if err := session.Receive(response); err != nil {
8280
return nil, errors.Wrapf(err, "failed to receive response from custodian [%s] on request [%s]", custodian, v.LookupKeyRequest)
8381
}
8482
return response.Raw, nil
@@ -88,7 +86,7 @@ type LookupKeyRequestRespondView struct{}
8886

8987
func (v *LookupKeyRequestRespondView) Call(context view.Context) (interface{}, error) {
9088
// receive request
91-
session := session2.JSON(context)
89+
session := session2.FromContext(context)
9290
request := &LookupKeyRequest{}
9391
if err := session.Receive(request); err != nil {
9492
return nil, errors.Wrapf(err, "failed to receive request")
@@ -126,18 +124,13 @@ func LookupKey(context view.Context, request *LookupKeyRequest) ([]byte, error)
126124
}
127125

128126
pollingTime := int64(500)
129-
iterations := int(request.Timeout.Milliseconds() / pollingTime)
130-
if iterations == 0 {
131-
iterations = 1
132-
}
133-
for i := 0; i < iterations; i++ {
127+
for {
134128
timeout := time.NewTimer(time.Duration(pollingTime) * time.Millisecond)
135129

136-
stop := false
137130
select {
138131
case <-context.Context().Done():
139132
timeout.Stop()
140-
return nil, errors.Errorf("view context done")
133+
return nil, errors.Errorf("context done")
141134
case <-timeout.C:
142135
timeout.Stop()
143136
v, err := qe.Get(request.Key)
@@ -147,18 +140,14 @@ func LookupKey(context view.Context, request *LookupKeyRequest) ([]byte, error)
147140
logger.Debugf("get key [%s] from [%s:%s], result [%d]", request.Key, request.Network, request.Namespace, len(v))
148141
if len(v) != 0 {
149142
if logger.IsEnabledFor(zapcore.DebugLevel) {
150-
logger.Debugf("scanning for key [%s] with timeout [%s] found, [%s]",
143+
logger.Debugf("scanning for key [%s] with timeout [%d] found, [%s]",
151144
request.Key,
152-
timeout,
145+
pollingTime,
153146
base64.StdEncoding.EncodeToString(v),
154147
)
155148
}
156149
return v, nil
157150
}
158151
}
159-
if stop {
160-
break
161-
}
162152
}
163-
return nil, errors.Errorf("cannot find get key [%s] from [%s:%s]", request.Key, request.Network, request.Namespace)
164153
}

token/services/network/orion/network.go

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -221,15 +221,9 @@ func (n *Network) LookupTransferMetadataKey(namespace string, startingTxID strin
221221
if err != nil {
222222
return nil, errors.Wrapf(err, "failed to generate transfer action metadata key from [%s]", key)
223223
}
224-
pp, err := n.viewManager.InitiateView(
225-
NewLookupKeyRequestView(
226-
n.Name(),
227-
namespace,
228-
startingTxID,
229-
orionKey(k),
230-
timeout,
231-
), context.TODO(),
232-
)
224+
ctx, cancel := context.WithTimeout(context.Background(), timeout)
225+
defer cancel()
226+
pp, err := n.viewManager.InitiateView(NewLookupKeyRequestView(n.Name(), namespace, startingTxID, orionKey(k)), ctx)
233227
if err != nil {
234228
return nil, err
235229
}

token/services/network/orion/publicparams.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
"github.com/hyperledger-labs/fabric-token-sdk/token/services/logging"
1717
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/keys"
1818
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/translator"
19-
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
19+
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
2020
"github.com/pkg/errors"
2121
)
2222

@@ -75,7 +75,7 @@ func (v *PublicParamsRequestView) Call(context view.Context) (interface{}, error
7575
Network: v.Network,
7676
Namespace: v.Namespace,
7777
}
78-
if err := session.SendWithContext(context.Context(), request); err != nil {
78+
if err := session.Send(request); err != nil {
7979
if i == v.retries-1 {
8080
return nil, errors.Wrapf(err, "failed to send request to custodian [%s]", custodian)
8181
}
@@ -97,7 +97,7 @@ type PublicParamsRequestResponderView struct{}
9797

9898
func (v *PublicParamsRequestResponderView) Call(context view.Context) (interface{}, error) {
9999
// receive request
100-
session := session2.JSON(context)
100+
session := session2.FromContext(context)
101101
request := &PublicParamsRequest{}
102102
if err := session.Receive(request); err != nil {
103103
return nil, errors.Wrapf(err, "failed to receive request")
@@ -110,7 +110,7 @@ func (v *PublicParamsRequestResponderView) Call(context view.Context) (interface
110110
return nil, errors.Wrapf(err, "failed to get public parameters from orion network [%s]", request.Network)
111111
}
112112
logger.Debugf("reading public parameters, done: %d", len(ppRaw))
113-
if err := session.SendWithContext(context.Context(), &PublicParamsResponse{Raw: ppRaw}); err != nil {
113+
if err := session.Send(&PublicParamsResponse{Raw: ppRaw}); err != nil {
114114
return nil, errors.Wrapf(err, "failed to send response")
115115
}
116116
return nil, nil

token/services/network/orion/querytokens.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"github.com/hyperledger-labs/fabric-token-sdk/token"
1414
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/keys"
1515
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/translator"
16-
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
16+
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
1717
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
1818
"github.com/pkg/errors"
1919
)
@@ -68,7 +68,7 @@ type RequestQueryTokensResponderView struct{}
6868

6969
func (r *RequestQueryTokensResponderView) Call(context view.Context) (interface{}, error) {
7070
// receive request
71-
session := session2.JSON(context)
71+
session := session2.FromContext(context)
7272
request := &QueryTokensRequest{}
7373
if err := session.Receive(request); err != nil {
7474
return nil, errors.Wrapf(err, "failed to receive request")

token/services/network/orion/spenttokens.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ SPDX-License-Identifier: Apache-2.0
77
package orion
88

99
import (
10-
"time"
11-
1210
"github.com/hyperledger-labs/fabric-smart-client/platform/orion"
1311
view2 "github.com/hyperledger-labs/fabric-smart-client/platform/view"
1412
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
1513
"github.com/hyperledger-labs/fabric-token-sdk/token"
16-
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
14+
"github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
1715
"github.com/pkg/errors"
1816
)
1917

@@ -43,7 +41,7 @@ func (r *RequestSpentTokensView) Call(context view.Context) (interface{}, error)
4341
return nil, errors.Wrap(err, "failed to get custodian identifier")
4442
}
4543
logger.Debugf("custodian: %s", custodian)
46-
session, err := session2.NewJSON(context, context.Initiator(), view2.GetIdentityProvider(context).Identity(custodian))
44+
session, err := jsession.NewJSON(context, context.Initiator(), view2.GetIdentityProvider(context).Identity(custodian))
4745
if err != nil {
4846
return nil, errors.Wrapf(err, "failed to get session to custodian [%s]", custodian)
4947
}
@@ -59,7 +57,7 @@ func (r *RequestSpentTokensView) Call(context view.Context) (interface{}, error)
5957
logger.Debugf("request sent: %s", custodian)
6058

6159
response := &SpentTokensResponse{}
62-
if err := session.ReceiveWithTimeout(response, 1*time.Minute); err != nil {
60+
if err := session.Receive(response); err != nil {
6361
return nil, errors.Wrapf(err, "failed to receive response from custodian [%s]", custodian)
6462
}
6563
logger.Debugf("response received [%v]: %s", response, custodian)
@@ -70,7 +68,7 @@ type RequestSpentTokensResponderView struct{}
7068

7169
func (r *RequestSpentTokensResponderView) Call(context view.Context) (interface{}, error) {
7270
// receive request
73-
session := session2.JSON(context)
71+
session := jsession.FromContext(context)
7472
request := &SpentTokensRequest{}
7573
if err := session.Receive(request); err != nil {
7674
return nil, errors.Wrapf(err, "failed to receive request")

token/services/network/orion/txstatus.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
1414
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/translator"
1515
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/driver"
16-
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/session"
16+
session2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/utils/json/jsession"
1717
"github.com/pkg/errors"
1818
"go.opentelemetry.io/otel/trace"
1919
)
@@ -61,7 +61,7 @@ func (r *RequestTxStatusView) Call(context view.Context) (interface{}, error) {
6161
TxID: r.TxID,
6262
}
6363
span.AddEvent("send_tx_status_request")
64-
if err := session.SendWithContext(context.Context(), request); err != nil {
64+
if err := session.Send(request); err != nil {
6565
return nil, errors.Wrapf(err, "failed to send request to custodian [%s]", custodian)
6666
}
6767
response := &TxStatusResponse{}
@@ -83,7 +83,7 @@ func (r *RequestTxStatusResponderView) Call(context view.Context) (interface{},
8383
span := trace.SpanFromContext(context.Context())
8484

8585
// receive request
86-
session := session2.JSON(context)
86+
session := session2.FromContext(context)
8787
request := &TxStatusRequest{}
8888
span.AddEvent("receive_tx_status_request")
8989
if err := session.Receive(request); err != nil {
@@ -104,7 +104,7 @@ func (r *RequestTxStatusResponderView) Call(context view.Context) (interface{},
104104
}
105105
span.AddEvent("send_tx_status_response")
106106
logger.Debugf("send tx status response for [%s]: [%d]", request.TxID, response.Status)
107-
if err := session.SendWithContext(context.Context(), response); err != nil {
107+
if err := session.Send(response); err != nil {
108108
return nil, errors.Wrapf(err, "failed to send response")
109109
}
110110
return nil, nil

0 commit comments

Comments
 (0)