@@ -16,9 +16,7 @@ import (
1616// - Need some level of memory account management with the ability to find a free index
1717// - Does not require a vault key record
1818
19- // todo: Split out Solana mainnet nonce allocation based on use case
20-
21- func (p * service ) generateNonceAccountsOnSolanaMainnet (serviceCtx context.Context ) error {
19+ func (p * service ) generateNonceAccountsOnSolanaMainnet (serviceCtx context.Context , purpose nonce.Purpose , desiredPoolSize uint64 ) error {
2220
2321 hasWarnedUser := false
2422 err := retry .Loop (
@@ -30,7 +28,7 @@ func (p *service) generateNonceAccountsOnSolanaMainnet(serviceCtx context.Contex
3028 defer m .End ()
3129 tracedCtx := newrelic .NewContext (serviceCtx , m )
3230
33- num_invalid , err := p .data .GetNonceCountByState (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateInvalid )
31+ num_invalid , err := p .data .GetNonceCountByStateAndPurpose (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateInvalid , purpose )
3432 if err != nil {
3533 return err
3634 }
@@ -40,30 +38,30 @@ func (p *service) generateNonceAccountsOnSolanaMainnet(serviceCtx context.Contex
4038 return ErrInvalidNonceLimitExceeded
4139 }
4240
43- num_available , err := p .data .GetNonceCountByState (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateAvailable )
41+ num_available , err := p .data .GetNonceCountByStateAndPurpose (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateAvailable , purpose )
4442 if err != nil {
4543 return err
4644 }
4745
48- num_claimed , err := p .data .GetNonceCountByState (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateClaimed )
46+ num_claimed , err := p .data .GetNonceCountByStateAndPurpose (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateClaimed , purpose )
4947 if err != nil {
5048 return err
5149 }
5250
53- num_released , err := p .data .GetNonceCountByState (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateReleased )
51+ num_released , err := p .data .GetNonceCountByStateAndPurpose (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateReleased , purpose )
5452 if err != nil {
5553 return err
5654 }
5755
58- num_unknown , err := p .data .GetNonceCountByState (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateUnknown )
56+ num_unknown , err := p .data .GetNonceCountByStateAndPurpose (tracedCtx , nonce .EnvironmentSolana , nonce .EnvironmentInstanceSolanaMainnet , nonce .StateUnknown , purpose )
5957 if err != nil {
6058 return err
6159 }
6260
6361 // Get a count of nonces that are available or potentially available
6462 // within a short amount of time.
6563 num_potentially_available := num_available + num_claimed + num_released + num_unknown
66- if num_potentially_available >= p . conf . solanaMainnetNoncePoolSize . Get ( serviceCtx ) {
64+ if num_potentially_available >= desiredPoolSize {
6765 if hasWarnedUser {
6866 p .log .Warn ("The nonce pool size is reached." )
6967 hasWarnedUser = false
0 commit comments