Skip to content

Conversation

@cce
Copy link
Contributor

@cce cce commented Dec 12, 2025

Summary

Currently the DHT mode is hardcoded to ModeAutoServer, with no way to configure client-only mode for nodes that want to discover peers without advertising themselves. This exposes the DHT mode configuration to allow choosing dht.ModeOpt as per the docs here:
https://pkg.go.dev/github.com/libp2p/go-libp2p-kad-dht#ModeOpt

// ModeAuto utilizes EvtLocalReachabilityChanged events sent over the event bus to dynamically switch the DHT
// between Client and Server modes based on network conditions
ModeAuto ModeOpt = iota
// ModeClient operates the DHT as a client only, it cannot respond to incoming queries
ModeClient
// ModeServer operates the DHT as a server, it can both send and respond to queries
ModeServer

New config field DHTMode supports values:

  • "" (default): nodes with IsGossipServer true (listening on NetAddress or P2PHybridNetAddress) use server mode; others use auto mode
  • "auto": libp2p auto-detects based on reachability, prefers client mode when uncertain
  • "server": always operate as DHT server, advertise peer ID
  • "client": client-only, query DHT without advertising

Test Plan

  • New test TestMakeDHTWithModes: verifies DHT creation works with all mode values
  • New test TestDHTModeDefaults: verifies nodes with/without NetAddress get correct default modes
  • TestP2PNetworkDHTCapabilities passes

@cce cce changed the title config: add DHTMode value, turn on client-mode DHT by default config: add DHTMode configuration value Dec 12, 2025
@codecov
Copy link

codecov bot commented Dec 12, 2025

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
109656 1 109655 2565
View the top 3 failed test(s) by shortest run time
github.com/algorand/go-algorand/ledger::TestBlockEvaluator
Stack Traces | 0s run time
=== RUN   TestBlockEvaluator
=== PAUSE TestBlockEvaluator
github.com/algorand/go-algorand/ledger::TestBoxAccountData
Stack Traces | 0s run time
=== RUN   TestBoxAccountData
=== PAUSE TestBoxAccountData
github.com/algorand/go-algorand/ledger::TestBoxInners
Stack Traces | 0s run time
=== RUN   TestBoxInners
=== PAUSE TestBoxInners
github.com/algorand/go-algorand/ledger::TestCheckHoldingNewApp
Stack Traces | 0s run time
=== RUN   TestCheckHoldingNewApp
=== PAUSE TestCheckHoldingNewApp
github.com/algorand/go-algorand/ledger::TestClawbackAction
Stack Traces | 0s run time
=== RUN   TestClawbackAction
=== PAUSE TestClawbackAction
github.com/algorand/go-algorand/ledger::TestCreateAndUse
Stack Traces | 0s run time
=== RUN   TestCreateAndUse
=== PAUSE TestCreateAndUse
github.com/algorand/go-algorand/ledger::TestDuplicates
Stack Traces | 0s run time
=== RUN   TestDuplicates
=== PAUSE TestDuplicates
github.com/algorand/go-algorand/ledger::TestIncentiveEligible
Stack Traces | 0s run time
=== RUN   TestIncentiveEligible
=== PAUSE TestIncentiveEligible
github.com/algorand/go-algorand/ledger::TestLedgerReloadTxTailHistoryAccess
Stack Traces | 0s run time
=== RUN   TestLedgerReloadTxTailHistoryAccess
    testingLogger.go:40: time="2025-12-12T14:49:25.038628 +0000" level=info msg="trackerDBInitialize upgrading database schema from version 0 to version 11" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=72
    testingLogger.go:40: time="2025-12-12T14:49:25.038841 +0000" level=info msg="trackerDBInitialize performing upgrade from version 0" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.038975 +0000" level=info msg="upgradeDatabaseSchema0 initializing schema" file=trackerdbV2.go function="github..../store/trackerdb/sqlitedriver.(*trackerDBSchemaInitializer).upgradeDatabaseSchema0" line=189
    testingLogger.go:40: time="2025-12-12T14:49:25.040423 +0000" level=info msg="trackerDBInitialize performing upgrade from version 1" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.040660 +0000" level=info msg="trackerDBInitialize performing upgrade from version 2" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.040886 +0000" level=info msg="trackerDBInitialize performing upgrade from version 3" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.041959 +0000" level=info msg="trackerDBInitialize performing upgrade from version 4" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.042089 +0000" level=info msg="upgradeDatabaseSchema4: deleted 0 rows" file=trackerdbV2.go function="github..../store/trackerdb/sqlitedriver.(*trackerDBSchemaInitializer).upgradeDatabaseSchema4" line=338
    testingLogger.go:40: time="2025-12-12T14:49:25.042430 +0000" level=info msg="trackerDBInitialize performing upgrade from version 5" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.043219 +0000" level=info msg="upgradeDatabaseSchema5 upgraded 1 out of 12 accounts [ 8.3% ]" file=trackerdbV2.go function="github..../store/trackerdb/sqlitedriver.(*trackerDBSchemaInitializer).upgradeDatabaseSchema5.func1" line=365
    testingLogger.go:40: time="2025-12-12T14:49:25.045053 +0000" level=info msg="trackerDBInitialize performing upgrade from version 6" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.045784 +0000" level=info msg="upgradeDatabaseSchema6 upgraded 1 out of 12 accounts [ 8.3% ]" file=trackerdbV2.go function="github..../store/trackerdb/sqlitedriver.(*trackerDBSchemaInitializer).upgradeDatabaseSchema6.func1" line=432
    testingLogger.go:40: time="2025-12-12T14:49:25.046999 +0000" level=info msg="trackerDBInitialize performing upgrade from version 7" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.047682 +0000" level=info msg="trackerDBInitialize performing upgrade from version 8" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.047887 +0000" level=info msg="trackerDBInitialize performing upgrade from version 9" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.048261 +0000" level=info msg="trackerDBInitialize performing upgrade from version 10" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.048784 +0000" level=info msg="trackerDBInitialize database schema upgrade complete" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=149
    testingLogger.go:40: time="2025-12-12T14:49:25.073290 +0000" level=info msg="initializeHashes rebuilding merkle trie for round 0" file=catchpointtracker.go function="github..../algorand/go-algorand/ledger.(*catchpointTracker).initializeHashes" line=1584
    testingLogger.go:40: time="2025-12-12T14:49:25.075565 +0000" level=info msg="initializeHashes rebuilt the merkle trie with 12 entries in 1.759324ms" file=catchpointtracker.go function="github..../algorand/go-algorand/ledger.(*catchpointTracker).initializeHashes" line=1701
    testingLogger.go:40: time="2025-12-12T14:49:25.091527 +0000" level=info msg="trackerDBInitialize upgrading database schema from version 0 to version 6" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=72
    testingLogger.go:40: time="2025-12-12T14:49:25.091632 +0000" level=info msg="trackerDBInitialize performing upgrade from version 0" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.091736 +0000" level=info msg="upgradeDatabaseSchema0 initializing schema" file=trackerdbV2.go function="github..../store/trackerdb/sqlitedriver.(*trackerDBSchemaInitializer).upgradeDatabaseSchema0" line=189
    testingLogger.go:40: time="2025-12-12T14:49:25.092753 +0000" level=info msg="trackerDBInitialize performing upgrade from version 1" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.092988 +0000" level=info msg="trackerDBInitialize performing upgrade from version 2" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.093170 +0000" level=info msg="trackerDBInitialize performing upgrade from version 3" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.093993 +0000" level=info msg="trackerDBInitialize performing upgrade from version 4" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.094101 +0000" level=info msg="upgradeDatabaseSchema4: deleted 0 rows" file=trackerdbV2.go function="github..../store/trackerdb/sqlitedriver.(*trackerDBSchemaInitializer).upgradeDatabaseSchema4" line=338
    testingLogger.go:40: time="2025-12-12T14:49:25.094341 +0000" level=info msg="trackerDBInitialize performing upgrade from version 5" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:25.095099 +0000" level=info msg="upgradeDatabaseSchema5 upgraded 1 out of 12 accounts [ 8.3% ]" file=trackerdbV2.go function="github..../store/trackerdb/sqlitedriver.(*trackerDBSchemaInitializer).upgradeDatabaseSchema5.func1" line=365
    testingLogger.go:40: time="2025-12-12T14:49:25.096523 +0000" level=info msg="trackerDBInitialize database schema upgrade complete" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=149
    testingLogger.go:40: time="2025-12-12T14:49:28.241115 +0000" level=info msg="trackerDBInitialize upgrading database schema from version 6 to version 11" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=72
    testingLogger.go:40: time="2025-12-12T14:49:28.241284 +0000" level=info msg="trackerDBInitialize performing upgrade from version 6" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:28.242181 +0000" level=info msg="upgradeDatabaseSchema6 upgraded 1 out of 12 accounts [ 8.3% ]" file=trackerdbV2.go function="github..../store/trackerdb/sqlitedriver.(*trackerDBSchemaInitializer).upgradeDatabaseSchema6.func1" line=432
    testingLogger.go:40: time="2025-12-12T14:49:28.393870 +0000" level=info msg="trackerDBInitialize performing upgrade from version 7" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:28.394363 +0000" level=info msg="trackerDBInitialize performing upgrade from version 8" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:28.394650 +0000" level=info msg="trackerDBInitialize performing upgrade from version 9" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:28.395041 +0000" level=info msg="trackerDBInitialize performing upgrade from version 10" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=76
    testingLogger.go:40: time="2025-12-12T14:49:28.395491 +0000" level=info msg="trackerDBInitialize database schema upgrade complete" file=trackerdbV2.go function=github..../store/trackerdb/sqlitedriver.RunMigrations line=149
    ledger_test.go:2460: 
        	Error Trace:	.../go-algorand/ledger/ledger_test.go:2460
        	Error:      	Not equal: 
        	            	expected: 0x7d1
        	            	actual  : 0x7cf
        	Test:       	TestLedgerReloadTxTailHistoryAccess
coverage: 63.0% of statements
github.com/algorand/go-algorand/ledger::TestNewAppBoxCreate
Stack Traces | 0s run time
=== RUN   TestNewAppBoxCreate
=== PAUSE TestNewAppBoxCreate
github.com/algorand/go-algorand/ledger::TestNote
Stack Traces | 0s run time
=== RUN   TestNote
=== PAUSE TestNote
github.com/algorand/go-algorand/ledger::TestOnlineAccountsExceedOfflineRows
Stack Traces | 0s run time
=== RUN   TestOnlineAccountsExceedOfflineRows
=== PAUSE TestOnlineAccountsExceedOfflineRows
github.com/algorand/go-algorand/ledger::TestPayAction
Stack Traces | 0s run time
=== RUN   TestPayAction
=== PAUSE TestPayAction
github.com/algorand/go-algorand/ledger::TestRekeyAction
Stack Traces | 0s run time
=== RUN   TestRekeyAction
=== PAUSE TestRekeyAction
github.com/algorand/go-algorand/ledger::TestSelfCheckHoldingNewApp
Stack Traces | 0s run time
=== RUN   TestSelfCheckHoldingNewApp
=== PAUSE TestSelfCheckHoldingNewApp
View the full list of 1 ❄️ flaky test(s)
::TestMain

Flake rate in main: 100.00% (Passed 0 times, Failed 23 times)

Stack Traces | 0s run time
panic: test timed out after 1h0m0s
	running tests:
		TestLedgerReloadTxTailHistoryAccess (58m45s)

goroutine 494688 [running]:
testing.(*M).startAlarm.func1()
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:2682 +0x605
created by time.goFunc
	.../hostedtoolcache/go/1.25.3.../src/time/sleep.go:215 +0x45

goroutine 1 [chan receive, 58 minutes]:
testing.(*T).Run(0xc00068a540, {0x202ab1b, 0x23}, 0x22e7858)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:2005 +0x9fe
testing.runTests.func1(0xc00068a540)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:2477 +0x86
testing.tRunner(0xc00068a540, 0xc0007adae0)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
testing.runTests(0xc0000123a8, {0x3056c00, 0x127, 0x127}, {0x0?, 0x4?, 0x30d4160?})
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:2475 +0x96d
testing.(*M).Run(0xc00083eaa0)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:2337 +0xed5
main.main()
	_testmain.go:777 +0x165

goroutine 7 [select]:
go.opencensus.io/stats/view.(*worker).start(0xc000041100)
	.../pkg/mod/[email protected]..../stats/view/worker.go:292 +0x197
created by go.opencensus.io/stats/view.init.0 in goroutine 1
	.../pkg/mod/[email protected]..../stats/view/worker.go:34 +0xfa

goroutine 399153 [chan receive, 58 minutes]:
testing.(*T).Parallel(0xc0029e0000)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestBlockEvaluator(0xc0029e0000)
	.../go-algorand/ledger/eval_simple_test.go:50 +0x5b
testing.tRunner(0xc0029e0000, 0x22e7410)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 8284 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc0008d6380)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestOnlineAccountsExceedOfflineRows(0xc0008d6380)
	.../go-algorand/ledger/acctdeltas_test.go:3449 +0x5b
testing.tRunner(0xc0008d6380, 0x22e7970)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 399155 [chan receive, 58 minutes]:
testing.(*T).Parallel(0xc0029e0540)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestIncentiveEligible(0xc0029e0540)
	.../go-algorand/ledger/eval_simple_test.go:351 +0x53
testing.tRunner(0xc0029e0540, 0x22e7698)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 423396 [sync.WaitGroup.Wait, 58 minutes]:
sync.runtime_SemacquireWaitGroup(0xc00048eaf8?, 0x0?)
	.../hostedtoolcache/go/1.25.3.../src/runtime/sema.go:114 +0x2e
sync.(*WaitGroup).Wait(0xc00048eaf8)
	.../hostedtoolcache/go/1.25.3.../src/sync/waitgroup.go:206 +0xd3
github..../algorand/go-algorand/ledger.(*trackerRegistry).waitAccountsWriting(...)
	.../go-algorand/ledger/tracker.go:490
github..../algorand/go-algorand/ledger.(*trackerRegistry).close(0xc00048eaa0)
	.../go-algorand/ledger/tracker.go:516 +0x211
github..../algorand/go-algorand/ledger.(*Ledger).Close(0xc00048e008)
	.../go-algorand/ledger/ledger.go:426 +0x16e
github..../algorand/go-algorand/ledger.TestLedgerReloadTxTailHistoryAccess.func1()
	.../go-algorand/ledger/ledger_test.go:2327 +0x2f
runtime.Goexit()
	.../hostedtoolcache/go/1.25.3.../src/runtime/panic.go:615 +0x5e
testing.(*common).FailNow(0xc0008d6540)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1013 +0x7b
github..../stretchr/testify/require.Equal({0x26e0790, 0xc0008d6540}, {0x1f08fe0, 0xc002169778}, {0x1f08fe0, 0xc002169788}, {0x0, 0x0, 0x0})
	.../pkg/mod/github.com/stretchr/[email protected]/require/require.go:162 +0x107
github..../algorand/go-algorand/ledger.TestLedgerReloadTxTailHistoryAccess(0xc0008d6540)
	.../go-algorand/ledger/ledger_test.go:2460 +0x1617
testing.tRunner(0xc0008d6540, 0x22e7858)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 494687 [sync.RWMutex.Lock, 58 minutes]:
sync.runtime_SemacquireRWMutex(0xc00048eb64?, 0x1?, 0x943a94?)
	.../hostedtoolcache/go/1.25.3.../src/runtime/sema.go:105 +0x25
sync.(*RWMutex).Lock(0xc00048eb50)
	.../hostedtoolcache/go/1.25.3.../src/sync/rwmutex.go:155 +0x89
github.com/algorand/go-deadlock.lockEnabled.func1()
	.../pkg/mod/github.com/algorand/[email protected]/deadlock.go:218 +0x34
created by github.com/algorand/go-deadlock.lockEnabled in goroutine 494108
	.../pkg/mod/github.com/algorand/[email protected]/deadlock.go:217 +0x1bd

goroutine 9701 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc000e5ba40)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestClawbackAction(0xc000e5ba40)
	.../go-algorand/ledger/apptxn_test.go:362 +0x53
testing.tRunner(0xc000e5ba40, 0x22e7588)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 423337 [select, 58 minutes]:
database/sql.(*DB).connectionOpener(0xc0006764e0, {0x26e7110, 0xc003970050})
	.../hostedtoolcache/go/1.25.3.../database/sql/sql.go:1261 +0xeb
created by database/sql.OpenDB in goroutine 423333
	.../hostedtoolcache/go/1.25.3.../database/sql/sql.go:841 +0x287

goroutine 9637 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc000a5ac40)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestCreateAndUse(0xc000a5ac40)
	.../go-algorand/ledger/apptxn_test.go:1377 +0x53
testing.tRunner(0xc000a5ac40, 0x22e75c0)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 423399 [select, 58 minutes]:
database/sql.(*DB).connectionOpener(0xc0007605b0, {0x26e7110, 0xc00020a050})
	.../hostedtoolcache/go/1.25.3.../database/sql/sql.go:1261 +0xeb
created by database/sql.OpenDB in goroutine 423334
	.../hostedtoolcache/go/1.25.3.../database/sql/sql.go:841 +0x287

goroutine 494108 [select, 2 minutes]:
github.com/algorand/go-deadlock.lockEnabled(0xc01e1081f0, {0x26dc980, 0xc00048eb48}, 0x0)
	.../pkg/mod/github.com/algorand/[email protected]/deadlock.go:224 +0x350
github.com/algorand/go-deadlock.(*RWMutex).Lock(0xc00048eb48)
	.../pkg/mod/github.com/algorand/[email protected]/deadlock.go:136 +0x13f
github..../algorand/go-algorand/ledger.(*trackerRegistry).commitRound(0xc00048eaa0, 0xc002882e08)
	.../go-algorand/ledger/tracker.go:672 +0xd58
github..../algorand/go-algorand/ledger.(*trackerRegistry).commitSyncer(0xc00048eaa0, 0xc00605e7e0)
	.../go-algorand/ledger/tracker.go:541 +0x24e
created by github..../algorand/go-algorand/ledger.(*trackerRegistry).initialize in goroutine 423396
	.../go-algorand/ledger/tracker.go:335 +0x77d

goroutine 9699 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc000e5b6c0)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestPayAction(0xc000e5b6c0)
	.../go-algorand/ledger/apptxn_test.go:43 +0x53
testing.tRunner(0xc000e5b6c0, 0x22e79c8)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 9711 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc00068a8c0)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestNote(0xc00068a8c0)
	.../go-algorand/ledger/apptxn_test.go:1083 +0x53
testing.tRunner(0xc00068a8c0, 0x22e7940)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 423335 [select, 58 minutes]:
database/sql.(*DB).connectionOpener(0xc0007601a0, {0x26e7110, 0xc00020a000})
	.../hostedtoolcache/go/1.25.3.../database/sql/sql.go:1261 +0xeb
created by database/sql.OpenDB in goroutine 423334
	.../hostedtoolcache/go/1.25.3.../database/sql/sql.go:841 +0x287

goroutine 9737 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc00097d500)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestDuplicates(0xc00097d500)
	.../go-algorand/ledger/apptxn_test.go:3501 +0x53
testing.tRunner(0xc00097d500, 0x22e75e0)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 9755 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc0029e0380)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestBoxAccountData(0xc0029e0380)
	.../go-algorand/ledger/boxtxn_test.go:439 +0x53
testing.tRunner(0xc0029e0380, 0x22e7420)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 9644 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc000a78fc0)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestSelfCheckHoldingNewApp(0xc000a78fc0)
	.../go-algorand/ledger/apptxn_test.go:1822 +0x53
testing.tRunner(0xc000a78fc0, 0x22e7a38)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 9702 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc000e5bc00)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestRekeyAction(0xc000e5bc00)
	.../go-algorand/ledger/apptxn_test.go:431 +0x53
testing.tRunner(0xc000e5bc00, 0x22e7a08)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 9757 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc0029e0700)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestBoxInners(0xc0029e0700)
	.../go-algorand/ledger/boxtxn_test.go:623 +0x53
testing.tRunner(0xc0029e0700, 0x22e7440)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 423336 [select, 58 minutes]:
database/sql.(*DB).connectionOpener(0xc000676000, {0x26e7110, 0xc003970000})
	.../hostedtoolcache/go/1.25.3.../database/sql/sql.go:1261 +0xeb
created by database/sql.OpenDB in goroutine 423333
	.../hostedtoolcache/go/1.25.3.../database/sql/sql.go:841 +0x287

goroutine 9645 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc000a79180)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestCheckHoldingNewApp(0xc000a79180)
	.../go-algorand/ledger/apptxn_test.go:1872 +0x53
testing.tRunner(0xc000a79180, 0x22e7580)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 9758 [chan receive, 59 minutes]:
testing.(*T).Parallel(0xc0029e08c0)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1708 +0x50c
github..../algorand/go-algorand/ledger.TestNewAppBoxCreate(0xc0029e08c0)
	.../go-algorand/ledger/boxtxn_test.go:742 +0x45
testing.tRunner(0xc0029e08c0, 0x22e7938)
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1934 +0x21d
created by testing.(*T).Run in goroutine 1
	.../hostedtoolcache/go/1.25.3.../src/testing/testing.go:1997 +0x9d3

goroutine 493854 [sync.Cond.Wait, 58 minutes]:
sync.runtime_notifyListWait(0xc006058010, 0x12)
	.../hostedtoolcache/go/1.25.3.../src/runtime/sema.go:606 +0x159
sync.(*Cond).Wait(0xc006058000)
	.../hostedtoolcache/go/1.25.3.../src/sync/cond.go:71 +0x6c
github..../algorand/go-algorand/ledger.(*blockNotifier).worker(0xc00048e978)
	.../go-algorand/ledger/notifier.go:52 +0x27d
created by github..../algorand/go-algorand/ledger.(*blockNotifier).loadFromDisk in goroutine 423396
	.../go-algorand/ledger/notifier.go:92 +0x18b
FAIL	github..../algorand/go-algorand/ledger	3600.286s

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@cce cce requested a review from algorandskiy December 12, 2025 14:39
@urtho
Copy link
Contributor

urtho commented Dec 12, 2025

There is a hybridClient algod profile that is described as "Participate in consensus or simply ensure chain health by validating blocks and supporting P2P traffic propagation.",

It enables EnableP2PHybridMode and EnableDHTProviders.

EnableDHTProviders turns on Capabilities Discovery but also starts periodic advertisment of gossip service that because EnableGossipService happens to be true by defult.

	if n.capabilitiesDiscovery != nil {
		n.capabilitiesDiscovery.AdvertiseCapabilities(n.nodeInfo.Capabilities()...)
	}

Maybe advertisement should not be invoked when isGossipServer() is false ?

But maybe someone wants to be an archival without a gossip service. We should advertise then.
So maybe EnableGossipService should be off for clients ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants