Skip to content

CollectEndorsementsView might not release all resources #1228

@ale-linux

Description

@ale-linux

The CollectEndorsementsView view contains the following code

func (c *CollectEndorsementsView) Call(context view.Context) (interface{}, error) {
	metrics := GetMetrics(context)

	externalWallets := make(map[string]ExternalWalletSigner)
	// 1. First collect signatures on the token request
	issueSigmas, err := c.requestSignaturesOnIssues(context, externalWallets)
	if err != nil {
		return nil, errors.WithMessagef(err, "failed requesting signatures on issues")
	}

	transferSigmas, err := c.requestSignaturesOnTransfers(context, externalWallets)
	if err != nil {
		return nil, errors.WithMessagef(err, "failed requesting signatures on transfers")
	}

	// signal the external wallets that the process is completed
	logger.DebugfContext(context.Context(), "Inform external wallets that endorsement is complete")
	for id, signer := range externalWallets {
		if err := signer.Done(); err != nil {
			logger.ErrorfContext(context.Context(), "failed to signal done external wallet [%s]", id)
			logger.Errorf("failed to signal done external wallet [%s]", id)
		}
	}

It is possible that Done is not called on all external wallets in case some error occurs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions