Integrate BACKBEAT SDK and resolve KACHING license validation
Major integrations and fixes: - Added BACKBEAT SDK integration for P2P operation timing - Implemented beat-aware status tracking for distributed operations - Added Docker secrets support for secure license management - Resolved KACHING license validation via HTTPS/TLS - Updated docker-compose configuration for clean stack deployment - Disabled rollback policies to prevent deployment failures - Added license credential storage (CHORUS-DEV-MULTI-001) Technical improvements: - BACKBEAT P2P operation tracking with phase management - Enhanced configuration system with file-based secrets - Improved error handling for license validation - Clean separation of KACHING and CHORUS deployment stacks 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
84
vendor/github.com/libp2p/go-libp2p-kad-dht/dht_bootstrap.go
generated
vendored
Normal file
84
vendor/github.com/libp2p/go-libp2p-kad-dht/dht_bootstrap.go
generated
vendored
Normal file
@@ -0,0 +1,84 @@
|
||||
package dht
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/libp2p/go-libp2p/core/peer"
|
||||
|
||||
"github.com/multiformats/go-multiaddr"
|
||||
)
|
||||
|
||||
// DefaultBootstrapPeers is a set of public DHT bootstrap peers provided by libp2p.
|
||||
var DefaultBootstrapPeers []multiaddr.Multiaddr
|
||||
|
||||
// Minimum number of peers in the routing table. If we drop below this and we
|
||||
// see a new peer, we trigger a bootstrap round.
|
||||
var minRTRefreshThreshold = 10
|
||||
|
||||
const (
|
||||
periodicBootstrapInterval = 2 * time.Minute
|
||||
maxNBoostrappers = 2
|
||||
)
|
||||
|
||||
func init() {
|
||||
for _, s := range []string{
|
||||
"/dnsaddr/bootstrap.libp2p.io/p2p/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
|
||||
"/dnsaddr/bootstrap.libp2p.io/p2p/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
|
||||
"/dnsaddr/bootstrap.libp2p.io/p2p/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
|
||||
"/dnsaddr/bootstrap.libp2p.io/p2p/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
|
||||
"/ip4/104.131.131.82/tcp/4001/p2p/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ", // mars.i.ipfs.io
|
||||
} {
|
||||
ma, err := multiaddr.NewMultiaddr(s)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
DefaultBootstrapPeers = append(DefaultBootstrapPeers, ma)
|
||||
}
|
||||
}
|
||||
|
||||
// GetDefaultBootstrapPeerAddrInfos returns the peer.AddrInfos for the default
|
||||
// bootstrap peers so we can use these for initializing the DHT by passing these to the
|
||||
// BootstrapPeers(...) option.
|
||||
func GetDefaultBootstrapPeerAddrInfos() []peer.AddrInfo {
|
||||
ds := make([]peer.AddrInfo, 0, len(DefaultBootstrapPeers))
|
||||
|
||||
for i := range DefaultBootstrapPeers {
|
||||
info, err := peer.AddrInfoFromP2pAddr(DefaultBootstrapPeers[i])
|
||||
if err != nil {
|
||||
logger.Errorw("failed to convert bootstrapper address to peer addr info", "address",
|
||||
DefaultBootstrapPeers[i].String(), err, "err")
|
||||
continue
|
||||
}
|
||||
ds = append(ds, *info)
|
||||
}
|
||||
return ds
|
||||
}
|
||||
|
||||
// Bootstrap tells the DHT to get into a bootstrapped state satisfying the
|
||||
// IpfsRouter interface.
|
||||
func (dht *IpfsDHT) Bootstrap(ctx context.Context) (err error) {
|
||||
_, end := tracer.Bootstrap(dhtName, ctx)
|
||||
defer func() { end(err) }()
|
||||
|
||||
dht.fixRTIfNeeded()
|
||||
dht.rtRefreshManager.RefreshNoWait()
|
||||
return nil
|
||||
}
|
||||
|
||||
// RefreshRoutingTable tells the DHT to refresh it's routing tables.
|
||||
//
|
||||
// The returned channel will block until the refresh finishes, then yield the
|
||||
// error and close. The channel is buffered and safe to ignore.
|
||||
func (dht *IpfsDHT) RefreshRoutingTable() <-chan error {
|
||||
return dht.rtRefreshManager.Refresh(false)
|
||||
}
|
||||
|
||||
// ForceRefresh acts like RefreshRoutingTable but forces the DHT to refresh all
|
||||
// buckets in the Routing Table irrespective of when they were last refreshed.
|
||||
//
|
||||
// The returned channel will block until the refresh finishes, then yield the
|
||||
// error and close. The channel is buffered and safe to ignore.
|
||||
func (dht *IpfsDHT) ForceRefresh() <-chan error {
|
||||
return dht.rtRefreshManager.Refresh(true)
|
||||
}
|
||||
Reference in New Issue
Block a user