Skip to content

Commit f2fa57a

Browse files
committed
CBG-5360 add context to FatalPanicHandler
1 parent 3df9aee commit f2fa57a

9 files changed

Lines changed: 19 additions & 18 deletions

File tree

base/dcp_sharded.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,7 @@ func (p *cfgNodePoller) poll(ctx context.Context) {
679679
func (p *cfgNodePoller) startPolling(ctx context.Context) {
680680
ticker := time.NewTicker(p.pollInterval)
681681
go func() {
682-
defer FatalPanicHandler()
682+
defer FatalPanicHandler(ctx)
683683
for {
684684
select {
685685
case <-ctx.Done():
@@ -760,7 +760,7 @@ func (l *shardedDCPHeartbeatListener) subscribeNodeChanges(ctx context.Context)
760760
return err
761761
}
762762
go func() {
763-
defer FatalPanicHandler()
763+
defer FatalPanicHandler(ctx)
764764
for {
765765
select {
766766
case <-cfgEvents:

base/heartbeat.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ func (h *couchbaseHeartBeater) StartSendingHeartbeats(ctx context.Context) error
149149

150150
ticker := time.NewTicker(h.heartbeatSendInterval)
151151
go func() {
152-
defer FatalPanicHandler()
152+
defer FatalPanicHandler(ctx)
153153
defer func() {
154154
h.sendActive.Set(false)
155155
}()
@@ -178,7 +178,7 @@ func (h *couchbaseHeartBeater) StartCheckingHeartbeats(ctx context.Context) erro
178178

179179
ticker := time.NewTicker(h.heartbeatPollInterval)
180180
go func() {
181-
defer FatalPanicHandler()
181+
defer FatalPanicHandler(ctx)
182182
defer func() { h.checkActive.Set(false) }()
183183
for {
184184
select {

base/util.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1466,10 +1466,10 @@ type JSONEncoderI interface {
14661466
SetEscapeHTML(on bool)
14671467
}
14681468

1469-
func FatalPanicHandler() {
1469+
func FatalPanicHandler(ctx context.Context) {
14701470
// Log any panics using the built-in loggers so that the stacktraces end up in SG log files before exiting.
14711471
if r := recover(); r != nil {
1472-
FatalfCtx(context.TODO(), "Unexpected panic: %v - stopping process\n%v", r, string(debug.Stack()))
1472+
FatalfCtx(ctx, "Unexpected panic: %v - stopping process\n%v", r, string(debug.Stack()))
14731473
}
14741474
}
14751475

db/changes.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func (db *DatabaseCollectionWithUser) buildRevokedFeed(ctx context.Context, ch c
254254
}
255255

256256
go func() {
257-
defer base.FatalPanicHandler()
257+
defer base.FatalPanicHandler(ctx)
258258
defer close(feed)
259259
var itemsSent int
260260
var lastSeq uint64
@@ -456,7 +456,7 @@ func (db *DatabaseCollectionWithUser) changesFeed(ctx context.Context, singleCha
456456
paginationOptions.Since.LowSeq = 0
457457

458458
go func() {
459-
defer base.FatalPanicHandler()
459+
defer base.FatalPanicHandler(ctx)
460460
defer close(feed)
461461
var itemsSent int
462462
var lastSeq uint64

db/pindex.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ func getCbgtDest(ctx context.Context, indexParams string, restart func()) (cbgt.
7979
// getNewPIndexImplType finds the correct cbgt.Dest based on the indexParams provided. Looks up the dest based on a key in params set by Sync Gateway.
8080
func getNewPIndexImplType(ctx context.Context) func(indexType, indexParams, path string, restart func()) (cbgt.PIndexImpl, cbgt.Dest, error) {
8181
newPIndexImpl := func(indexType, indexParams, path string, restart func()) (cbgt.PIndexImpl, cbgt.Dest, error) {
82-
defer base.FatalPanicHandler()
82+
defer base.FatalPanicHandler(ctx)
8383

8484
dest, err := getCbgtDest(ctx, indexParams, restart)
8585
if err != nil {

db/sequence_allocator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func newSequenceAllocator(ctx context.Context, datastore base.DataStore, dbStats
8484
return nil, err
8585
}
8686
go func() {
87-
defer base.FatalPanicHandler()
87+
defer base.FatalPanicHandler(ctx)
8888
s.releaseSequenceMonitor(ctx)
8989
}()
9090
return s, err

db/sg_replicate_cfg.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -889,7 +889,7 @@ func (m *sgReplicateManager) SubscribeCfgChanges(ctx context.Context) error {
889889
}
890890
m.closeWg.Add(1)
891891
go func() {
892-
defer base.FatalPanicHandler()
892+
defer base.FatalPanicHandler(ctx)
893893
defer m.closeWg.Done()
894894
for {
895895
select {
@@ -899,7 +899,7 @@ func (m *sgReplicateManager) SubscribeCfgChanges(ctx context.Context) error {
899899
}
900900
err := m.RefreshReplicationCfg(ctx)
901901
if err != nil {
902-
base.WarnfCtx(m.loggingCtx, "Error while updating replications based on latest cfg: %v", err)
902+
base.WarnfCtx(ctx, "Error while updating replications based on latest cfg: %v", err)
903903
}
904904
case <-m.clusterSubscribeTerminator:
905905
return
@@ -1643,24 +1643,25 @@ func (l *ReplicationHeartbeatListener) subscribeNodeSetChanges() error {
16431643

16441644
cfgEvents := make(chan cbgt.CfgEvent)
16451645

1646+
ctx := l.mgr.loggingCtx
16461647
err := l.mgr.cfg.Subscribe(cfgKeySGRCluster, cfgEvents)
16471648
if err != nil {
1648-
base.DebugfCtx(l.mgr.loggingCtx, base.KeyCluster, "Error subscribing to %s key changes: %v", cfgKeySGRCluster, err)
1649+
base.DebugfCtx(ctx, base.KeyCluster, "Error subscribing to %s key changes: %v", cfgKeySGRCluster, err)
16491650
return err
16501651
}
16511652
go func() {
1652-
defer base.FatalPanicHandler()
1653+
defer base.FatalPanicHandler(ctx)
16531654
for {
16541655
select {
16551656
case <-cfgEvents:
16561657
localNodeRegistered, err := l.reloadNodes()
16571658
if err != nil {
1658-
base.WarnfCtx(l.mgr.loggingCtx, "Error while reloading heartbeat node definitions: %v", err)
1659+
base.WarnfCtx(ctx, "Error while reloading heartbeat node definitions: %v", err)
16591660
}
16601661
if !localNodeRegistered {
16611662
registerErr := l.mgr.RegisterNode(l.mgr.localNodeUUID)
16621663
if registerErr != nil {
1663-
base.WarnfCtx(l.mgr.loggingCtx, "Error attempting to re-register node, node will not participate in sg-replicate until restarted or replication cfg is next updated: %v", registerErr)
1664+
base.WarnfCtx(ctx, "Error attempting to re-register node, node will not participate in sg-replicate until restarted or replication cfg is next updated: %v", registerErr)
16641665
}
16651666
}
16661667
case <-l.terminator:

db/utils.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func NewBackgroundTask(ctx context.Context, taskName string, task BackgroundTask
3636
base.InfofCtx(ctx, base.KeyAll, "Created background task: %q with interval %v", taskName, interval)
3737
go func() {
3838
defer close(bgt.doneChan)
39-
defer base.FatalPanicHandler()
39+
defer base.FatalPanicHandler(ctx)
4040
ticker := time.NewTicker(interval)
4141
defer ticker.Stop()
4242
for {

rest/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func ServerMain() {
4040
// TODO: Pass ctx down into HTTP servers so that serverMain can be stopped.
4141
func serverMain(ctx context.Context, osArgs []string) error {
4242
sigChan := RegisterSignalHandler(ctx, "")
43-
defer base.FatalPanicHandler()
43+
defer base.FatalPanicHandler(ctx)
4444

4545
base.InitializeMemoryLoggers()
4646
base.LogSyncGatewayVersion(ctx)

0 commit comments

Comments
 (0)