Skip to content

Commit 95ad164

Browse files
authored
Merge pull request #1790 from c9s/c9s/xmaker/check-connectivity
FIX: [xmaker] check connectivity before calling updateQuote
2 parents 738cb24 + 9f7521b commit 95ad164

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

pkg/exchange/binance/binanceapi/transfer_asset_request.go

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ const (
1717
TransferAssetTypeIsolatedMarginToMain TransferAssetType = "ISOLATED_MARGIN_MAIN"
1818
)
1919

20+
// User Universal Transfer (USER_DATA)
21+
//
2022
//go:generate requestgen -method POST -url "/sapi/v1/asset/transfer" -type TransferAssetRequest -responseType .TransferResponse
2123
type TransferAssetRequest struct {
2224
client requestgen.AuthenticatedAPIClient

pkg/strategy/xmaker/strategy.go

+13-4
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,8 @@ type Strategy struct {
232232

233233
metricsLabels prometheus.Labels
234234

235-
connectivityGroup *types.ConnectivityGroup
235+
sourceMarketDataConnectivity, sourceUserDataConnectivity *types.Connectivity
236+
connectivityGroup *types.ConnectivityGroup
236237

237238
// lastAggregatedSignal stores the last aggregated signal with mutex
238239
// TODO: use float64 series instead, so that we can store history signal values
@@ -599,6 +600,10 @@ func (s *Strategy) updateQuote(ctx context.Context) error {
599600
return nil
600601
}
601602

603+
if !s.sourceMarketDataConnectivity.IsConnected() || !s.sourceUserDataConnectivity.IsConnected() {
604+
return nil
605+
}
606+
602607
signal, err := s.aggregateSignal(ctx)
603608
if err != nil {
604609
return err
@@ -1442,6 +1447,7 @@ func (s *Strategy) quoteWorker(ctx context.Context) {
14421447
return
14431448

14441449
case <-ticker.C:
1450+
14451451
if err := s.updateQuote(ctx); err != nil {
14461452
s.logger.WithError(err).Errorf("unable to place maker orders")
14471453
}
@@ -1810,10 +1816,13 @@ func (s *Strategy) CrossRun(
18101816

18111817
s.stopC = make(chan struct{})
18121818

1813-
sourceConnectivity := types.NewConnectivity()
1814-
sourceConnectivity.Bind(s.sourceSession.UserDataStream)
1819+
s.sourceUserDataConnectivity = types.NewConnectivity()
1820+
s.sourceUserDataConnectivity.Bind(s.sourceSession.UserDataStream)
1821+
1822+
s.sourceMarketDataConnectivity = types.NewConnectivity()
1823+
s.sourceMarketDataConnectivity.Bind(s.sourceSession.MarketDataStream)
18151824

1816-
s.connectivityGroup = types.NewConnectivityGroup(sourceConnectivity)
1825+
s.connectivityGroup = types.NewConnectivityGroup(s.sourceUserDataConnectivity)
18171826

18181827
go func() {
18191828
s.logger.Infof("waiting for authentication connections to be ready...")

pkg/types/connectivity.go

+14
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,20 @@ func NewConnectivity() *Connectivity {
127127
}
128128
}
129129

130+
func (c *Connectivity) IsConnected() (conn bool) {
131+
c.mu.Lock()
132+
conn = c.connected
133+
c.mu.Unlock()
134+
return conn
135+
}
136+
137+
func (c *Connectivity) IsAuthed() (authed bool) {
138+
c.mu.Lock()
139+
authed = c.authed
140+
c.mu.Unlock()
141+
return authed
142+
}
143+
130144
func (c *Connectivity) handleConnect() {
131145
c.mu.Lock()
132146
defer c.mu.Unlock()

0 commit comments

Comments
 (0)