Skip to content

Commit cf32eeb

Browse files
committed
debugs & mutex
1 parent fa95a52 commit cf32eeb

File tree

2 files changed

+5
-7
lines changed

2 files changed

+5
-7
lines changed

MemLimit.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ func (m *MemLimiter) MemReturn(who string, item *segmentChanItem) {
128128
item.mux.RLock()
129129
if item.memlocked == 0 {
130130
dlog(always, "MemReturn called on non-memlocked item seg.Id='%s' who='%s'", item.segment.Id, who)
131+
item.mux.RUnlock()
131132
return // not memlocked, nothing to do
132133
}
133134
item.mux.RUnlock()

Workers.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -186,15 +186,15 @@ func (s *SESSION) GoWorker(wid int, provider *Provider, waitWorker *sync.WaitGro
186186
segCC := s.segmentChansCheck[provider.Group]
187187
go func(wid int, provider *Provider, waitWorker *sync.WaitGroup, sharedCC chan *ConnItem, segCC chan *segmentChanItem) {
188188
defer waitWorker.Done()
189-
defer dlog(always, "CheckRoutine: wid=%d provider='%s' exiting", wid, provider.Name)
189+
defer dlog(always, "CheckRoutine exiting wid=%d provider='%s'", wid, provider.Name)
190190
forGoCheckRoutine:
191191
for {
192192
item, ok := <-segCC
193193
if !ok {
194194
return // channel is closed, exit the routine
195195
}
196196
if item == nil {
197-
dlog(cfg.opt.DebugWorker, "CheckRoutine received a nil pointer to quit")
197+
dlog(always, "CheckRoutine received a nil pointer to quit")
198198
segCC <- nil // refill the nil so others will die too
199199
break forGoCheckRoutine
200200
}
@@ -218,7 +218,7 @@ func (s *SESSION) GoWorker(wid int, provider *Provider, waitWorker *sync.WaitGro
218218
segCD := s.segmentChansDowns[provider.Group]
219219
go func(wid int, provider *Provider, waitWorker *sync.WaitGroup, sharedCC chan *ConnItem, segCD chan *segmentChanItem) {
220220
defer waitWorker.Done()
221-
defer dlog(always, "GoDownsRoutine: wid=%d provider='%s' exiting", wid, provider.Name)
221+
defer dlog(always, "GoDownsRoutine exiting wid=%d provider='%s'", wid, provider.Name)
222222
forGoDownsRoutine:
223223
for {
224224
dlog(cfg.opt.DebugWorker, "GoDownsRoutine: wid=%d provider='%s' wait on segCD len=%d", wid, provider.Name, len(segCD))
@@ -270,14 +270,13 @@ func (s *SESSION) GoWorker(wid int, provider *Provider, waitWorker *sync.WaitGro
270270

271271
// back to top
272272
} // end forGoDownsRoutine
273-
dlog(always, "GoDownsRoutine: wid=%d provider='%s' exiting", wid, provider.Name)
274273
}(wid, provider, waitWorker, sharedCC, segCD) // end go func()
275274

276275
/* new worker code ReupsRoutine */
277276
segCR := s.segmentChansReups[provider.Group]
278277
go func(wid int, provider *Provider, waitWorker *sync.WaitGroup, sharedCC chan *ConnItem, segCR chan *segmentChanItem) {
279278
defer waitWorker.Done()
280-
defer dlog(always, "ReupsRoutine: wid=%d provider='%s' exiting", wid, provider.Name)
279+
defer dlog(always, "ReupsRoutine exiting: wid=%d provider='%s'", wid, provider.Name)
281280
forGoReupsRoutine:
282281
for {
283282
item, ok := <-segCR
@@ -302,7 +301,6 @@ func (s *SESSION) GoWorker(wid int, provider *Provider, waitWorker *sync.WaitGro
302301
dlog(cfg.opt.DebugWorker && cfg.opt.BUG, "WorkerReup: unlocked (wid=%d) (waited=%d µs), process seg.Id='%s' @ '%s'", wid, time.Since(start).Microseconds(), item.segment.Id, provider.Name)
303302
}
304303
*/
305-
// TODO handle memlim freemem here
306304
StartReUps := time.Now()
307305
code, err := s.GoReupsRoutine(wid, provider, item, sharedCC)
308306
item.PrintItemFlags(cfg.opt.DebugFlags, true, fmt.Sprintf("post-GoReupsRoutine: code=%d", code))
@@ -320,7 +318,6 @@ func (s *SESSION) GoWorker(wid int, provider *Provider, waitWorker *sync.WaitGro
320318
memlim.MemReturn("UR", item) // memfree GoReupsRoutine on success
321319
// back to top
322320
} // end forGoReupsRoutine
323-
dlog(always, "ReupsRoutine: wid=%d provider='%s' exiting", wid, provider.Name)
324321
}(wid, provider, waitWorker, sharedCC, segCR) // end go func()
325322

326323
dlog(cfg.opt.DebugWorker, "GoWorker (%d) waitWorker.Wait for routines to complete '%s'", wid, provider.Name)

0 commit comments

Comments
 (0)