diff --git a/lib/gat/pool/pool.go b/lib/gat/pool/pool.go index f5223b2d72bbe8f1065700846d6650a1621a7c3d..ff18e1f487da53d02fce24564cce803365c5ed45 100644 --- a/lib/gat/pool/pool.go +++ b/lib/gat/pool/pool.go @@ -279,7 +279,21 @@ func (T *Pool) acquireServer(client *Client) *Server { if serverID == uuid.Nil { // TODO(garet) can this be run on same thread and only create a goroutine if scaling is possible? go T.scaleUp() + done := make(chan struct{}) + go func() { + start := time.Now() + for { + time.Sleep(1 * time.Second) + select { + case <-done: + return + default: + } + log.Printf("still waiting after %d in pool %p", start, T) + } + }() serverID = T.options.Pooler.Acquire(client.GetID(), SyncModeBlocking) + close(done) } T.mu.RLock() diff --git a/lib/gat/pool/pools/transaction/apply.go b/lib/gat/pool/pools/transaction/apply.go index 47bfebf9b13700e1caac443bae92ae2556ebd0bd..637585b0cce814b50b61dcb30e32520921e4032c 100644 --- a/lib/gat/pool/pools/transaction/apply.go +++ b/lib/gat/pool/pools/transaction/apply.go @@ -3,7 +3,7 @@ package transaction import "pggat/lib/gat/pool" func Apply(options pool.Options) pool.Options { - options.Pooler = NewPooler() + options.Pooler = new(Pooler) options.ParameterStatusSync = pool.ParameterStatusSyncDynamic options.ExtendedQuerySync = true options.ReleaseAfterTransaction = true diff --git a/lib/gat/pool/pools/transaction/pooler.go b/lib/gat/pool/pools/transaction/pooler.go index 432687ccda09d88767e7a1614600d4fd36265917..c5c0f1aefbfce8c9af3e80978771717c60007c44 100644 --- a/lib/gat/pool/pools/transaction/pooler.go +++ b/lib/gat/pool/pools/transaction/pooler.go @@ -12,12 +12,6 @@ type Pooler struct { s schedulers.Scheduler } -func NewPooler() *Pooler { - p := new(Pooler) - schedulers.Test(&p.s) - return p -} - func (T *Pooler) NewClient() uuid.UUID { return T.s.NewUser() } diff --git a/lib/rob/schedulers/v2/scheduler.go b/lib/rob/schedulers/v2/scheduler.go index c49b3fddfdeb063d2aead2e42df1f0b6b4809280..23421be1992551aae7bbffb0cdf08d4dc57afdba 100644 --- a/lib/rob/schedulers/v2/scheduler.go +++ b/lib/rob/schedulers/v2/scheduler.go @@ -2,15 +2,12 @@ package schedulers import ( "github.com/google/uuid" - "sync" - "time" - "tuxpa.in/a/zlog/log" - "pggat/lib/rob" "pggat/lib/rob/schedulers/v2/job" "pggat/lib/rob/schedulers/v2/sink" "pggat/lib/util/maps" "pggat/lib/util/pools" + "sync" ) type Scheduler struct { @@ -26,22 +23,6 @@ type Scheduler struct { mu sync.RWMutex } -func Test(s *Scheduler) { - go func() { - for { - time.Sleep(1 * time.Second) - func() { - s.mu.RLock() - defer s.mu.RUnlock() - - s.bmu.Lock() - defer s.bmu.Unlock() - log.Printf("%d sinks | %d backlogged jobs", len(s.sinks), len(s.backlog)) - }() - } - }() -} - func (T *Scheduler) NewWorker() uuid.UUID { worker := uuid.New()