diff --git a/rpc-pool.go b/rpc-pool.go index 6a509b1..a7c1b24 100644 --- a/rpc-pool.go +++ b/rpc-pool.go @@ -126,6 +126,12 @@ func (p *RemoteGrainPool) findOrCreateGrain(id CartId) *RemoteGrain { return grain } +func (p *RemoteGrainPool) Delete(id CartId) { + p.mu.Lock() + delete(p.grains, id) + p.mu.Unlock() +} + func (p *RemoteGrainPool) Process(id CartId, messages ...Message) ([]byte, error) { var result []byte var err error diff --git a/synced-pool.go b/synced-pool.go index faeea64..7e46500 100644 --- a/synced-pool.go +++ b/synced-pool.go @@ -228,6 +228,7 @@ func (p *SyncedPool) RemoveHostMappedCarts(host *RemoteHost) { defer p.mu.Unlock() for id, r := range p.remoteIndex { if r == host.Pool { + p.remoteIndex[id].Delete(id) delete(p.remoteIndex, id) } } @@ -376,6 +377,7 @@ func (p *SyncedPool) getGrainPool(id CartId) (GrainPool, error) { p.mu.RUnlock() if ok { if remotePool == nil { + p.remoteIndex[id].Delete(id) p.mu.Lock() delete(p.remoteIndex, id) p.mu.Unlock()