Skip to content

Commit 17b1436

Browse files
committed
debugs
1 parent 4596aa1 commit 17b1436

File tree

1 file changed

+52
-10
lines changed

1 file changed

+52
-10
lines changed

Workers.go

Lines changed: 52 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,9 @@ func (s *SESSION) GoWorker(wid int, provider *Provider, waitWorker *sync.WaitGro
218218
dlog(always, "CheckRoutine: wid=%d provider='%s' timeout reached, exiting. lastGood: %v", wid, provider.Name, time.Since(lastGood))
219219
return
220220
}
221-
dlog(always, "CheckRoutine: wid=%d provider='%s' still alive, waiting on segCC len=%d timeout in: %v (lastGood: %v)", wid, provider.Name, len(segCC), time.Until(timeOut), time.Since(lastGood))
221+
if time.Since(lastGood) > 9*time.Second {
222+
dlog(always, "CheckRoutine: wid=%d provider='%s' waiting on segCC len=%d timeout in: %v (lastGood: %v)", wid, provider.Name, len(segCC), time.Until(timeOut), time.Since(lastGood))
223+
}
222224
case item, ok := <-segCC:
223225
if !ok {
224226
dlog(always, "CheckRoutine: channel closed wid=%d provider='%s'", wid, provider.Name)
@@ -282,7 +284,9 @@ func (s *SESSION) GoWorker(wid int, provider *Provider, waitWorker *sync.WaitGro
282284
dlog(always, "GoDownsRoutine: wid=%d provider='%s' timeout reached, exiting. lastGood: %v", wid, provider.Name, time.Since(lastGood))
283285
return
284286
}
285-
dlog(always && segcheckdone, "GoDownsRoutine: wid=%d provider='%s' still alive, waiting on segCD len=%d timeout in: %v (lastGood: %v)", wid, provider.Name, len(segCD), time.Until(timeOut), time.Since(lastGood))
287+
if time.Since(lastGood) > 9*time.Second {
288+
dlog(always && segcheckdone, "GoDownsRoutine: wid=%d provider='%s' waiting on segCD len=%d timeout in: %v (lastGood: %v)", wid, provider.Name, len(segCD), time.Until(timeOut), time.Since(lastGood))
289+
}
286290
case item, ok := <-segCD:
287291
if !ok {
288292
dlog(always, "GoDownsRoutine: channel closed wid=%d provider='%s'", wid, provider.Name)
@@ -372,7 +376,9 @@ func (s *SESSION) GoWorker(wid int, provider *Provider, waitWorker *sync.WaitGro
372376
dlog(always, "ReupsRoutine: wid=%d provider='%s' timeout reached, exiting. lastGood: %v", wid, provider.Name, time.Since(lastGood))
373377
return
374378
}
375-
dlog(always, "ReupsRoutine: wid=%d provider='%s' still alive, waiting on segCR len=%d timeout in: %v (lastgood: %v)", wid, provider.Name, len(segCR), time.Until(timeOut), time.Since(lastGood))
379+
if time.Since(lastGood) > 9*time.Second {
380+
dlog(always, "ReupsRoutine: wid=%d provider='%s' waiting on segCR len=%d timeout in: %v (lastgood: %v)", wid, provider.Name, len(segCR), time.Until(timeOut), time.Since(lastGood))
381+
}
376382
case item, ok := <-segCR:
377383
if !ok {
378384
dlog(always, "ReupsRoutine: channel closed wid=%d provider='%s'", wid, provider.Name)
@@ -687,7 +693,7 @@ providerUp:
687693
IncreaseUPQueueCnt() // increment upQueueCnt counter
688694
//GCounter.IncrMax("upQueueCnt", uint64(len(s.segmentList)), "pushUP")
689695
//GCounter.IncrMax("TOTAL_upQueueCnt", uint64(len(s.segmentList)), "pushUP")
690-
dlog(always, " | pushUP: in chan seg.Id='%s' @ #'%s'", item.segment.Id, s.providerList[pid].Group)
696+
dlog(cfg.opt.DebugWorker, " | pushUP: in chan seg.Id='%s' @ #'%s'", item.segment.Id, s.providerList[pid].Group)
691697
return true, 0, 0, nil // return after 1st push to a group!
692698
default:
693699
//dlog(cfg.opt.BUG "DEBUG SPAM pushUP: chan is full @ '%s'", s.providerList[pid].Name)
@@ -735,6 +741,9 @@ func (s *SESSION) GoWorkDivider(waitDivider *sync.WaitGroup, waitDividerDone *sy
735741
fetchedtoDL, fetchedtoUP, backlogDL, refillUP, pushedDL, pushedUP := uint64(0), uint64(0), uint64(0), uint64(0), uint64(0), uint64(0)
736742
startLoop := time.Now()
737743
deadWorkersDeadline := 9
744+
deadcounter := 10
745+
var capture_done, capture_segm, capture_isdl, capture_isup float64
746+
738747
forever:
739748
for {
740749

@@ -776,6 +785,12 @@ forever:
776785
for _, item := range s.segmentList {
777786
item.mux.PrintStatus(false)
778787

788+
if deadcounter <= 0 {
789+
dlog(always, "GoWorkDivider: counters not increasing for too long, exiting")
790+
closeCase = "noProgress"
791+
break forever
792+
}
793+
779794
item.mux.RLock() // RLOCKS HERE #824d
780795
if item.flagCache {
781796
cached++
@@ -873,6 +888,10 @@ forever:
873888

874889
} // end for forsegmentList
875890
//dlog(cfg.opt.DebugWorker, " | [DV] lastRunTook='%d ms' '%v", lastRunTook.Milliseconds(), lastRunTook)
891+
s.mux.RLock()
892+
checkFeedDone := s.checkFeedDone // read value of s.checkDone
893+
segcheckdone := s.segcheckdone // read value of s.segcheckdone
894+
s.mux.RUnlock()
876895

877896
// part to print stats begins here
878897
upQ = GCounter.GetValue("upQueueCnt")
@@ -893,9 +912,37 @@ forever:
893912
isup_perc := float64(isup) / float64(todo) * 100
894913
dmca_perc := float64(dmca) / float64(todo) * 100
895914
yenc_perc := float64(isyenc) / float64(todo) * 100
896-
897915
used_slots, max_slots := memlim.Usage()
898916

917+
if segm_perc > capture_segm {
918+
capture_segm = segm_perc
919+
deadcounter = 10 // reset deadcounter
920+
} else if segm_perc < 100 && segm_perc == capture_segm {
921+
deadcounter--
922+
dlog(always, "GoWorkDivider: segm_perc not increasing, deadcounter=%d", deadcounter)
923+
924+
} else if segcheckdone && done_perc > capture_done {
925+
capture_done = done_perc
926+
deadcounter = 10 // reset deadcounter
927+
} else if segcheckdone && done_perc < 100 && done_perc == capture_done {
928+
deadcounter--
929+
dlog(always, "GoWorkDivider: done_perc not increasing, deadcounter=%d", deadcounter)
930+
931+
} else if segcheckdone && isdl_perc > capture_isdl {
932+
capture_isdl = isdl_perc
933+
deadcounter = 10 // reset deadcounter
934+
} else if segcheckdone && isdl_perc < 100 && isdl_perc == capture_isdl {
935+
deadcounter--
936+
dlog(always, "GoWorkDivider: isdl_perc not increasing, deadcounter=%d", deadcounter)
937+
938+
} else if segcheckdone && isup_perc > capture_isup {
939+
capture_isup = isup_perc
940+
deadcounter = 10 // reset deadcounter
941+
} else if segcheckdone && isup_perc < 100 && isup_perc == capture_isup {
942+
deadcounter--
943+
dlog(always, "GoWorkDivider: isup_perc not increasing, deadcounter=%d", deadcounter)
944+
}
945+
899946
//log00 = fmt.Sprintf(" TODO: %d ", todo)
900947

901948
if (cfg.opt.CheckFirst || cfg.opt.CheckOnly) || (checked > 0 && checked != segm && checked != done) {
@@ -987,11 +1034,6 @@ forever:
9871034
}
9881035
} // print some stats ends here
9891036

990-
s.mux.RLock()
991-
checkFeedDone := s.checkFeedDone // read value of s.checkDone
992-
segcheckdone := s.segcheckdone // read value of s.segcheckdone
993-
s.mux.RUnlock()
994-
9951037
if !segcheckdone && checked == todo && checkFeedDone {
9961038
s.mux.Lock()
9971039
s.segmentCheckEndTime = time.Now()

0 commit comments

Comments
 (0)