Przeglądaj źródła

bridge/pkg/ethereum: remove channel unsubscribes

Unsubscribe() does blocking I/O that ignores the runnable context
and can block forever: #107

It would appear that removing the Unsubscribe calls is the only
way to work around this go-ethereum bug.

ghstack-source-id: 93f287efc09be7eb12921a431effb282aea78510
Pull Request resolved: https://github.com/certusone/wormhole/pull/109
Leo 5 lat temu
rodzic
commit
a3c745ace7
1 zmienionych plików z 0 dodań i 3 usunięć
  1. 0 3
      bridge/pkg/ethereum/watcher.go

+ 0 - 3
bridge/pkg/ethereum/watcher.go

@@ -70,7 +70,6 @@ func (e *EthBridgeWatcher) Run(ctx context.Context) error {
 	if err != nil {
 	if err != nil {
 		return fmt.Errorf("failed to subscribe to token lockup events: %w", err)
 		return fmt.Errorf("failed to subscribe to token lockup events: %w", err)
 	}
 	}
-	defer tokensLockedSub.Unsubscribe()
 
 
 	// Subscribe to guardian set changes
 	// Subscribe to guardian set changes
 	guardianSetC := make(chan *abi.AbiLogGuardianSetChanged, 2)
 	guardianSetC := make(chan *abi.AbiLogGuardianSetChanged, 2)
@@ -78,7 +77,6 @@ func (e *EthBridgeWatcher) Run(ctx context.Context) error {
 	if err != nil {
 	if err != nil {
 		return fmt.Errorf("failed to subscribe to guardian set events: %w", err)
 		return fmt.Errorf("failed to subscribe to guardian set events: %w", err)
 	}
 	}
-	defer tokensLockedSub.Unsubscribe()
 
 
 	errC := make(chan error)
 	errC := make(chan error)
 	logger := supervisor.Logger(ctx)
 	logger := supervisor.Logger(ctx)
@@ -167,7 +165,6 @@ func (e *EthBridgeWatcher) Run(ctx context.Context) error {
 	if err != nil {
 	if err != nil {
 		return fmt.Errorf("failed to subscribe to header events: %w", err)
 		return fmt.Errorf("failed to subscribe to header events: %w", err)
 	}
 	}
-	defer headerSubscription.Unsubscribe()
 
 
 	go func() {
 	go func() {
 		for {
 		for {