diff --git a/conf/config.go b/conf/config.go index 682794d..6177498 100644 --- a/conf/config.go +++ b/conf/config.go @@ -30,6 +30,14 @@ type Config struct { MaxHBPerMinute int // default 5 MaxPublishPerMinute int // default 10 MaxGetPerMinute int // default 50 + + // LocationGranularity controls how precisely this node discloses its position. + // 0 = opt-out (no location published) + // 1 = continent (±15°) + // 2 = country (±3°) — default + // 3 = region (±0.5°) + // 4 = city (±0.05°) + LocationGranularity int // default 2 } var instance *Config diff --git a/daemons/node/common/common_heartbeat.go b/daemons/node/common/common_heartbeat.go index 8dd24af..b6d508e 100644 --- a/daemons/node/common/common_heartbeat.go +++ b/daemons/node/common/common_heartbeat.go @@ -13,6 +13,26 @@ import ( oclib "cloud.o-forge.io/core/oc-lib" ) +// MemberEventType is the SWIM membership event classification. +type MemberEventType string + +const ( + MemberAlive MemberEventType = "alive" + MemberSuspect MemberEventType = "suspect" + MemberDead MemberEventType = "dead" +) + +// MemberEvent is a SWIM membership event piggybacked on heartbeats (infection-style). +// HopsLeft starts at InitialEventHops and is decremented on each retransmission. +// Receivers discard events whose HopsLeft reaches 0 instead of forwarding them further. +// Deduplication by (PeerID, Incarnation): higher incarnation or higher-priority type wins. +type MemberEvent struct { + Type MemberEventType `json:"type"` + PeerID string `json:"peer_id"` + Incarnation uint64 `json:"incarnation"` + HopsLeft int `json:"hops_left"` +} + type Heartbeat struct { Name string `json:"name"` Stream *Stream `json:"stream"` @@ -39,6 +59,13 @@ type Heartbeat struct { // Only one indexer per node receives Referent=true at a time (the best-scored one). // The indexer stores the node in its referencedNodes for distributed search. Referent bool `json:"referent,omitempty"` + // SuspectedIncarnation is set when this node currently suspects the target indexer. + // If the value matches the indexer's own incarnation, the indexer increments its + // incarnation and replies with the new value — this is the SWIM refutation signal. + SuspectedIncarnation *uint64 `json:"suspected_incarnation,omitempty"` + // MembershipEvents carries SWIM events piggybacked on this heartbeat. + // Events are forwarded infection-style until HopsLeft reaches 0. + MembershipEvents []MemberEvent `json:"membership_events,omitempty"` } // SearchPeerRequest is sent by a node to an indexer via ProtocolSearchPeer. @@ -104,6 +131,13 @@ type HeartbeatResponse struct { // Seeds: node de-stickies this indexer once it has MinIndexer non-seed alternatives. // Non-seeds: node removes this indexer immediately if it has enough alternatives. SuggestMigrate bool `json:"suggest_migrate,omitempty"` + // Incarnation is this indexer's current SWIM incarnation number. + // It is incremented whenever the indexer refutes a suspicion signal. + // The node tracks this to detect explicit refutations and to clear suspect state. + Incarnation uint64 `json:"incarnation,omitempty"` + // MembershipEvents carries SWIM events piggybacked on this response. + // The node should forward them to its other indexers (infection-style). + MembershipEvents []MemberEvent `json:"membership_events,omitempty"` } // ComputeIndexerScore computes a composite quality score [0, 100] for the connecting peer. diff --git a/daemons/node/common/common_indexer_hb.go b/daemons/node/common/common_indexer_hb.go index a575499..48c98b1 100644 --- a/daemons/node/common/common_indexer_hb.go +++ b/daemons/node/common/common_indexer_hb.go @@ -24,6 +24,11 @@ var TimeWatcher time.Time // retryRunning guards against launching multiple retryUntilSeedResponds goroutines. var retryRunning atomic.Bool +// suspectTimeout is the maximum time a peer can stay in suspect state before +// being declared dead and evicted. Aligned with 3 heartbeat intervals so the +// peer has at least 3 chances to respond or refute the suspicion signal. +const suspectTimeout = 3 * RecommendedHeartbeatInterval + func ConnectToIndexers(h host.Host, minIndexer int, maxIndexer int, recordFn ...func() json.RawMessage) error { TimeWatcher = time.Now().UTC() logger := oclib.GetLogger() @@ -304,6 +309,11 @@ func SendHeartbeat(ctx context.Context, proto protocol.ID, name string, h host.H if recFn != nil { baseHB.Record = recFn() } + // Piggyback SWIM membership events on every outgoing heartbeat batch. + // All peers in the pool receive the same events this tick. + if isIndexerHB { + baseHB.MembershipEvents = NodeEventQueue.Drain(5) + } // Determine the referent indexer: highest-scored one receives Referent=true // so it stores us in its referencedNodes for distributed search. var referentAddr string @@ -323,6 +333,13 @@ func SendHeartbeat(ctx context.Context, proto protocol.ID, name string, h host.H if isIndexerHB && referentAddr != "" && ai.Addr == referentAddr { hb.Referent = true } + // SWIM: signal suspicion so the peer can refute by incrementing incarnation. + if isIndexerHB { + if score := directory.GetScore(ai.Addr); score != nil && !score.UptimeTracker.SuspectedAt.IsZero() { + inc := score.UptimeTracker.LastKnownIncarnation + hb.SuspectedIncarnation = &inc + } + } // Ensure an IndexerScore entry exists for this peer. var score *Score if isIndexerHB { @@ -378,6 +395,40 @@ func SendHeartbeat(ctx context.Context, proto protocol.ID, name string, h host.H score.UptimeTracker.RecordHeartbeat() score.UptimeTracker.ConsecutiveFails = 0 // reset on success + // SWIM: clear suspect state on any successful direct heartbeat. + // The peer proved it is reachable; if it also incremented its incarnation + // that is an explicit refutation — log it distinctly. + if !score.UptimeTracker.SuspectedAt.IsZero() { + wasExplicitRefutation := resp != nil && + resp.Incarnation > 0 && + resp.Incarnation > score.UptimeTracker.LastKnownIncarnation + if wasExplicitRefutation { + logger.Info().Str("peer", ai.Info.ID.String()). + Uint64("old_incarnation", score.UptimeTracker.LastKnownIncarnation). + Uint64("new_incarnation", resp.Incarnation). + Msg("[swim] explicit refutation: incarnation incremented, suspicion cleared") + } else { + logger.Info().Str("peer", ai.Info.ID.String()). + Msg("[swim] suspect cleared — peer responded to direct probe") + } + score.UptimeTracker.SuspectedAt = time.Time{} + // Propagate alive event so other nodes can clear their own suspect state. + inc := score.UptimeTracker.LastKnownIncarnation + if resp != nil && resp.Incarnation > 0 { + inc = resp.Incarnation + } + NodeEventQueue.Add(MemberEvent{ + Type: MemberAlive, + PeerID: ai.Info.ID.String(), + Incarnation: inc, + HopsLeft: InitialEventHops, + }) + } + // Always update last known incarnation. + if resp != nil && resp.Incarnation > score.UptimeTracker.LastKnownIncarnation { + score.UptimeTracker.LastKnownIncarnation = resp.Incarnation + } + maxRTT := BaseRoundTrip * 10 latencyScore := 1.0 - float64(rtt)/float64(maxRTT) if latencyScore < 0 { @@ -458,6 +509,15 @@ func SendHeartbeat(ctx context.Context, proto protocol.ID, name string, h host.H score.witnessConsistent++ } } + + // SWIM infection: process membership events piggybacked on this response. + // Events with HopsLeft > 0 are re-queued for forwarding to other indexers. + for _, ev := range resp.MembershipEvents { + if ev.HopsLeft > 0 { + NodeEventQueue.Add(ev) + } + applyMemberEvent(ev, directory) + } } score.Score = score.ComputeNodeSideScore(latencyScore) @@ -530,6 +590,59 @@ func SendHeartbeat(ctx context.Context, proto protocol.ID, name string, h host.H }() } +// runIndirectProbe asks up to k live indexers (voters) to probe target via +// ProtocolBandwidthProbe and returns true if the majority report reachable. +// This is the SWIM explicit indirect ping — called only on heartbeat failure. +func runIndirectProbe(h host.Host, target pp.AddrInfo, voters []Entry, k int) bool { + if k > len(voters) { + k = len(voters) + } + if k == 0 { + return false + } + shuffled := make([]Entry, len(voters)) + copy(shuffled, voters) + rand.Shuffle(len(shuffled), func(i, j int) { shuffled[i], shuffled[j] = shuffled[j], shuffled[i] }) + shuffled = shuffled[:k] + + type result struct{ reachable bool } + ch := make(chan result, k) + for _, voter := range shuffled { + if voter.Info == nil { + ch <- result{false} + continue + } + go func(v pp.AddrInfo) { + ctx, cancel := context.WithTimeout(context.Background(), 8*time.Second) + defer cancel() + s, err := h.NewStream(ctx, v.ID, ProtocolIndirectProbe) + if err != nil { + ch <- result{false} + return + } + s.SetDeadline(time.Now().Add(8 * time.Second)) + defer s.Close() + if err := json.NewEncoder(s).Encode(IndirectProbeRequest{Target: target}); err != nil { + ch <- result{false} + return + } + var resp IndirectProbeResponse + if err := json.NewDecoder(s).Decode(&resp); err != nil { + ch <- result{false} + return + } + ch <- result{resp.Reachable} + }(*voter.Info) + } + reachable := 0 + for range k { + if (<-ch).reachable { + reachable++ + } + } + return reachable > k/2 +} + func HeartbeatFailure(h host.Host, proto protocol.ID, directory *Directory, addr string, info *pp.AddrInfo, isIndexerHB bool, maxPool int, err error) { logger := oclib.GetLogger() @@ -545,22 +658,96 @@ func HeartbeatFailure(h host.Host, proto protocol.ID, directory *Directory, Msg("[pool] seed heartbeat failed — keeping in pool, ticker will retry " + err.Error()) return } - // Indirect probing via other alive indexers: - // If other indexers in the pool are still responding, they act as implicit - // third-party witnesses confirming our connectivity is fine — the failed - // indexer is genuinely dead, evict immediately. - // If this is the last indexer, there is no third party. Retry up to 3 times - // (consecutive failures tracked in UptimeTracker) before declaring it dead. - if len(directory.GetAddrs()) <= 1 { - score.UptimeTracker.ConsecutiveFails++ - if score.UptimeTracker.ConsecutiveFails < 3 { + + voters := directory.GetAddrs() + if len(voters) <= 1 { + // Last indexer: no peer available to proxy a probe. + // Enter suspect state on first failure; evict only after suspectTimeout. + if score.UptimeTracker.SuspectedAt.IsZero() { + score.UptimeTracker.SuspectedAt = time.Now().UTC() + score.UptimeTracker.ConsecutiveFails++ + NodeEventQueue.Add(MemberEvent{ + Type: MemberSuspect, + PeerID: info.ID.String(), + Incarnation: score.UptimeTracker.LastKnownIncarnation, + HopsLeft: InitialEventHops, + }) logger.Warn().Str("peer", info.ID.String()). - Int("attempt", score.UptimeTracker.ConsecutiveFails). - Msg("[indirect] last indexer failed, retrying before eviction") + Msg("[swim] last indexer suspect — waiting for refutation or timeout") return } + if time.Since(score.UptimeTracker.SuspectedAt) < suspectTimeout { + logger.Warn().Str("peer", info.ID.String()). + Dur("suspected_for", time.Since(score.UptimeTracker.SuspectedAt)). + Msg("[swim] last indexer still failing, holding in suspect state") + return + } + // suspectTimeout exceeded with no refutation — declare dead. logger.Warn().Str("peer", info.ID.String()). - Msg("[indirect] last indexer failed 3 times consecutively, evicting") + Msg("[swim] last indexer suspect timeout exceeded, evicting") + NodeEventQueue.Add(MemberEvent{ + Type: MemberDead, + PeerID: info.ID.String(), + Incarnation: score.UptimeTracker.LastKnownIncarnation, + HopsLeft: InitialEventHops, + }) + } else if score.UptimeTracker.SuspectedAt.IsZero() { + // First miss with other live indexers available: + // enter suspect state and run an indirect probe asynchronously. + score.UptimeTracker.SuspectedAt = time.Now().UTC() + score.UptimeTracker.ConsecutiveFails++ + NodeEventQueue.Add(MemberEvent{ + Type: MemberSuspect, + PeerID: info.ID.String(), + Incarnation: score.UptimeTracker.LastKnownIncarnation, + HopsLeft: InitialEventHops, + }) + probeTarget := *info + go func() { + alive := runIndirectProbe(h, probeTarget, voters, 2) + if alive { + // Other indexers confirm the target is reachable → our direct + // link may be temporarily broken. Keep suspected; the next + // heartbeat tick will retry the direct probe. + logger.Warn().Str("peer", probeTarget.ID.String()). + Msg("[swim] indirect probe: target reachable by peers, keeping (suspected)") + } else { + // Majority of probes also failed → the indexer is genuinely dead. + logger.Warn().Str("peer", probeTarget.ID.String()). + Msg("[swim] indirect probe: target unreachable, evicting") + NodeEventQueue.Add(MemberEvent{ + Type: MemberDead, + PeerID: probeTarget.ID.String(), + Incarnation: score.UptimeTracker.LastKnownIncarnation, + HopsLeft: InitialEventHops, + }) + consensusVoters := evictPeer(directory, addr, probeTarget.ID, proto) + need := max(maxPool-len(consensusVoters), 1) + if len(consensusVoters) > 0 { + TriggerConsensus(h, consensusVoters, need) + } else { + replenishIndexersFromDHT(h, need) + } + } + }() + return // decision deferred to probe goroutine + } else if time.Since(score.UptimeTracker.SuspectedAt) < suspectTimeout { + // Still within suspect window — the next tick's SuspectedIncarnation + // in the heartbeat may trigger a refutation. Keep retrying. + logger.Warn().Str("peer", info.ID.String()). + Dur("suspected_for", time.Since(score.UptimeTracker.SuspectedAt)). + Msg("[swim] suspected peer still failing, waiting for refutation or timeout") + return + } else { + // suspectTimeout exceeded — declare dead and fall through to eviction. + logger.Warn().Str("peer", info.ID.String()). + Msg("[swim] suspect timeout exceeded, evicting") + NodeEventQueue.Add(MemberEvent{ + Type: MemberDead, + PeerID: info.ID.String(), + Incarnation: score.UptimeTracker.LastKnownIncarnation, + HopsLeft: InitialEventHops, + }) } } } @@ -587,3 +774,34 @@ func HeartbeatFailure(h host.Host, proto protocol.ID, directory *Directory, } } } + +// applyMemberEvent applies an incoming SWIM membership event to the local directory. +// Only MemberAlive events with a higher incarnation can clear an existing suspect state; +// MemberSuspect / MemberDead from gossip are informational — we do not act on them +// unilaterally since the node has its own direct-probe evidence. +func applyMemberEvent(ev MemberEvent, directory *Directory) { + if ev.Type != MemberAlive { + return + } + logger := oclib.GetLogger() + for _, ai := range directory.GetAddrs() { + if ai.Info == nil || ai.Info.ID.String() != ev.PeerID { + continue + } + score := directory.GetScore(ai.Addr) + if score == nil || score.UptimeTracker == nil { + return + } + if ev.Incarnation > score.UptimeTracker.LastKnownIncarnation { + score.UptimeTracker.LastKnownIncarnation = ev.Incarnation + if !score.UptimeTracker.SuspectedAt.IsZero() { + score.UptimeTracker.SuspectedAt = time.Time{} + score.UptimeTracker.ConsecutiveFails = 0 + logger.Info().Str("peer", ev.PeerID). + Uint64("incarnation", ev.Incarnation). + Msg("[swim] alive event via gossip cleared suspicion") + } + } + return + } +} diff --git a/daemons/node/common/common_pubsub.go b/daemons/node/common/common_pubsub.go index 9ce25fb..9a68515 100644 --- a/daemons/node/common/common_pubsub.go +++ b/daemons/node/common/common_pubsub.go @@ -146,6 +146,22 @@ func (s *LongLivedPubSubService) SubscribeToSearch(ps *pubsub.PubSub, f *func(co if f != nil { return SubscribeEvents(s, context.Background(), TopicPubSubSearch, -1, *f) } + // Even when no handler is needed (e.g. strict indexers), we must call + // topic.Subscribe() so that this peer sends a SUBSCRIBE control message + // to connected peers and joins the GossipSub mesh as a forwarder. + // Without this, messages cannot be relayed through indexers between nodes. + topic := s.LongLivedPubSubs[TopicPubSubSearch] + sub, err := topic.Subscribe() + if err != nil { + return err + } + go func() { + for { + if _, err := sub.Next(context.Background()); err != nil { + return + } + } + }() return nil } @@ -161,26 +177,27 @@ func SubscribeEvents[T interface{}](s *LongLivedPubSubService, return err } // launch loop waiting for results. - go waitResults(s, ctx, sub, proto, timeout, f) + go waitResults(topic, s, ctx, sub, proto, timeout, f) return nil } -func waitResults[T interface{}](s *LongLivedPubSubService, ctx context.Context, sub *pubsub.Subscription, proto string, timeout int, f func(context.Context, T, string)) { +func waitResults[T interface{}](topic *pubsub.Topic, s *LongLivedPubSubService, ctx context.Context, sub *pubsub.Subscription, proto string, timeout int, f func(context.Context, T, string)) { defer ctx.Done() for { s.PubsubMu.Lock() // check safely if cache is actually notified subscribed to topic if s.LongLivedPubSubs[proto] == nil { // if not kill the loop. - s.PubsubMu.Unlock() - break + s.LongLivedPubSubs[proto] = topic } s.PubsubMu.Unlock() + // if still subscribed -> wait for new message var cancel context.CancelFunc if timeout != -1 { ctx, cancel = context.WithTimeout(ctx, time.Duration(timeout)*time.Second) defer cancel() } + msg, err := sub.Next(ctx) if err != nil { if errors.Is(err, context.DeadlineExceeded) { @@ -197,5 +214,6 @@ func waitResults[T interface{}](s *LongLivedPubSubService, ctx context.Context, continue } f(ctx, evt, fmt.Sprintf("%v", proto)) + fmt.Println("DEADLOCK ?") } } diff --git a/daemons/node/common/common_scoring.go b/daemons/node/common/common_scoring.go index 2265829..8ae810d 100644 --- a/daemons/node/common/common_scoring.go +++ b/daemons/node/common/common_scoring.go @@ -21,7 +21,12 @@ type UptimeTracker struct { FirstSeen time.Time LastSeen time.Time TotalOnline time.Duration - ConsecutiveFails int // incremented on each heartbeat failure; reset to 0 on success + ConsecutiveFails int // kept for compatibility / logging; primary eviction uses SuspectedAt + SuspectedAt time.Time // SWIM: non-zero when this peer is in suspect state + // LastKnownIncarnation is the last incarnation number received from this peer. + // When a peer sees itself suspected (SuspectedIncarnation in heartbeat) it + // increments its incarnation and the node clears the suspect state on receipt. + LastKnownIncarnation uint64 } // RecordHeartbeat accumulates online time gap-aware: only counts the interval if diff --git a/daemons/node/common/common_service.go b/daemons/node/common/common_service.go index 4778362..6e7f15c 100644 --- a/daemons/node/common/common_service.go +++ b/daemons/node/common/common_service.go @@ -6,6 +6,7 @@ import ( "fmt" "io" "math/rand" + "oc-discovery/conf" "strings" "sync" "time" @@ -22,6 +23,8 @@ type LongLivedStreamRecordedService[T interface{}] struct { StreamRecords map[protocol.ID]map[pp.ID]*StreamRecord[T] StreamMU sync.RWMutex maxNodesConn int + ConnGuard *ConnectionRateGuard + // AllowInbound, when set, is called once at stream open before any heartbeat // is decoded. remotePeer is the connecting peer; isNew is true when no // StreamRecord exists yet (first-ever connection). Return a non-nil error @@ -39,13 +42,9 @@ type LongLivedStreamRecordedService[T interface{}] struct { AfterDelete func(pid pp.ID, name string, did string) // BuildHeartbeatResponse, when set, is called after each successfully decoded // heartbeat to build the response sent back to the node. - // remotePeer is the peer that sent the heartbeat (used for offload routing). - // need is how many more indexers the node wants (from hb.Need). - // referent is true when the node designated this indexer as its search referent. - // rawRecord is the fresh signed PeerRecord embedded in the heartbeat (hb.Record), - // passed directly so the handler does not race with AfterHeartbeat goroutine - // updating StreamRecord.Record. - BuildHeartbeatResponse func(remotePeer pp.ID, need int, challenges []string, challengeDID string, referent bool, rawRecord json.RawMessage) *HeartbeatResponse + // remotePeer is the connecting peer. hb is the full decoded heartbeat, including + // SWIM fields (SuspectedIncarnation, MembershipEvents) and record/challenge data. + BuildHeartbeatResponse func(remotePeer pp.ID, hb *Heartbeat) *HeartbeatResponse } func (ix *LongLivedStreamRecordedService[T]) MaxNodesConn() int { @@ -57,6 +56,7 @@ func NewStreamRecordedService[T interface{}](h host.Host, maxNodesConn int) *Lon LongLivedPubSubService: NewLongLivedPubSubService(h), StreamRecords: map[protocol.ID]map[pp.ID]*StreamRecord[T]{}, maxNodesConn: maxNodesConn, + ConnGuard: newConnectionRateGuard(), } go service.StartGC(30 * time.Second) // Garbage collection is needed on every Map of Long-Lived Stream... it may be a top level redesigned @@ -247,7 +247,7 @@ func (ix *LongLivedStreamRecordedService[T]) HandleHeartbeat(s network.Stream) { } // Send response back to the node (bidirectional heartbeat). if ix.BuildHeartbeatResponse != nil { - if resp := ix.BuildHeartbeatResponse(s.Conn().RemotePeer(), hb.Need, hb.Challenges, hb.ChallengeDID, hb.Referent, hb.Record); resp != nil { + if resp := ix.BuildHeartbeatResponse(s.Conn().RemotePeer(), hb); resp != nil { s.SetWriteDeadline(time.Now().Add(3 * time.Second)) json.NewEncoder(s).Encode(resp) s.SetWriteDeadline(time.Time{}) @@ -303,3 +303,52 @@ func CheckHeartbeat(h host.Host, s network.Stream, dec *json.Decoder, streams ma return &pid, &hb, err } } + +// ── ConnectionRateGuard ─────────────────────────────────────────────────────── + +// ConnectionRateGuard limits the number of NEW incoming connections accepted +// within a sliding time window. It protects public indexers against coordinated +// registration floods (Sybil bursts). + +const defaultMaxConnPerWindow = 20 +const defaultConnWindowSecs = 30 + +type ConnectionRateGuard struct { + mu sync.Mutex + window []time.Time + maxInWindow int + windowDur time.Duration +} + +func newConnectionRateGuard() *ConnectionRateGuard { + cfg := conf.GetConfig() + return &ConnectionRateGuard{ + maxInWindow: CfgOr(cfg.MaxConnPerWindow, defaultMaxConnPerWindow), + windowDur: time.Duration(CfgOr(cfg.ConnWindowSecs, defaultConnWindowSecs)) * time.Second, + } +} + +// Allow returns true if a new connection may be accepted. +// The internal window is pruned on each call so memory stays bounded. +func (g *ConnectionRateGuard) Allow() bool { + g.mu.Lock() + defer g.mu.Unlock() + now := time.Now() + cutoff := now.Add(-g.windowDur) + i := 0 + for i < len(g.window) && g.window[i].Before(cutoff) { + i++ + } + g.window = g.window[i:] + if len(g.window) >= g.maxInWindow { + return false + } + g.window = append(g.window, now) + return true +} +func CfgOr(v, def int) int { + if v > 0 { + return v + } + return def +} diff --git a/daemons/node/common/common_stream.go b/daemons/node/common/common_stream.go index d15ec5a..9d4bbeb 100644 --- a/daemons/node/common/common_stream.go +++ b/daemons/node/common/common_stream.go @@ -14,11 +14,110 @@ import ( "github.com/libp2p/go-libp2p/core/protocol" ) +// InitialEventHops is the starting hop count for SWIM membership events. +// floor(log2(typical max-pool)) + 1 gives O(log n) propagation rounds. +const InitialEventHops = 4 + +const maxMemberEventQueue = 50 + +// MembershipEventQueue holds SWIM membership events to be piggybacked on +// outgoing heartbeats (infection-style dissemination). Bounded at +// maxMemberEventQueue entries; events are deduplicated by PeerID. +type MembershipEventQueue struct { + mu sync.Mutex + events []MemberEvent +} + +// memberEventPriority maps event types to an integer so higher-severity +// events override lower-severity ones for the same PeerID. +func memberEventPriority(t MemberEventType) int { + switch t { + case MemberDead: + return 3 + case MemberSuspect: + return 2 + case MemberAlive: + return 1 + } + return 0 +} + +// Add inserts or updates a membership event. +// An incoming event replaces the existing entry for the same PeerID when: +// - its Incarnation is higher, OR +// - the Incarnation is equal but the event type is higher-severity. +func (q *MembershipEventQueue) Add(e MemberEvent) { + q.mu.Lock() + defer q.mu.Unlock() + for i, ex := range q.events { + if ex.PeerID == e.PeerID { + if e.Incarnation > ex.Incarnation || + (e.Incarnation == ex.Incarnation && memberEventPriority(e.Type) > memberEventPriority(ex.Type)) { + q.events[i] = e + } + return + } + } + if len(q.events) >= maxMemberEventQueue { + q.events = q.events[1:] // drop oldest + } + q.events = append(q.events, e) +} + +// Drain returns up to max events ready for transmission. +// HopsLeft is decremented on each call; events that reach 0 are removed from +// the queue (they have already propagated enough rounds). +func (q *MembershipEventQueue) Drain(max int) []MemberEvent { + q.mu.Lock() + defer q.mu.Unlock() + if len(q.events) == 0 { + return nil + } + out := make([]MemberEvent, 0, max) + kept := q.events[:0] + for _, e := range q.events { + if len(out) < max { + e.HopsLeft-- + out = append(out, e) + if e.HopsLeft > 0 { + kept = append(kept, e) + } + // HopsLeft reached 0: event has propagated enough, drop from queue. + } else { + kept = append(kept, e) + } + } + q.events = kept + return out +} + +// NodeEventQueue is the global SWIM event queue for the node side. +// Events are added on suspect/dead detection and drained into outgoing heartbeats. +var NodeEventQueue = &MembershipEventQueue{} + const ( ProtocolPublish = "/opencloud/record/publish/1.0" ProtocolGet = "/opencloud/record/get/1.0" + ProtocolDelete = "/opencloud/record/delete/1.0" + // ProtocolIndirectProbe is opened by a node toward a live indexer to ask it + // to actively probe a suspected indexer on the node's behalf (SWIM indirect ping). + // It is the only inter-indexer protocol — indexers do not maintain persistent + // connections to each other; this stream is one-shot and short-lived. + ProtocolIndirectProbe = "/opencloud/indexer/probe/1.0" ) +// IndirectProbeRequest is sent by a node over ProtocolIndirectProbe. +// The receiving indexer must attempt to reach Target and report back. +type IndirectProbeRequest struct { + Target pp.AddrInfo `json:"target"` +} + +// IndirectProbeResponse is the reply from the probing indexer. +type IndirectProbeResponse struct { + Reachable bool `json:"reachable"` + LatencyMs int64 `json:"latency_ms,omitempty"` +} + const ProtocolHeartbeat = "/opencloud/heartbeat/1.0" // ProtocolWitnessQuery is opened by a node to ask a peer what it thinks of a given indexer. diff --git a/daemons/node/indexer/behavior.go b/daemons/node/indexer/behavior.go index 47ed507..ebbb835 100644 --- a/daemons/node/indexer/behavior.go +++ b/daemons/node/indexer/behavior.go @@ -6,6 +6,7 @@ import ( "time" "oc-discovery/conf" + "oc-discovery/daemons/node/common" pp "github.com/libp2p/go-libp2p/core/peer" ) @@ -13,62 +14,14 @@ import ( // ── defaults ────────────────────────────────────────────────────────────────── const ( - defaultMaxConnPerWindow = 20 - defaultConnWindowSecs = 30 - defaultMaxHBPerMinute = 5 - defaultMaxPublishPerMin = 10 - defaultMaxGetPerMin = 50 - strikeThreshold = 3 - banDuration = 10 * time.Minute - behaviorWindowDur = 60 * time.Second + defaultMaxHBPerMinute = 5 + defaultMaxPublishPerMin = 10 + defaultMaxGetPerMin = 50 + strikeThreshold = 3 + banDuration = 10 * time.Minute + behaviorWindowDur = 60 * time.Second ) -func cfgOr(v, def int) int { - if v > 0 { - return v - } - return def -} - -// ── ConnectionRateGuard ─────────────────────────────────────────────────────── - -// ConnectionRateGuard limits the number of NEW incoming connections accepted -// within a sliding time window. It protects public indexers against coordinated -// registration floods (Sybil bursts). -type ConnectionRateGuard struct { - mu sync.Mutex - window []time.Time - maxInWindow int - windowDur time.Duration -} - -func newConnectionRateGuard() *ConnectionRateGuard { - cfg := conf.GetConfig() - return &ConnectionRateGuard{ - maxInWindow: cfgOr(cfg.MaxConnPerWindow, defaultMaxConnPerWindow), - windowDur: time.Duration(cfgOr(cfg.ConnWindowSecs, defaultConnWindowSecs)) * time.Second, - } -} - -// Allow returns true if a new connection may be accepted. -// The internal window is pruned on each call so memory stays bounded. -func (g *ConnectionRateGuard) Allow() bool { - g.mu.Lock() - defer g.mu.Unlock() - now := time.Now() - cutoff := now.Add(-g.windowDur) - i := 0 - for i < len(g.window) && g.window[i].Before(cutoff) { - i++ - } - g.window = g.window[i:] - if len(g.window) >= g.maxInWindow { - return false - } - g.window = append(g.window, now) - return true -} - // ── per-node state ──────────────────────────────────────────────────────────── type nodeBehavior struct { @@ -130,9 +83,9 @@ func newNodeBehaviorTracker() *NodeBehaviorTracker { cfg := conf.GetConfig() return &NodeBehaviorTracker{ nodes: make(map[pp.ID]*nodeBehavior), - maxHB: cfgOr(cfg.MaxHBPerMinute, defaultMaxHBPerMinute), - maxPub: cfgOr(cfg.MaxPublishPerMinute, defaultMaxPublishPerMin), - maxGet: cfgOr(cfg.MaxGetPerMinute, defaultMaxGetPerMin), + maxHB: common.CfgOr(cfg.MaxHBPerMinute, defaultMaxHBPerMinute), + maxPub: common.CfgOr(cfg.MaxPublishPerMinute, defaultMaxPublishPerMin), + maxGet: common.CfgOr(cfg.MaxGetPerMinute, defaultMaxGetPerMin), } } diff --git a/daemons/node/indexer/handler.go b/daemons/node/indexer/handler.go index f110e8c..5e643e6 100644 --- a/daemons/node/indexer/handler.go +++ b/daemons/node/indexer/handler.go @@ -21,21 +21,37 @@ import ( lpp "github.com/libp2p/go-libp2p/core/peer" ) +// DefaultTTLSeconds is the default TTL for peer records when the publisher +// does not declare a custom TTL. Exported so the node package can reference it. +const DefaultTTLSeconds = 120 + +// maxTTLSeconds caps how far in the future a publisher can set their ExpiryDate. +const maxTTLSeconds = 86400 // 24h + +// tombstoneTTL is how long a signed delete record stays alive in the DHT — +// long enough to propagate everywhere, short enough not to linger forever. +const tombstoneTTL = 10 * time.Minute + type PeerRecordPayload struct { Name string `json:"name"` DID string `json:"did"` PubKey []byte `json:"pub_key"` ExpiryDate time.Time `json:"expiry_date"` + // TTLSeconds is the publisher's declared lifetime for this record in seconds. + // 0 means "use the default (120 s)". Included in the signed payload so it + // cannot be altered by an intermediary. + TTLSeconds int `json:"ttl_seconds,omitempty"` } type PeerRecord struct { PeerRecordPayload - PeerID string `json:"peer_id"` - APIUrl string `json:"api_url"` - StreamAddress string `json:"stream_address"` - NATSAddress string `json:"nats_address"` - WalletAddress string `json:"wallet_address"` - Signature []byte `json:"signature"` + PeerID string `json:"peer_id"` + APIUrl string `json:"api_url"` + StreamAddress string `json:"stream_address"` + NATSAddress string `json:"nats_address"` + WalletAddress string `json:"wallet_address"` + Location *pp.PeerLocation `json:"location,omitempty"` + Signature []byte `json:"signature"` } func (p *PeerRecord) Sign() error { @@ -84,6 +100,7 @@ func (pr *PeerRecord) ExtractPeer(ourkey string, key string, pubKey crypto.PubKe StreamAddress: pr.StreamAddress, NATSAddress: pr.NATSAddress, WalletAddress: pr.WalletAddress, + Location: pr.Location, } if time.Now().UTC().After(pr.ExpiryDate) { return pp.SELF == p.Relation, nil, errors.New("peer " + key + " is offline") @@ -91,6 +108,42 @@ func (pr *PeerRecord) ExtractPeer(ourkey string, key string, pubKey crypto.PubKe return pp.SELF == p.Relation, p, nil } +// TombstonePayload is the signed body of a delete request. +// Only the owner's private key can produce a valid signature over this payload. +type TombstonePayload struct { + DID string `json:"did"` + PeerID string `json:"peer_id"` + DeletedAt time.Time `json:"deleted_at"` +} + +// TombstoneRecord is stored in the DHT at /node/{DID} to signal that a peer +// has voluntarily left the network. The Tombstone bool field acts as a +// discriminator so validators can distinguish it from a live PeerRecord. +type TombstoneRecord struct { + TombstonePayload + PubKey []byte `json:"pub_key"` + Tombstone bool `json:"tombstone"` + Signature []byte `json:"signature"` +} + +func (ts *TombstoneRecord) Verify() (crypto.PubKey, error) { + pubKey, err := crypto.UnmarshalPublicKey(ts.PubKey) + if err != nil { + return nil, err + } + payload, _ := json.Marshal(ts.TombstonePayload) + if ok, _ := pubKey.Verify(payload, ts.Signature); !ok { + return nil, errors.New("invalid tombstone signature") + } + return pubKey, nil +} + +// isTombstone returns true if data is a valid, well-formed TombstoneRecord. +func isTombstone(data []byte) bool { + var ts TombstoneRecord + return json.Unmarshal(data, &ts) == nil && ts.Tombstone +} + type GetValue struct { Key string `json:"key"` PeerID string `json:"peer_id,omitempty"` @@ -147,9 +200,9 @@ func (ix *IndexerService) isPeerKnown(pid lpp.ID) bool { return false } ctx2, cancel2 := context.WithTimeout(context.Background(), 3*time.Second) - _, err = ix.DHT.GetValue(ctx2, ix.genKey(string(did))) + val, err := ix.DHT.GetValue(ctx2, ix.genKey(string(did))) cancel2() - return err == nil + return err == nil && !isTombstone(val) } func (ix *IndexerService) initNodeHandler() { @@ -188,6 +241,18 @@ func (ix *IndexerService) initNodeHandler() { logger.Warn().Err(err).Str("did", rec.DID).Msg("indexer: heartbeat record signature invalid") return } + // Don't republish if a tombstone was recently stored for this DID: + // the peer explicitly left and we must not re-animate their record. + ix.deletedDIDsMu.Lock() + if t, ok := ix.deletedDIDs[rec.DID]; ok { + if time.Since(t) < tombstoneTTL { + ix.deletedDIDsMu.Unlock() + return + } + // tombstoneTTL elapsed — peer is allowed to re-register. + delete(ix.deletedDIDs, rec.DID) + } + ix.deletedDIDsMu.Unlock() // Keep StreamRecord.Record in sync so BuildHeartbeatResponse always // sees a populated PeerRecord (Name, DID, etc.) regardless of whether // handleNodePublish ran before or after the heartbeat stream was opened. @@ -220,6 +285,8 @@ func (ix *IndexerService) initNodeHandler() { ix.Host.SetStreamHandler(common.ProtocolHeartbeat, ix.HandleHeartbeat) ix.Host.SetStreamHandler(common.ProtocolPublish, ix.handleNodePublish) ix.Host.SetStreamHandler(common.ProtocolGet, ix.handleNodeGet) + ix.Host.SetStreamHandler(common.ProtocolDelete, ix.handleNodeDelete) + ix.Host.SetStreamHandler(common.ProtocolIndirectProbe, ix.handleIndirectProbe) ix.Host.SetStreamHandler(common.ProtocolIndexerCandidates, ix.handleCandidateRequest) ix.initSearchHandlers() } @@ -383,12 +450,12 @@ func (ix *IndexerService) handleNodeGet(s network.Stream) { ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) c, err := ix.DHT.GetValue(ctx, ix.genKey(key)) cancel() - if err == nil { + if err == nil && !isTombstone(c) { var rec PeerRecord if json.Unmarshal(c, &rec) == nil { resp.Records[rec.PeerID] = rec } - } else { + } else if err != nil { logger.Err(err).Msg("Failed to fetch PeerRecord from DHT " + key) } } @@ -399,3 +466,121 @@ func (ix *IndexerService) handleNodeGet(s network.Stream) { } } +// handleNodeDelete processes a signed delete (tombstone) request from a peer. +// It verifies that the request is: +// - marked as a tombstone +// - recent (within 5 minutes, preventing replay attacks) +// - sent by the actual peer whose record is being deleted (PeerID == remotePeer) +// - signed by the matching private key +// +// On success it stores the tombstone in the DHT, evicts the peer from the local +// stream records, and marks the DID in deletedDIDs so AfterHeartbeat cannot +// accidentally republish the record during the tombstoneTTL window. +func (ix *IndexerService) handleNodeDelete(s network.Stream) { + defer s.Close() + logger := oclib.GetLogger() + remotePeer := s.Conn().RemotePeer() + s.SetDeadline(time.Now().Add(10 * time.Second)) + + var ts TombstoneRecord + if err := json.NewDecoder(s).Decode(&ts); err != nil || !ts.Tombstone { + s.Reset() + return + } + if ts.PeerID == "" || ts.DID == "" { + s.Reset() + return + } + if time.Since(ts.DeletedAt) > 5*time.Minute { + logger.Warn().Str("peer", remotePeer.String()).Msg("[delete] stale tombstone rejected") + s.Reset() + return + } + if ts.PeerID != remotePeer.String() { + logger.Warn().Str("peer", remotePeer.String()).Msg("[delete] tombstone PeerID mismatch") + s.Reset() + return + } + if _, err := ts.Verify(); err != nil { + logger.Warn().Err(err).Str("peer", remotePeer.String()).Msg("[delete] invalid tombstone signature") + s.Reset() + return + } + + // Mark DID as deleted in-memory before writing to DHT so AfterHeartbeat + // cannot win a race and republish the live record on top of the tombstone. + ix.deletedDIDsMu.Lock() + ix.deletedDIDs[ts.DID] = ts.DeletedAt + ix.deletedDIDsMu.Unlock() + + data, _ := json.Marshal(ts) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + if err := ix.DHT.PutValue(ctx, ix.genKey(ts.DID), data); err != nil { + logger.Warn().Err(err).Str("did", ts.DID).Msg("[delete] DHT write tombstone failed") + } + cancel() + + // Invalidate the /pid/ secondary index so isPeerKnown returns false quickly. + ctx2, cancel2 := context.WithTimeout(context.Background(), 10*time.Second) + if err := ix.DHT.PutValue(ctx2, ix.genPIDKey(ts.PeerID), []byte("")); err != nil { + logger.Warn().Err(err).Str("pid", ts.PeerID).Msg("[delete] DHT clear pid failed") + } + cancel2() + + // Evict from active stream records. + if pid, err := lpp.Decode(ts.PeerID); err == nil { + ix.StreamMU.Lock() + delete(ix.StreamRecords[common.ProtocolHeartbeat], pid) + ix.StreamMU.Unlock() + } + + logger.Info().Str("did", ts.DID).Str("peer", ts.PeerID).Msg("[delete] tombstone stored, peer evicted") +} + +// handleIndirectProbe is the SWIM inter-indexer probe handler. +// A node opens this stream toward a live indexer to ask: "can you reach peer X?" +// The indexer attempts a ProtocolBandwidthProbe to X and reports back. +// This is the only protocol that indexers use to communicate with each other; +// no persistent inter-indexer connections are maintained. +func (ix *IndexerService) handleIndirectProbe(s network.Stream) { + defer s.Close() + s.SetDeadline(time.Now().Add(10 * time.Second)) + + var req common.IndirectProbeRequest + if err := json.NewDecoder(s).Decode(&req); err != nil { + s.Reset() + return + } + + respond := func(reachable bool, latencyMs int64) { + json.NewEncoder(s).Encode(common.IndirectProbeResponse{ + Reachable: reachable, + LatencyMs: latencyMs, + }) + } + + // Connect to target if not already connected. + ctx, cancel := context.WithTimeout(context.Background(), 6*time.Second) + defer cancel() + if ix.Host.Network().Connectedness(req.Target.ID) != network.Connected { + if err := ix.Host.Connect(ctx, req.Target); err != nil { + respond(false, 0) + return + } + } + + // Open a bandwidth probe stream — already registered on all nodes/indexers. + start := time.Now() + ps, err := ix.Host.NewStream(ctx, req.Target.ID, common.ProtocolBandwidthProbe) + if err != nil { + respond(false, 0) + return + } + defer ps.Reset() + ps.SetDeadline(time.Now().Add(3 * time.Second)) + ps.Write([]byte("ping")) + buf := make([]byte, 4) + _, err = ps.Read(buf) + latency := time.Since(start).Milliseconds() + respond(err == nil, latency) +} diff --git a/daemons/node/indexer/service.go b/daemons/node/indexer/service.go index 31a439c..ebfcf90 100644 --- a/daemons/node/indexer/service.go +++ b/daemons/node/indexer/service.go @@ -9,6 +9,7 @@ import ( "oc-discovery/daemons/node/common" "strings" "sync" + "sync/atomic" "time" oclib "cloud.o-forge.io/core/oc-lib" @@ -30,9 +31,9 @@ type dhtCacheEntry struct { // SuggestMigrate to a small batch at a time; peers that don't migrate within // offloadGracePeriod are moved to alreadyTried so a new batch can be picked. type offloadState struct { - inBatch map[pp.ID]time.Time // peer → time added to current batch + inBatch map[pp.ID]time.Time // peer → time added to current batch alreadyTried map[pp.ID]struct{} // peers proposed to that didn't migrate - mu sync.Mutex + mu sync.Mutex } const ( @@ -64,9 +65,20 @@ type IndexerService struct { pendingSearchesMu sync.Mutex // behavior tracks per-node compliance (heartbeat rate, publish/get volume, // identity consistency, signature failures). - behavior *NodeBehaviorTracker + behavior *NodeBehaviorTracker // connGuard limits new-connection bursts to protect public indexers. - connGuard *ConnectionRateGuard + // deletedDIDs tracks recently tombstoned DIDs to prevent AfterHeartbeat + // from republishing records that were explicitly deleted by the peer. + // Entries are cleared automatically after tombstoneTTL. + deletedDIDs map[string]time.Time + deletedDIDsMu sync.RWMutex + // SWIM incarnation: incremented when a connecting node signals suspicion via + // SuspectedIncarnation. The new value is broadcast back so nodes can clear + // their suspect state (refutation mechanism). + incarnation atomic.Uint64 + // eventQueue holds SWIM membership events to be piggybacked on responses + // (infection-style dissemination toward connected nodes). + eventQueue *common.MembershipEventQueue } // NewIndexerService creates an IndexerService. @@ -81,7 +93,8 @@ func NewIndexerService(h host.Host, ps *pubsub.PubSub, maxNode int) *IndexerServ referencedNodes: map[pp.ID]PeerRecord{}, pendingSearches: map[string]chan []common.SearchHit{}, behavior: newNodeBehaviorTracker(), - connGuard: newConnectionRateGuard(), + deletedDIDs: make(map[string]time.Time), + eventQueue: &common.MembershipEventQueue{}, } if ps == nil { ps, err = pubsub.NewGossipSub(context.Background(), ix.Host) @@ -96,6 +109,21 @@ func NewIndexerService(h host.Host, ps *pubsub.PubSub, maxNode int) *IndexerServ common.ConnectToIndexers(h, conf.GetConfig().MinIndexer, conf.GetConfig().MaxIndexer*2) logger.Info().Msg("subscribe to decentralized search flow as strict indexer...") go ix.SubscribeToSearch(ix.PS, nil) + ix.AllowInbound = func(remotePeer pp.ID, isNew bool) error { + /*if ix.behavior.IsBanned(remotePeer) { + return errors.New("peer is banned") + }*/ + if isNew { + // DB blacklist check: blocks reconnection after EvictPeer + blacklist. + /*if !ix.isPeerKnown(remotePeer) { + return errors.New("peer is blacklisted or unknown") + }*/ + if !ix.ConnGuard.Allow() { + return errors.New("connection rate limit exceeded, retry later") + } + } + return nil + } } ix.LongLivedStreamRecordedService.AfterDelete = func(pid pp.ID, name, did string) { @@ -106,16 +134,7 @@ func NewIndexerService(h host.Host, ps *pubsub.PubSub, maxNode int) *IndexerServ // AllowInbound: fired once per stream open, before any heartbeat is decoded. // 1. Reject peers that are currently banned (behavioral strikes). - // 2. For genuinely new connections, apply the burst guard. - ix.AllowInbound = func(remotePeer pp.ID, isNew bool) error { - if ix.behavior.IsBanned(remotePeer) { - return errors.New("peer is banned") - } - if isNew && !ix.connGuard.Allow() { - return errors.New("connection rate limit exceeded, retry later") - } - return nil - } + // 2. For genuinely new connections, check the DB blacklist and apply the burst guard. // ValidateHeartbeat: fired on every heartbeat tick for an established stream. // Checks heartbeat cadence — rejects if the node is sending too fast. @@ -162,7 +181,11 @@ func NewIndexerService(h host.Host, ps *pubsub.PubSub, maxNode int) *IndexerServ // Build and send a HeartbeatResponse after each received node heartbeat. // Raw metrics only — no pre-cooked score. Node computes the score itself. - ix.BuildHeartbeatResponse = func(remotePeer pp.ID, need int, challenges []string, challengeDID string, referent bool, rawRecord json.RawMessage) *common.HeartbeatResponse { + ix.BuildHeartbeatResponse = func(remotePeer pp.ID, hb *common.Heartbeat) *common.HeartbeatResponse { + logger := oclib.GetLogger() + need, challenges, challengeDID, referent, rawRecord := + hb.Need, hb.Challenges, hb.ChallengeDID, hb.Referent, hb.Record + ix.StreamMU.RLock() peerCount := len(ix.StreamRecords[common.ProtocolHeartbeat]) // Collect lastSeen per active peer for challenge responses. @@ -197,6 +220,31 @@ func NewIndexerService(h host.Host, ps *pubsub.PubSub, maxNode int) *IndexerServ // Update referent designation: node marks its best-scored indexer with Referent=true. ix.updateReferent(remotePeer, remotePeerRecord, referent) + // SWIM refutation: if the node signals our current incarnation as suspected, + // increment it and broadcast an alive event so other nodes can clear suspicion. + inc := ix.incarnation.Load() + if hb.SuspectedIncarnation != nil && *hb.SuspectedIncarnation == inc { + inc = ix.incarnation.Add(1) + logger.Info(). + Str("suspected_by", remotePeer.String()). + Uint64("new_incarnation", inc). + Msg("[swim] refuting suspicion — incarnation incremented") + ix.eventQueue.Add(common.MemberEvent{ + Type: common.MemberAlive, + PeerID: ix.Host.ID().String(), + Incarnation: inc, + HopsLeft: common.InitialEventHops, + }) + } + + // Relay incoming SWIM events from the node into our event queue so they + // propagate to other connected nodes (infection-style forwarding). + for _, ev := range hb.MembershipEvents { + if ev.HopsLeft > 0 { + ix.eventQueue.Add(ev) + } + } + maxN := ix.MaxNodesConn() fillRate := 0.0 if maxN > 0 { @@ -356,6 +404,10 @@ func NewIndexerService(h host.Host, ps *pubsub.PubSub, maxNode int) *IndexerServ }() } + // Attach SWIM incarnation and piggybacked membership events. + resp.Incarnation = ix.incarnation.Load() + resp.MembershipEvents = ix.eventQueue.Drain(5) + return resp } @@ -489,6 +541,23 @@ func (ix *IndexerService) startDHTProvide(fillRateFn func() float64) { }() } +// EvictPeer immediately closes the heartbeat stream of a peer and removes it +// from the active stream records. Used when a peer is auto-blacklisted. +func (ix *IndexerService) EvictPeer(peerID string) { + pid, err := pp.Decode(peerID) + if err != nil { + return + } + ix.StreamMU.Lock() + defer ix.StreamMU.Unlock() + if rec, ok := ix.StreamRecords[common.ProtocolHeartbeat][pid]; ok { + if rec.HeartbeatStream != nil && rec.HeartbeatStream.Stream != nil { + rec.HeartbeatStream.Stream.Reset() + } + delete(ix.StreamRecords[common.ProtocolHeartbeat], pid) + } +} + func (ix *IndexerService) Close() { if ix.dhtProvideCancel != nil { ix.dhtProvideCancel() diff --git a/daemons/node/indexer/validator.go b/daemons/node/indexer/validator.go index 11d5371..b5d151f 100644 --- a/daemons/node/indexer/validator.go +++ b/daemons/node/indexer/validator.go @@ -19,6 +19,21 @@ func (v DefaultValidator) Select(key string, values [][]byte) (int, error) { type PeerRecordValidator struct{} func (v PeerRecordValidator) Validate(key string, value []byte) error { + // Accept valid tombstones — deletion must be storable so it can propagate + // and win over stale live records on other DHT nodes via Select(). + var ts TombstoneRecord + if err := json.Unmarshal(value, &ts); err == nil && ts.Tombstone { + if ts.PeerID == "" || ts.DID == "" { + return errors.New("tombstone: missing fields") + } + if time.Since(ts.DeletedAt) > tombstoneTTL { + return errors.New("tombstone: expired") + } + if _, err := ts.Verify(); err != nil { + return errors.New("tombstone: " + err.Error()) + } + return nil + } var rec PeerRecord if err := json.Unmarshal(value, &rec); err != nil { @@ -35,6 +50,12 @@ func (v PeerRecordValidator) Validate(key string, value []byte) error { return errors.New("record expired") } + // TTL cap: publisher cannot set an expiry further than maxTTLSeconds in + // the future. Prevents abuse (e.g. records designed to linger for years). + if rec.ExpiryDate.After(time.Now().UTC().Add(maxTTLSeconds * time.Second)) { + return errors.New("TTL exceeds maximum allowed") + } + // Signature verification if _, err := rec.Verify(); err != nil { return errors.New("invalid signature") @@ -44,6 +65,14 @@ func (v PeerRecordValidator) Validate(key string, value []byte) error { } func (v PeerRecordValidator) Select(key string, values [][]byte) (int, error) { + // Tombstone always wins: a signed delete supersedes any live record, + // even if the live record has a later ExpiryDate. + for i, val := range values { + var ts TombstoneRecord + if err := json.Unmarshal(val, &ts); err == nil && ts.Tombstone { + return i, nil + } + } var newest time.Time index := 0 diff --git a/daemons/node/location/location.go b/daemons/node/location/location.go new file mode 100644 index 0000000..48c1df5 --- /dev/null +++ b/daemons/node/location/location.go @@ -0,0 +1,99 @@ +// Package location resolves the geographic position of this node via IP +// geolocation and applies a privacy-preserving random offset proportional +// to the chosen granularity level before publishing the result. +package location + +import ( + "encoding/json" + "fmt" + "math/rand" + "net/http" + "time" + + peer "cloud.o-forge.io/core/oc-lib/models/peer" +) + +// fuzzRadius returns the maximum random offset (in degrees) for each axis +// given a granularity level. +// +// 0 → no location +// 1 → continent ±15° lat / ±20° lng +// 2 → country ±3° lat / ±4° lng (default) +// 3 → region ±0.5° lat / ±0.7° lng +// 4 → city ±0.05° lat / ±0.07° lng +func fuzzRadius(granularity int) (latR, lngR float64) { + switch granularity { + case 1: + return 15.0, 20.0 + case 2: + return 3.0, 4.0 + case 3: + return 0.5, 0.7 + case 4: + return 0.05, 0.07 + default: + return 3.0, 4.0 + } +} + +// clamp keeps a value inside [min, max]. +func clamp(v, min, max float64) float64 { + if v < min { + return min + } + if v > max { + return max + } + return v +} + +// ipAPIResponse is the subset of fields returned by ip-api.com/json. +type ipAPIResponse struct { + Status string `json:"status"` + Lat float64 `json:"lat"` + Lon float64 `json:"lon"` + Country string `json:"country"` + Region string `json:"regionName"` + City string `json:"city"` +} + +// Geolocate resolves the current public IP location via ip-api.com (free, +// no key required for non-commercial use), then fuzzes the result according +// to granularity. +// +// Returns nil if granularity == 0 (opt-out) or if the lookup fails. +func Geolocate(granularity int) *peer.PeerLocation { + if granularity == 0 { + return nil + } + + client := &http.Client{Timeout: 5 * time.Second} + resp, err := client.Get("http://ip-api.com/json?fields=status,lat,lon,country,regionName,city") + if err != nil { + return nil + } + defer resp.Body.Close() + + var result ipAPIResponse + if err := json.NewDecoder(resp.Body).Decode(&result); err != nil || result.Status != "success" { + return nil + } + + latR, lngR := fuzzRadius(granularity) + rng := rand.New(rand.NewSource(time.Now().UnixNano())) + + fuzzedLat := result.Lat + (rng.Float64()*2-1)*latR + fuzzedLng := result.Lon + (rng.Float64()*2-1)*lngR + + fuzzedLat = clamp(fuzzedLat, -85.0, 85.0) + fuzzedLng = clamp(fuzzedLng, -180.0, 180.0) + + fmt.Printf("[location] granularity=%d raw=(%.4f,%.4f) fuzzed=(%.4f,%.4f)\n", + granularity, result.Lat, result.Lon, fuzzedLat, fuzzedLng) + + return &peer.PeerLocation{ + Latitude: fuzzedLat, + Longitude: fuzzedLng, + Granularity: granularity, + } +} diff --git a/daemons/node/nats.go b/daemons/node/nats.go index 7276701..4c7c646 100644 --- a/daemons/node/nats.go +++ b/daemons/node/nats.go @@ -10,6 +10,7 @@ import ( oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/config" + pp_model "cloud.o-forge.io/core/oc-lib/models/peer" "cloud.o-forge.io/core/oc-lib/tools" pp "github.com/libp2p/go-libp2p/core/peer" "github.com/libp2p/go-libp2p/core/protocol" @@ -25,8 +26,10 @@ type executionConsidersPayload struct { func ListenNATS(n *Node) { tools.NewNATSCaller().ListenNats(map[tools.NATSMethod]func(tools.NATSResponse){ + tools.PEER_BEHAVIOR_EVENT: func(resp tools.NATSResponse) { //nolint:typecheck + handlePeerBehaviorEvent(n, resp) + }, tools.PROPALGATION_EVENT: func(resp tools.NATSResponse) { - fmt.Println("PROPALGATION") if resp.FromApp == config.GetAppName() { return } @@ -41,7 +44,6 @@ func ListenNATS(n *Node) { dtt := tools.DataType(propalgation.DataType) dt = &dtt } - fmt.Println("PROPALGATION ACT", propalgation.DataType, propalgation.Action, propalgation.Action == tools.PB_CREATE, err) if err == nil { switch propalgation.Action { case tools.PB_ADMIRALTY_CONFIG, tools.PB_MINIO_CONFIG: @@ -116,6 +118,7 @@ func ListenNATS(n *Node) { } n.StreamService.Mu.Unlock() } else { + fmt.Println("REACH PLANNER") n.StreamService.PublishCommon(nil, resp.User, resp.Groups, fmt.Sprintf("%v", m["peer_id"]), stream.ProtocolSendPlanner, b) } } @@ -158,6 +161,8 @@ func ListenNATS(n *Node) { } else { m := map[string]interface{}{} if err := json.Unmarshal(propalgation.Payload, &m); err == nil { + fmt.Println("PB_SEARCH CATA", m) + n.PubSubService.SearchPublishEvent( context.Background(), dt, @@ -172,3 +177,66 @@ func ListenNATS(n *Node) { }, }) } + +// handlePeerBehaviorEvent applies a PeerBehaviorReport received from a trusted +// service (oc-scheduler, oc-datacenter, …). It: +// 1. Loads the target peer from the local DB. +// 2. Deducts the trust penalty and appends a BehaviorWarning. +// 3. Auto-blacklists and evicts the peer stream when TrustScore ≤ threshold. +// +// oc-discovery does NOT re-emit a PROPALGATION_EVENT: propagation is strictly +// inbound (oc-catalog → oc-discovery). The blacklist takes effect locally at +// the next isPeerKnown() call, and immediately via EvictPeer(). +func handlePeerBehaviorEvent(n *Node, resp tools.NATSResponse) { + var report tools.PeerBehaviorReport + if err := json.Unmarshal(resp.Payload, &report); err != nil { + fmt.Println("handlePeerBehaviorEvent: unmarshal error:", err) + return + } + if report.TargetPeerID == "" { + return + } + + access := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil) + data := access.LoadOne(report.TargetPeerID) + if data.Data == nil { + fmt.Println("handlePeerBehaviorEvent: peer not found:", report.TargetPeerID) + return + } + p := data.ToPeer() + if p == nil { + return + } + // Self-protection: never penalise ourselves. + if self, err := oclib.GetMySelf(); err == nil && self != nil && self.GetID() == p.GetID() { + return + } + + shouldBlacklist := p.ApplyBehaviorReport(report) + if shouldBlacklist && p.Relation != pp_model.BLACKLIST { + p.Relation = pp_model.BLACKLIST + fmt.Printf("handlePeerBehaviorEvent: auto-blacklisting peer %s — reason: %s\n", + p.PeerID, p.BlacklistReason) + // Immediately evict any active stream so the peer can no longer heartbeat. + if n.IndexerService != nil { + n.IndexerService.EvictPeer(p.PeerID) + } + } + + // Persist updated trust score + relation locally. + if updated := access.UpdateOne(p.Serialize(p), p.GetID()); updated.Err != "" { + fmt.Println("handlePeerBehaviorEvent: could not update peer:", updated.Err) + return + } + + // Notify oc-peer (and any other local NATS consumer) of the updated peer record + // via CREATE_RESOURCE so they can synchronise their own state. + if b, err := json.Marshal(p.Serialize(p)); err == nil { + tools.NewNATSCaller().SetNATSPub(tools.CREATE_RESOURCE, tools.NATSResponse{ + FromApp: "oc-discovery", + Datatype: tools.PEER, + Method: int(tools.CREATE_RESOURCE), + Payload: b, + }) + } +} diff --git a/daemons/node/node.go b/daemons/node/node.go index 41ebc6e..9f3d763 100644 --- a/daemons/node/node.go +++ b/daemons/node/node.go @@ -8,6 +8,7 @@ import ( "oc-discovery/conf" "oc-discovery/daemons/node/common" "oc-discovery/daemons/node/indexer" + "oc-discovery/daemons/node/location" "oc-discovery/daemons/node/pubsub" "oc-discovery/daemons/node/stream" "sync" @@ -108,7 +109,11 @@ func InitNode(isNode bool, isIndexer bool) (*Node, error) { return nil } fresh := *node.peerRecord - fresh.PeerRecordPayload.ExpiryDate = time.Now().UTC().Add(2 * time.Minute) + ttl := time.Duration(fresh.TTLSeconds) * time.Second + if ttl <= 0 { + ttl = indexer.DefaultTTLSeconds * time.Second + } + fresh.PeerRecordPayload.ExpiryDate = time.Now().UTC().Add(ttl) payload, _ := json.Marshal(fresh.PeerRecordPayload) fresh.Signature, err = priv.Sign(payload) if err != nil { @@ -170,10 +175,24 @@ func InitNode(isNode bool, isIndexer bool) (*Node, error) { if err != nil || evt.From == node.PeerID.String() { return } + fmt.Println("PUBSUB SendResponse bef peerrece") if p, err := node.GetPeerRecord(ctx, evt.From); err == nil && len(p) > 0 && m["search"] != nil { + fmt.Println("PUBSUB SendResponse af peerrece", m) node.StreamService.SendResponse(p[0], &evt, fmt.Sprintf("%v", m["search"])) } } + node.AllowInbound = func(remotePeer pp.ID, isNew bool) error { + if isNew { + // DB blacklist check: blocks reconnection after EvictPeer + blacklist. + if !node.isPeerKnown(remotePeer) { + return errors.New("peer is blacklisted or unknown") + } + if !node.ConnGuard.Allow() { + return errors.New("connection rate limit exceeded, retry later") + } + } + return nil + } logger.Info().Msg("subscribe to decentralized search flow...") go node.SubscribeToSearch(node.PS, &f) logger.Info().Msg("connect to NATS") @@ -187,6 +206,39 @@ func InitNode(isNode bool, isIndexer bool) (*Node, error) { return node, nil } +// isPeerKnown is the stream-level gate: returns true if pid is allowed. +// Check order (fast → slow): +// 1. In-memory stream records — currently heartbeating to this indexer. +// 2. Local DB by peer_id — known peer, blacklist enforced here. +// 3. DHT /pid/{peerID} → /node/{DID} — registered on any indexer. +// +// ProtocolHeartbeat and ProtocolPublish handlers do NOT call this — they are +// the streams through which a node first makes itself known. +func (d *Node) isPeerKnown(pid pp.ID) bool { + // 1. Fast path: active heartbeat session. + d.StreamMU.RLock() + _, active := d.StreamRecords[common.ProtocolHeartbeat][pid] + d.StreamMU.RUnlock() + if active { + return true + } + // 2. Local DB: known peer (handles blacklist). + access := oclib.NewRequestAdmin(oclib.LibDataEnum(oclib.PEER), nil) + results := access.Search(&dbs.Filters{ + And: map[string][]dbs.Filter{ + "peer_id": {{Operator: dbs.EQUAL.String(), Value: pid.String()}}, + }, + }, pid.String(), false) + for _, item := range results.Data { + p, ok := item.(*peer.Peer) + if !ok || p.PeerID != pid.String() { + continue + } + return p.Relation != peer.BLACKLIST + } + return true +} + func (d *Node) Close() { if d.isIndexer && d.IndexerService != nil { d.IndexerService.Close() @@ -211,11 +263,16 @@ func (d *Node) publishPeerRecord( continue } stream := common.Indexers.Streams.GetPerID(common.ProtocolPublish, ad.Info.ID) + ttl := time.Duration(rec.TTLSeconds) * time.Second + if ttl <= 0 { + ttl = indexer.DefaultTTLSeconds * time.Second + } base := indexer.PeerRecordPayload{ Name: rec.Name, DID: rec.DID, PubKey: rec.PubKey, - ExpiryDate: time.Now().UTC().Add(2 * time.Minute), + TTLSeconds: rec.TTLSeconds, + ExpiryDate: time.Now().UTC().Add(ttl), } payload, _ := json.Marshal(base) rec.PeerRecordPayload = base @@ -377,13 +434,12 @@ func (d *Node) claimInfo( } now := time.Now().UTC() - expiry := now.Add(150 * time.Second) - pRec := indexer.PeerRecordPayload{ Name: name, DID: did, // REAL PEER ID PubKey: pubBytes, - ExpiryDate: expiry, + TTLSeconds: indexer.DefaultTTLSeconds, + ExpiryDate: now.Add(indexer.DefaultTTLSeconds * time.Second), } d.PeerID = d.Host.ID() payload, _ := json.Marshal(pRec) @@ -400,6 +456,7 @@ func (d *Node) claimInfo( rec.StreamAddress = "/ip4/" + conf.GetConfig().Hostname + "/tcp/" + fmt.Sprintf("%v", conf.GetConfig().NodeEndpointPort) + "/p2p/" + rec.PeerID rec.NATSAddress = oclib.GetConfig().NATSUrl rec.WalletAddress = "my-wallet" + rec.Location = location.Geolocate(conf.GetConfig().LocationGranularity) if err := d.publishPeerRecord(rec); err != nil { return nil, err @@ -424,6 +481,55 @@ func (d *Node) claimInfo( } } +// DeleteRecord broadcasts a signed tombstone to all connected indexers, signalling +// that this node is voluntarily leaving the network. +// Each indexer verifies the signature, stores the tombstone in the DHT (replacing +// the live record), and evicts the peer from its active pool. +// After a successful call, d.peerRecord is set to nil. +func (d *Node) DeleteRecord() error { + if d.peerRecord == nil { + return errors.New("no peer record to delete") + } + priv, err := tools.LoadKeyFromFilePrivate() + if err != nil { + return err + } + pubBytes, err := crypto.MarshalPublicKey(priv.GetPublic()) + if err != nil { + return err + } + tp := indexer.TombstonePayload{ + DID: d.peerRecord.DID, + PeerID: d.PeerID.String(), + DeletedAt: time.Now().UTC(), + } + payloadBytes, _ := json.Marshal(tp) + sig, err := priv.Sign(payloadBytes) + if err != nil { + return err + } + ts := &indexer.TombstoneRecord{ + TombstonePayload: tp, + PubKey: pubBytes, + Tombstone: true, + Signature: sig, + } + data, _ := json.Marshal(ts) + for _, ad := range common.Indexers.GetAddrs() { + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + s, err := d.Host.NewStream(ctx, ad.Info.ID, common.ProtocolDelete) + cancel() + if err != nil { + continue + } + s.SetDeadline(time.Now().Add(5 * time.Second)) + s.Write(data) + s.Close() + } + d.peerRecord = nil + return nil +} + /* TODO: - Le booking est un flow neuf décentralisé : diff --git a/daemons/node/pubsub/publish.go b/daemons/node/pubsub/publish.go index e820570..24ae373 100644 --- a/daemons/node/pubsub/publish.go +++ b/daemons/node/pubsub/publish.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "errors" + "fmt" "oc-discovery/conf" "oc-discovery/daemons/node/common" "oc-discovery/daemons/node/stream" @@ -46,6 +47,7 @@ func (ps *PubSubService) SearchPublishEvent( // The returned composite key is used as User in the GossipSub event so that // remote peers echo it back unchanged, allowing IsActive to validate results. searchKey := ps.StreamService.ResourceSearches.Register(user, cancel, idleTimeout) + fmt.Println("PUBLISH ON PUBSUB", common.TopicPubSubSearch, searchKey) return ps.publishEvent(searchCtx, dt, tools.PB_SEARCH, common.TopicPubSubSearch, searchKey, b) default: return errors.New("no type of research found") diff --git a/daemons/node/stream/handler.go b/daemons/node/stream/handler.go index c4aee62..988a231 100644 --- a/daemons/node/stream/handler.go +++ b/daemons/node/stream/handler.go @@ -35,6 +35,7 @@ func (ps *StreamService) handleEvent(protocol string, evt *common.Event) error { } }*/ if protocol == ProtocolSendPlanner { + fmt.Println("sendPlanner", evt) if err := ps.sendPlanner(evt); err != nil { return err } diff --git a/daemons/node/stream/publish.go b/daemons/node/stream/publish.go index db3d932..deb6f20 100644 --- a/daemons/node/stream/publish.go +++ b/daemons/node/stream/publish.go @@ -34,7 +34,7 @@ func (ps *StreamService) PublishesCommon(dt *tools.DataType, user string, groups } func (ps *StreamService) PublishCommon(dt *tools.DataType, user string, groups []string, toPeerID string, proto protocol.ID, resource []byte) (*common.Stream, error) { - fmt.Println("PublishCommon") + fmt.Println("PublishCommon", toPeerID) if toPeerID == ps.Key.String() { fmt.Println("Can't send to ourself !") return nil, errors.New("Can't send to ourself !") @@ -127,6 +127,7 @@ func (s *StreamService) write( } // should create a very temp stream if s.Streams, err = common.TempStream(s.Host, *peerID, proto, did, s.Streams, pts, &s.Mu); err != nil { + fmt.Println("TempStream", err) return nil, errors.New("no stream available for protocol " + fmt.Sprintf("%v", proto) + " from PID " + peerID.ID.String()) } diff --git a/go.mod b/go.mod index 36be680..470eb40 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module oc-discovery go 1.25.0 require ( - cloud.o-forge.io/core/oc-lib v0.0.0-20260318143822-5976795d4406 + cloud.o-forge.io/core/oc-lib v0.0.0-20260331181901-f3b5a54545ee github.com/ipfs/go-cid v0.6.0 github.com/libp2p/go-libp2p v0.47.0 github.com/libp2p/go-libp2p-record v0.3.1 @@ -174,4 +174,4 @@ require ( golang.org/x/text v0.33.0 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect -) +) \ No newline at end of file diff --git a/go.sum b/go.sum index 7801dea..6401f99 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,12 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20260312141150-a335c905b3a2 h1:DuB6SDThFVJVQ cloud.o-forge.io/core/oc-lib v0.0.0-20260312141150-a335c905b3a2/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA= cloud.o-forge.io/core/oc-lib v0.0.0-20260318143822-5976795d4406 h1:FN1EtRWn228JprAbnY5K863Fzj+SzMqQtKRtwvECbLw= cloud.o-forge.io/core/oc-lib v0.0.0-20260318143822-5976795d4406/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA= +cloud.o-forge.io/core/oc-lib v0.0.0-20260325092016-4580200e8057 h1:pR+lZzcCWZ0kke2r2xXa7OpdbLpPW3gZSWZ8gGHh274= +cloud.o-forge.io/core/oc-lib v0.0.0-20260325092016-4580200e8057/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA= +cloud.o-forge.io/core/oc-lib v0.0.0-20260331144112-c0722483b86c h1:wTIridvhud8zwMsMkwxgrQ+j+6UAo2IHDr3N80AA6zc= +cloud.o-forge.io/core/oc-lib v0.0.0-20260331144112-c0722483b86c/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA= +cloud.o-forge.io/core/oc-lib v0.0.0-20260331181901-f3b5a54545ee h1:iJ1kgMbBOBIHwS4jHOVB5zFqOd7J9ZlweQBuchnmvT0= +cloud.o-forge.io/core/oc-lib v0.0.0-20260331181901-f3b5a54545ee/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= diff --git a/logs.txt b/logs.txt index cbe884a..71436c6 100644 --- a/logs.txt +++ b/logs.txt @@ -1 +1,865 @@ -{"level":"info","time":"2026-03-11T08:44:42Z","message":"Config file found : /etc/oc/discovery.json"} {"level":"info","time":"2026-03-11T08:44:42Z","message":"Connecting tomongodb://mongo:27017/"} {"level":"info","time":"2026-03-11T08:44:42Z","message":"Connecting mongo client to db DC_myDC"} {"level":"info","time":"2026-03-11T08:44:42Z","message":"Database is READY"} {"level":"info","time":"2026-03-11T08:44:42Z","message":"Config file found : /etc/oc/discovery.json"} {"level":"info","time":"2026-03-11T08:44:42Z","message":"retrieving private key..."} ./pem/private.pem {"level":"info","time":"2026-03-11T08:44:42Z","message":"retrieving psk file..."} {"level":"info","time":"2026-03-11T08:44:42Z","message":"open a host..."} {"level":"info","time":"2026-03-11T08:44:42Z","message":"Host open on 12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u"} {"level":"info","time":"2026-03-11T08:44:42Z","message":"generate opencloud indexer..."} {"level":"info","time":"2026-03-11T08:44:42Z","message":"open indexer mode..."} {"level":"info","time":"2026-03-11T08:44:42Z","message":"connect to indexers as strict indexer..."} {"level":"info","time":"2026-03-11T08:44:42Z","message":"subscribe to decentralized search flow as strict indexer..."} {"level":"info","time":"2026-03-11T08:44:42Z","message":"init distributed name index..."} {"level":"info","proto":"/opencloud/heartbeat/1.0","peers":1,"time":"2026-03-11T08:44:42Z","message":"heartbeat started"} {"level":"info","time":"2026-03-11T08:44:42Z","message":"Init Node Handler"} {"level":"warn","error":"failed to find any peer in table","time":"2026-03-11T08:44:42Z","message":"[dht] Provide failed"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:44:44Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","need":9,"time":"2026-03-11T08:44:47Z","message":"[dht] proactive indexer discovery from DHT"} {"level":"info","need":9,"time":"2026-03-11T08:44:47Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:44:47Z","message":"[dht] indexer discovery complete"} {"level":"info","time":"2026-03-11T08:44:48Z","message":"A new node is subscribed : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:44:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:44:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:44:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:44:49Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:44:55Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:00Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:45:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:45:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:45:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:45:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:45:02Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:45:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:45:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:45:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:45:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:45:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:45:02Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:45:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:45:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:45:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:45:02Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:45:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:45:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:45:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:45:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:45:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:45:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:45:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:45:02Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:45:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:45:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:45:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:45:02Z","message":"[consensus] scoring candidates"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:02Z","message":"witness report"} {"level":"info","gap":9,"time":"2026-03-11T08:45:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:45:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:45:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:05Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:45:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:45:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:45:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:45:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:10Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","found":1,"time":"2026-03-11T08:45:12Z","message":"[dht] indexer discovery complete"} {"level":"info","cached":1,"time":"2026-03-11T08:45:12Z","message":"[dht] indexer suggestion cache refreshed"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:15Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:20Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:45:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:45:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:45:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:45:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:45:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:45:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:45:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:45:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:45:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:45:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:45:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:45:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:45:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","found":1,"time":"2026-03-11T08:45:22Z","message":"[dht] indexer discovery complete"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:45:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:45:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:22Z","message":"witness report"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:45:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:45:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:45:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:45:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:45:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:45:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:45:22Z","message":"[dht] indexer discovery complete"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:45:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:45:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:45:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:22Z","message":"witness report"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:45:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:45:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:45:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:45:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:25Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:45:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:45:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:45:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:45:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:30Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:35Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:40Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:45:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:45:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:45:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:45:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:45:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:45:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:45:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:45:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:45:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:45:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:45:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:45:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:45Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:45:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:45:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:45:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:45:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:50Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:45:55Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:00Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:46:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:46:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:46:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:46:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:46:02Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:46:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:46:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:46:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:46:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:46:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:46:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:46:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:46:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:46:02Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:46:02Z","message":"[dht] indexer discovery complete"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:46:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:46:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:46:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:46:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:46:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:46:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:46:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:46:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:05Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:46:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:46:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:46:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:46:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:10Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:15Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:20Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:46:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:46:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:46:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:46:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:46:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:46:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:46:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:46:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:46:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:46:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:46:22Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:46:22Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:46:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:46:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:46:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:46:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:46:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:46:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:46:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:46:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:46:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:46:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:46:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:25Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:46:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:46:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:46:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:46:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:30Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:35Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:40Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:46:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:46:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:46:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:46:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:46:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:46:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:46:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:46:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:46:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:46:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:46:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:46:42Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:46:42Z","message":"witness report"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:45Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:46:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:46:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:46:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:46:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:50Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:46:55Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:00Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","found":1,"time":"2026-03-11T08:47:02Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"pool state after removal"} {"level":"info","found":1,"time":"2026-03-11T08:47:02Z","message":"[dht] indexer discovery complete"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:47:02Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","found":1,"time":"2026-03-11T08:47:02Z","message":"[dht] indexer discovery complete"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:47:02Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:47:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:05Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:47:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:47:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:47:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:47:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:10Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","found":1,"time":"2026-03-11T08:47:12Z","message":"[dht] indexer discovery complete"} {"level":"info","cached":1,"time":"2026-03-11T08:47:12Z","message":"[dht] indexer suggestion cache refreshed"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:15Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:20Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:47:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:47:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:25Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:47:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:47:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:47:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:47:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:30Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:35Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:42Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:42Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:47:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:47:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:47:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:47:42Z","message":"[dht] indexer discovery complete"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","found":1,"time":"2026-03-11T08:47:42Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:47:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","found":1,"time":"2026-03-11T08:47:42Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:47:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:47:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:47:42Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:47:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:47:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:47:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:47:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:47:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:47:42Z","message":"[dht] indexer discovery complete"} {"level":"info","time":"2026-03-11T08:47:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:47:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:47:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:47:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:47:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:02Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:48:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:48:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:48:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:48:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:48:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:48:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:48:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:48:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:48:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:48:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:07Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:48:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:48:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:48:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:48:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:12Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:17Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:22Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:48:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:48:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:48:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:48:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:48:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:48:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:48:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:48:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:48:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:48:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:48:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:48:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:48:22Z","message":"[dht] indexer discovery complete"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:48:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:48:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:48:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:48:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:48:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:48:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:48:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:48:22Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:48:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:48:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:48:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:48:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:48:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:48:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:48:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:48:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:22Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:48:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:27Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:48:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:48:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:48:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:48:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:32Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:37Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:48:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:48:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:48:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:48:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:48:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:48:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:48:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:48:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:48:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:48:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:48:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:42Z","message":"witness report"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:48:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:48:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:48:42Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:48:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:48:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:48:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:48:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:48:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:48:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:48:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:48:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:42Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:47Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:48:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:48:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:48:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:48:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:52Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:48:57Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:49:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:49:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:49:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:49:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:49:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:49:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:49:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:49:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:49:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:49:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:02Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:07Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:49:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:49:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:49:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:49:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","found":1,"time":"2026-03-11T08:49:12Z","message":"[dht] indexer discovery complete"} {"level":"info","cached":1,"time":"2026-03-11T08:49:12Z","message":"[dht] indexer suggestion cache refreshed"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:12Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:17Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:49:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:49:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:49:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:49:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:49:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:49:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:49:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:49:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:49:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:49:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:49:22Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:49:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:49:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:49:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:49:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:49:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:49:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:49:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:49:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:49:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:22Z","message":"witness report"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:49:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:49:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:49:22Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:49:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:49:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:49:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:49:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:49:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:49:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:49:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:22Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:27Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:49:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:49:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:49:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:49:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:32Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:37Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:49:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:49:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:49:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:49:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:49:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:49:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:49:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:49:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:49:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:49:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:49:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:49:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:49:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:49:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:49:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:49:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:49:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","found":1,"time":"2026-03-11T08:49:42Z","message":"[dht] indexer discovery complete"} {"level":"info","candidates":1,"time":"2026-03-11T08:49:42Z","message":"[consensus] scoring candidates"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:42Z","message":"witness report"} {"level":"info","gap":9,"time":"2026-03-11T08:49:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:49:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:49:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:49:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:49:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:49:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:49:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:49:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:42Z","message":"witness report"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:49:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:49:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:49:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:49:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:49:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:43Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:48Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:49:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:49:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:49:48Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:49:48Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:53Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:49:58Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:50:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:50:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:50:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:50:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:50:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:50:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:50:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:50:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:50:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:02Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:50:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:03Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:08Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:50:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:50:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:50:08Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:50:08Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:13Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:18Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:50:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:50:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:50:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:50:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:50:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:50:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:50:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:50:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:50:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:22Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:50:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:23Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:28Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:50:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:50:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"info","time":"2026-03-11T08:50:28Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:50:28Z","message":"REFRESH PutValue /node/06011548-57b3-4cc4-990e-c2ced6bf40ae"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:33Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","error":"stream reset: stream reset: connection closed: read tcp4 172.40.0.2:4002->172.40.0.4:4004: read: connection reset by peer","time":"2026-03-11T08:50:34Z","message":"heartbeat stream terminated, closing handler"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","peer":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","time":"2026-03-11T08:50:40Z","message":"[pool] inbound peer added as indexer candidate"} {"level":"info","time":"2026-03-11T08:50:40Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","time":"2026-03-11T08:50:40Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:50:40Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:50:40Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","peer":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:50:40Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":2,"need":8,"time":"2026-03-11T08:50:40Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:50:40Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:50:40Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:50:40Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:50:40Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":2,"need":8,"time":"2026-03-11T08:50:40Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:50:40Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:40Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:50:40Z","message":"[consensus] scoring candidates"} {"level":"info","candidates":1,"time":"2026-03-11T08:50:40Z","message":"[consensus] scoring candidates"} {"level":"info","gap":8,"time":"2026-03-11T08:50:40Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":8,"time":"2026-03-11T08:50:40Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","gap":9,"time":"2026-03-11T08:50:40Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:50:40Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:50:40Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:50:40Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:50:40Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:50:40Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:40Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:50:40Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:50:40Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:50:40Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:40Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:50:40Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:50:40Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:50:40Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:50:40Z","message":"[dht] indexer discovery complete"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:50:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:50:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:50:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:50:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:50:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:50:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:50:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:50:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:50:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:50:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:50:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:50:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:50:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:50:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:50:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:50:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:50:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:50:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:50:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:50:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:50:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:50:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:50:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:50:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:50:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:50:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:50:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:50:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:50:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:50:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:50:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:50:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:43Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:48Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:53Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:50:55Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:50:55Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:50:58Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:51:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:51:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:51:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:51:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:51:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:51:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:51:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:51:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:51:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:02Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:51:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:03Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:08Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","found":1,"time":"2026-03-11T08:51:12Z","message":"[dht] indexer discovery complete"} {"level":"info","cached":1,"time":"2026-03-11T08:51:12Z","message":"[dht] indexer suggestion cache refreshed"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:13Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:51:15Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:51:15Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:18Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:51:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:51:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:51:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:51:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:51:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:51:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:51:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:51:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:51:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:51:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:23Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:28Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:33Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:51:35Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:51:35Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:51:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:51:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:51:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:51:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:51:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:51:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:51:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:51:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:51:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:51:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:51:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:51:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:51:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:51:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:51:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:51:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:51:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","found":1,"time":"2026-03-11T08:51:42Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:51:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:51:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:51:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:51:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:51:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:51:42Z","message":"[dht] indexer discovery complete"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:51:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:51:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:51:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:51:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:51:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:51:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:51:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:51:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:51:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:51:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:51:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:51:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:51:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:51:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:51:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:51:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:51:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:51:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:43Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:48Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:53Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:51:55Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:51:55Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:51:58Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:52:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:52:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:52:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:52:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:52:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:52:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:52:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:52:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:52:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:52:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:52:02Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:52:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:03Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:08Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:13Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:52:15Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:52:15Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:18Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:52:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:52:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:52:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:52:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:52:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:52:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:52:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:52:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:52:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:52:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:52:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:52:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:23Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:28Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:33Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:52:35Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:52:35Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:52:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:52:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:52:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:52:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:52:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:52:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:52:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:52:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:52:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:52:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:52:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:52:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:52:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:52:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:52:42Z","message":"[dht] indexer discovery complete"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:52:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:52:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:52:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:52:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:52:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:52:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:52:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:52:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:52:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:52:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:52:42Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:52:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:52:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:52:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:52:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:52:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:52:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:52:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:52:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:52:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:43Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:48Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:53Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:52:55Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:52:55Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:52:58Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:53:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:53:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:53:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:53:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:53:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:53:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:53:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:53:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:53:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:53:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:03Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:08Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","found":1,"time":"2026-03-11T08:53:12Z","message":"[dht] indexer discovery complete"} {"level":"info","cached":1,"time":"2026-03-11T08:53:12Z","message":"[dht] indexer suggestion cache refreshed"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:13Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:53:15Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:53:15Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:18Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:53:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:53:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:53:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:53:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:53:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:53:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","found":1,"time":"2026-03-11T08:53:22Z","message":"[dht] indexer discovery complete"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:53:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:53:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:53:22Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:53:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:53:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:53:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:53:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:53:22Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:53:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:53:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:53:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:53:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:53:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:53:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:53:22Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:53:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:53:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:53:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:53:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:53:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:23Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:28Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:33Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:53:35Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:53:35Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:53:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:53:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:53:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:53:42Z","message":"[dht] indexer advertised in DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:53:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:53:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:53:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:53:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:53:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:53:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:53:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:53:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:43Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:48Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:53Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:53:55Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:53:55Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:53:58Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:54:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:54:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:54:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:54:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:54:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:54:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:54:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:54:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:54:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:54:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:54:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:54:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:03Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:08Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:13Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:54:15Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:54:15Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:18Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:54:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:54:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:54:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:54:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:54:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:54:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:54:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:54:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:54:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:54:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:54:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:54:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:54:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:54:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","found":1,"time":"2026-03-11T08:54:22Z","message":"[dht] indexer discovery complete"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:54:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:54:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:54:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:54:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:54:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:54:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:54:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:54:22Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:54:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:54:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:54:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:54:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:54:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:54:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:54:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:54:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:54:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:54:22Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:54:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:23Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:28Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:33Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:54:35Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:54:35Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:54:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:54:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:54:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:54:42Z","message":"[dht] indexer advertised in DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:54:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:54:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:54:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:54:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:54:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:54:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:54:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:54:42Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:54:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:43Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:48Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:53Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:54:55Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:54:55Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:54:58Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:55:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:55:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:55:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:55:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:55:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:55:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:55:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:55:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:55:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:55:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:03Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:08Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","found":1,"time":"2026-03-11T08:55:12Z","message":"[dht] indexer discovery complete"} {"level":"info","cached":1,"time":"2026-03-11T08:55:12Z","message":"[dht] indexer suggestion cache refreshed"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:13Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:55:15Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:55:15Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:18Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:55:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:55:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:55:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:55:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:55:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:55:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:55:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:55:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:55:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:55:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:23Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:28Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:33Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:55:35Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:55:35Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:55:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:55:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:55:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:55:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:55:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:55:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:55:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:55:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:55:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:55:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:55:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:55:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:55:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:55:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:55:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:55:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:55:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:42Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:55:42Z","message":"[dht] indexer discovery complete"} {"level":"info","candidates":1,"time":"2026-03-11T08:55:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:55:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:55:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:55:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","found":1,"time":"2026-03-11T08:55:42Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:42Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:55:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:55:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:55:42Z","message":"[dht] indexer discovery complete"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:55:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:55:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:55:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:55:42Z","message":"[consensus] scoring candidates"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:55:42Z","message":"witness report"} {"level":"info","gap":9,"time":"2026-03-11T08:55:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:55:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:55:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:43Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:48Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:53Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:55:55Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:55:55Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:55:58Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:56:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:56:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:56:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:56:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:56:02Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:56:02Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:56:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:56:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:56:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:56:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:56:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:56:02Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:56:02Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:56:02Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:56:02Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:56:02Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:56:02Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:56:02Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:56:02Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:56:02Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:56:02Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:56:02Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:56:02Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:03Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:08Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:13Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:56:15Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:56:15Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:18Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:56:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:56:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:56:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:56:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:56:22Z","message":"pool state after removal"} {"level":"info","time":"2026-03-11T08:56:22Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:56:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:56:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:56:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:56:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:56:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:56:22Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:56:22Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"info","found":1,"time":"2026-03-11T08:56:22Z","message":"[dht] indexer discovery complete"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:56:22Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:56:22Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:56:22Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:56:22Z","message":"[consensus] starting indexer candidate consensus"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:56:22Z","message":"witness report"} {"level":"info","candidates":1,"time":"2026-03-11T08:56:22Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:56:22Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:56:22Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"info","found":1,"time":"2026-03-11T08:56:22Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:23Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:28Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:33Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:56:35Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:56:35Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:38Z","message":"[gater] peer not found in DHT, rejecting inbound"} ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 ACTUALLY RELATED INDEXERS map[12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 1 {"level":"info","time":"2026-03-11T08:56:42Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} {"level":"info","fill_rate":0.002,"time":"2026-03-11T08:56:42Z","message":"[dht] indexer advertised in DHT"} {"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-03-11T08:56:42Z","message":"added suggested indexers from heartbeat response"} {"level":"info","time":"2026-03-11T08:56:42Z","message":"nudge received, heartbeating new indexers immediately"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:56:42Z","message":"witness report"} {"level":"info","peer":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","proto":"/opencloud/heartbeat/1.0","time":"2026-03-11T08:56:42Z","message":"heartbeat failed, removing peer from pool"} {"level":"info","remaining":1,"need":9,"time":"2026-03-11T08:56:42Z","message":"pool state after removal"} {"level":"info","voters":1,"need":9,"time":"2026-03-11T08:56:42Z","message":"[consensus] starting indexer candidate consensus"} {"level":"info","candidates":1,"time":"2026-03-11T08:56:42Z","message":"[consensus] scoring candidates"} {"level":"info","gap":9,"time":"2026-03-11T08:56:42Z","message":"[consensus] gap after consensus, falling back to DHT"} {"level":"info","need":9,"time":"2026-03-11T08:56:42Z","message":"[dht] replenishing indexer pool from DHT"} {"level":"debug","witness":"12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN","bornAt_ok":false,"fill_ok":true,"time":"2026-03-11T08:56:42Z","message":"witness report"} {"level":"info","found":1,"time":"2026-03-11T08:56:42Z","message":"[dht] indexer discovery complete"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:43Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:48Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:54Z","message":"[gater] peer not found in DHT, rejecting inbound"} {"level":"info","time":"2026-03-11T08:56:55Z","message":"A new node is updated : 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} {"level":"info","time":"2026-03-11T08:56:55Z","message":"REFRESH PutValue /node/f72b7716-3818-4666-a738-7542358d3a63"} {"level":"warn","peer":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","time":"2026-03-11T08:56:59Z","message":"[gater] peer not found in DHT, rejecting inbound"} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"Config file found : /etc/oc/discovery.json"} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"Connecting tomongodb://mongo:27017/"} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"Connecting mongo client to db DC_myDC"} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"Database is READY"} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"Config file found : /etc/oc/discovery.json"} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"retrieving private key..."} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"retrieving psk file..."} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"open a host..."} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"Host open on 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN"} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"generate opencloud node..."} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"connect to indexers..."} +{"level":"info","time":"2026-04-08T06:17:16Z","message":"claims my node..."} +{"level":"info","proto":"/opencloud/heartbeat/1.0","peers":1,"time":"2026-04-08T06:17:16Z","message":"heartbeat started"} +[location] granularity=2 raw=(43.6046,1.4451) fuzzed=(43.5226,-0.7667) +{"level":"info","time":"2026-04-08T06:17:17Z","message":"run garbage collector..."} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"connect to partners..."} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"SetStreamHandler /opencloud/resource/update/1.0"} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"SetStreamHandler /opencloud/resource/delete/1.0"} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"SetStreamHandler /opencloud/resource/create/1.0"} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"subscribe to decentralized search flow..."} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"connect to NATS"} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"Node is actually running."} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"Listening to propalgation_event"} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"Listening to peer_behavior_event"} +Published on create_resource +{"level":"info","time":"2026-04-08T06:17:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:21Z","message":"[dht] node DHT client ready"} +{"level":"info","need":4,"time":"2026-04-08T06:17:21Z","message":"[dht] proactive indexer discovery from DHT"} +{"level":"info","need":4,"time":"2026-04-08T06:17:21Z","message":"[dht] replenishing indexer pool from DHT"} +{"level":"info","found":0,"time":"2026-04-08T06:17:21Z","message":"[dht] indexer discovery complete"} +{"level":"warn","time":"2026-04-08T06:17:21Z","message":"[dht] no indexers found in DHT for replenishment"} +{"level":"info","time":"2026-04-08T06:17:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:28Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:28Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:31Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:31Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:33Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:33Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:33Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:33Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:36Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:36Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:36Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:36Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:36Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu"} +{"level":"info","added":1,"from":"12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu","time":"2026-04-08T06:17:36Z","message":"added suggested indexers from heartbeat response"} +{"level":"info","time":"2026-04-08T06:17:36Z","message":"nudge received, heartbeating new indexers immediately"} +{"level":"info","time":"2026-04-08T06:17:36Z","message":"New Stream engaged as Heartbeat /opencloud/heartbeat/1.0 12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:17:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:17:36Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:17:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:46Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:46Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:46Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:46Z","message":"Catching propalgation event... oc-scheduler - "} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:17:51Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:51Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:51Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:51Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:56Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:56Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:17:56Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:17:57Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:17:57Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:02Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:02Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:02Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:02Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:07Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:07Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:07Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:07Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:12Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:12Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:12Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:12Z","message":"Catching propalgation event... oc-scheduler - "} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:18:16Z","message":"witness report"} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:18:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:18:36Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:18:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:42Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:42Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:42Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:42Z","message":"Catching propalgation event... oc-scheduler - "} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:18:47Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:47Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:47Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:47Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:52Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:52Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:53Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:53Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:18:56Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:18:58Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:58Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:58Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:18:58Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:03Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:03Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:03Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:03Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:08Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:08Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:08Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:08Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:13Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:13Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:13Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:13Z","message":"Catching propalgation event... oc-scheduler - "} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:19:16Z","message":"witness report"} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:19:18Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:18Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:18Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:18Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629158 [] [23 185 233 217 252 222 167 147 185 9 46 210 169 26 129 42 84 220 137 75 23 42 46 164 85 169 193 238 54 52 179 3 4 189 34 95 188 69 145 100 214 183 69 106 248 20 58 176 61 17 208 250 147 187 154 221 86 213 99 74 6 127 10 3]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629158 +{"level":"info","time":"2026-04-08T06:19:23Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:23Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:23Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:23Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629163 [] [148 228 35 212 146 117 198 240 248 47 53 28 217 242 84 16 53 77 141 38 6 249 197 179 135 35 145 140 151 72 185 169 54 204 188 6 20 164 204 214 121 157 67 117 30 95 109 55 108 249 174 141 68 222 186 135 191 90 60 187 194 30 172 5]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629163 +{"level":"info","time":"2026-04-08T06:19:28Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:28Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:28Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:28Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629168 [] [48 136 252 209 83 105 251 34 193 50 235 55 55 191 89 233 40 236 174 129 200 65 63 74 57 229 66 155 94 151 91 120 115 163 230 136 81 161 88 35 170 229 126 33 45 134 79 111 7 114 18 209 200 103 43 75 18 170 194 108 197 253 112 13]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629168 +{"level":"info","time":"2026-04-08T06:19:31Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:31Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629171 [] [216 81 114 23 19 203 244 153 11 214 139 99 54 104 11 30 130 152 134 82 91 69 227 136 79 160 150 92 56 191 14 150 252 100 235 150 93 199 139 179 59 97 131 99 88 55 131 145 246 243 235 31 55 41 42 32 215 75 15 63 31 131 73 8]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629171 +{"level":"info","time":"2026-04-08T06:19:33Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:33Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:33Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:33Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629173 [] [92 242 214 250 125 244 127 81 229 41 112 244 67 188 187 216 10 233 184 185 231 147 125 84 105 192 97 1 65 231 133 104 34 159 166 149 45 186 190 51 117 68 231 163 40 0 58 162 94 88 207 37 206 45 66 178 118 149 54 78 57 1 3 6]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629173 +{"level":"info","time":"2026-04-08T06:19:36Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:36Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:36Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:36Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629176 [] [54 239 156 204 25 72 110 223 95 214 112 163 168 169 130 166 57 102 104 232 85 72 119 22 58 182 122 44 2 157 192 190 89 249 35 93 183 96 120 183 23 88 104 83 77 93 3 233 50 231 190 217 162 109 134 212 198 85 206 252 139 156 218 8]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629176 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:19:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:19:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:19:36Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:19:38Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:38Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:41Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629181 [] [127 158 58 208 104 78 156 212 40 94 58 139 31 6 199 56 174 149 133 246 174 53 58 21 177 70 222 188 111 252 100 238 136 147 1 46 4 158 101 6 80 113 125 136 135 228 149 240 212 154 152 92 37 146 163 141 150 95 133 35 62 170 180 9]} +sendPlanner 0 +{"level":"info","time":"2026-04-08T06:19:41Z","message":"Catching propalgation event... oc-scheduler - "} +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629181 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:19:46Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:46Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:47Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:47Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629187 [] [151 223 225 231 72 46 42 81 219 141 98 116 110 73 2 184 17 222 237 90 217 214 53 151 144 3 88 16 241 119 18 173 3 150 226 167 148 111 83 87 225 120 78 69 38 135 253 164 97 128 66 87 219 207 190 235 196 92 50 89 116 246 17 5]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629187 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:19:52Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:52Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:52Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:52Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629192 [] [111 224 143 159 179 190 133 150 240 14 180 172 240 228 53 86 220 117 5 151 202 186 17 35 105 82 21 231 133 155 7 170 96 134 221 61 23 6 146 1 75 253 32 58 126 98 140 4 246 87 24 230 62 83 114 168 163 74 152 53 217 201 229 14]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629192 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:19:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:19:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:19:56Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:19:57Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:57Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:57Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:19:57Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629197 [] [59 20 147 21 143 23 216 117 191 182 95 226 35 78 36 207 4 147 88 202 120 62 22 123 80 205 240 83 239 70 176 59 211 78 229 145 234 44 172 196 61 193 28 121 145 215 214 169 165 82 57 233 164 87 239 32 6 86 196 18 218 74 227 14]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629197 +{"level":"info","time":"2026-04-08T06:20:02Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:02Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:02Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:02Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629202 [] [54 107 90 122 30 116 226 174 104 100 37 235 211 254 239 142 225 51 128 143 22 29 195 114 125 40 197 196 131 65 67 63 62 101 56 144 212 113 33 95 153 254 238 194 71 3 99 121 190 135 33 167 83 49 137 168 113 133 181 155 63 214 176 6]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629202 +{"level":"info","time":"2026-04-08T06:20:07Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:07Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:07Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629207 [] [57 134 104 85 240 207 200 242 9 59 251 115 73 171 5 39 138 118 184 194 201 211 132 32 254 74 163 221 220 79 102 201 107 3 87 49 213 235 164 31 174 104 209 246 196 64 85 15 248 99 69 165 153 175 40 77 115 61 129 112 36 53 47 13]} +sendPlanner 0 +{"level":"info","time":"2026-04-08T06:20:07Z","message":"Catching propalgation event... oc-scheduler - "} +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629207 +{"level":"info","time":"2026-04-08T06:20:12Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:12Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:12Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:12Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629212 [] [215 117 62 147 102 252 227 9 93 160 68 16 169 186 89 164 56 59 42 225 102 42 57 242 128 46 18 182 109 94 140 95 167 254 240 34 108 229 225 171 28 17 34 113 122 164 121 212 83 227 121 8 11 165 150 5 227 179 156 60 185 75 67 7]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629212 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:16Z","message":"witness report"} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:20:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:17Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629217 [] [122 210 113 143 218 90 178 12 159 83 141 245 210 208 198 0 73 80 127 229 163 221 103 110 98 102 228 198 152 201 57 180 167 246 85 75 85 203 223 139 131 99 54 151 42 36 243 202 241 32 178 202 63 198 104 92 210 26 248 230 115 28 120 6]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629217 +{"level":"info","time":"2026-04-08T06:20:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:22Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +{"level":"info","time":"2026-04-08T06:20:22Z","message":"Catching propalgation event... oc-scheduler - "} +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629222 [] [98 74 235 201 133 101 129 234 143 83 255 18 141 176 169 45 134 208 161 116 31 110 66 138 163 128 202 143 80 171 55 4 159 83 100 155 218 40 66 102 245 17 165 102 131 206 245 95 121 136 129 109 98 175 54 101 67 18 229 19 255 170 236 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629222 +{"level":"info","time":"2026-04-08T06:20:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:27Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629227 [] [156 122 36 54 136 116 3 84 110 253 41 115 42 125 114 202 247 54 2 16 150 129 247 202 165 131 236 228 103 244 233 202 31 61 247 47 108 182 244 136 187 187 51 2 2 212 167 180 28 138 87 1 255 253 5 52 40 206 211 89 171 106 46 8]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629227 +{"level":"info","time":"2026-04-08T06:20:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:32Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629232 [] [27 218 207 190 133 114 43 118 66 246 46 131 169 53 78 44 118 11 115 146 75 78 192 70 20 132 177 126 116 41 4 82 91 182 92 95 157 252 39 218 96 59 222 182 159 171 151 93 63 254 212 244 243 149 248 234 177 108 160 163 77 179 99 4]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629232 +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:36Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:20:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:37Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629237 [] [66 73 1 165 227 98 102 241 100 114 13 76 157 152 186 255 91 225 92 239 119 226 131 110 63 17 118 163 218 216 82 77 159 127 112 189 232 58 185 236 186 247 44 208 20 57 214 123 0 44 238 132 124 168 240 210 43 74 29 58 252 224 140 15]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629237 +{"level":"info","time":"2026-04-08T06:20:42Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:42Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:43Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:43Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629243 [] [187 179 204 44 46 42 148 223 7 92 219 164 86 92 179 130 108 225 153 122 216 227 255 58 75 154 36 41 149 225 159 57 71 142 104 244 194 61 123 52 129 98 103 234 232 42 181 251 19 101 190 168 128 101 227 32 135 240 54 16 194 185 153 10]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629243 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:20:48Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:48Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:48Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:48Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629248 [] [210 69 3 179 113 27 162 199 166 128 158 136 142 219 138 230 173 237 41 106 245 196 147 23 14 246 101 102 117 21 146 63 205 112 83 92 255 2 178 177 120 187 223 76 203 219 106 93 152 155 143 42 128 210 49 156 116 68 142 33 156 134 72 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629248 +{"level":"info","time":"2026-04-08T06:20:53Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:53Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:53Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:53Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629253 [] [98 113 231 230 60 162 99 109 134 79 56 165 55 34 199 155 193 206 14 147 77 204 30 202 204 132 175 84 98 196 126 38 127 234 144 60 176 102 123 90 23 253 63 94 102 85 33 245 228 39 49 203 81 105 59 58 78 215 9 146 196 129 214 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629253 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:20:56Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:20:58Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:58Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:58Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:20:58Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629258 [] [162 228 163 147 196 70 190 233 194 135 209 58 118 66 252 60 11 21 153 184 75 46 15 166 74 81 139 192 70 155 217 61 180 34 31 231 187 121 142 194 72 235 89 198 123 92 0 94 4 162 140 123 107 128 40 211 154 155 33 20 231 108 189 15]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629258 +{"level":"info","time":"2026-04-08T06:21:03Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:03Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:03Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:03Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629263 [] [20 112 147 99 13 17 196 30 106 208 129 192 89 88 89 29 13 237 42 200 147 35 51 171 245 211 141 82 162 241 75 242 52 123 186 189 210 57 228 251 188 71 136 13 244 154 120 85 17 120 2 195 170 105 95 66 197 156 141 201 193 225 101 14]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629263 +{"level":"info","time":"2026-04-08T06:21:08Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:08Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:08Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:08Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629268 [] [110 141 235 237 232 239 196 232 36 2 113 65 208 171 45 101 205 210 104 91 173 207 52 76 61 227 57 225 8 143 184 208 103 226 163 105 10 229 11 205 26 40 56 182 212 49 242 151 28 155 96 235 85 128 177 94 10 162 192 212 89 146 12 13]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629268 +{"level":"info","time":"2026-04-08T06:21:13Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:13Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:13Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:13Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629273 [] [156 56 90 120 217 145 134 236 179 121 242 238 104 51 219 222 64 187 30 164 122 148 93 163 211 8 96 24 81 202 77 128 1 231 61 106 5 222 78 83 107 132 231 180 37 46 27 249 38 163 100 1 20 194 164 79 250 184 67 128 245 183 33 11]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629273 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:16Z","message":"witness report"} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:21:18Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:18Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:18Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:18Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629278 [] [148 48 28 250 242 138 131 204 57 180 146 119 232 43 28 103 82 127 68 120 144 129 9 191 47 7 8 202 130 176 222 24 120 15 164 128 112 142 10 29 31 199 183 181 88 221 74 63 198 40 64 75 46 116 24 82 1 227 205 50 223 185 20 7]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629278 +{"level":"info","time":"2026-04-08T06:21:23Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:23Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:23Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:23Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629283 [] [127 128 124 54 133 149 56 98 160 205 142 167 223 216 219 41 136 215 118 172 104 237 75 1 225 217 135 30 40 43 152 175 85 33 249 226 136 173 48 227 188 201 209 97 164 71 109 153 173 177 238 1 48 5 74 240 155 80 44 7 191 217 182 14]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629283 +{"level":"info","time":"2026-04-08T06:21:28Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:28Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:29Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629289 [] [30 247 110 61 160 25 49 192 200 184 72 44 244 40 97 148 226 113 239 127 100 253 83 95 168 108 64 62 138 78 126 36 223 108 76 232 5 254 202 116 234 179 14 196 31 193 211 116 74 201 236 164 69 24 52 42 215 61 128 101 0 39 32 1]} +sendPlanner 0 +{"level":"info","time":"2026-04-08T06:21:29Z","message":"Catching propalgation event... oc-scheduler - "} +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629289 +{"level":"info","time":"2026-04-08T06:21:34Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:34Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:34Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:34Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629294 [] [49 111 35 93 42 104 196 113 147 214 133 98 55 125 220 97 32 136 31 24 228 36 49 136 178 200 95 168 175 93 252 239 189 139 232 12 234 90 100 17 203 119 41 135 118 51 89 131 95 99 175 131 73 159 153 14 125 119 190 35 246 197 96 4]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629294 +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:36Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:21:39Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:39Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:39Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:39Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629299 [] [22 128 127 139 144 129 120 137 46 77 249 144 78 154 135 105 172 70 0 188 41 99 232 139 111 193 17 70 128 119 139 221 92 230 34 230 82 234 71 108 11 11 40 34 211 126 80 63 188 67 226 171 7 120 181 168 42 118 92 160 128 209 199 10]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629299 +{"level":"info","time":"2026-04-08T06:21:44Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:44Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:44Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:44Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629304 [] [240 170 201 48 157 246 93 160 52 84 119 29 39 64 210 83 155 211 24 189 11 57 75 69 91 101 83 150 55 146 51 208 254 60 128 151 238 99 45 153 9 195 139 123 122 137 206 45 100 249 55 98 85 215 194 33 95 71 164 99 160 223 90 0]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629304 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:21:49Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:49Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:49Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:49Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629309 [] [179 172 109 115 79 55 94 106 15 237 19 131 151 43 10 7 72 77 2 34 176 107 173 191 240 81 63 217 10 154 172 119 161 82 9 153 70 208 120 46 207 44 43 71 177 103 23 105 220 70 61 67 95 149 155 214 48 94 163 119 137 80 224 13]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629309 +{"level":"info","time":"2026-04-08T06:21:54Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:54Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:54Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:54Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629314 [] [157 215 144 156 25 165 9 240 220 81 71 142 16 43 178 102 120 205 4 242 206 104 24 211 249 252 141 85 99 49 46 114 57 130 244 253 153 218 20 66 122 119 63 128 55 162 231 112 221 36 190 225 226 141 123 251 179 33 153 10 126 220 183 0]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629314 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:21:56Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:21:59Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:59Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:59Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:21:59Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629319 [] [60 10 119 166 57 198 44 211 37 69 210 60 151 227 116 48 167 100 105 231 170 221 65 184 148 189 136 19 169 39 34 7 37 208 1 83 93 0 228 219 223 53 217 129 90 48 204 117 198 150 228 38 176 211 173 125 120 251 96 135 166 205 21 1]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629319 +{"level":"info","time":"2026-04-08T06:22:04Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:04Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:04Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:04Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629324 [] [70 8 80 144 29 14 138 41 69 121 183 136 249 69 130 66 211 97 58 92 106 206 212 70 237 239 13 77 76 117 254 238 246 54 200 102 187 178 44 236 56 30 151 255 102 199 67 189 142 93 22 105 48 96 134 147 132 166 5 34 99 206 89 1]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629324 +{"level":"info","time":"2026-04-08T06:22:09Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:09Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:09Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:09Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629329 [] [34 176 30 255 58 157 174 41 8 33 88 101 25 86 132 135 160 119 211 45 145 130 83 234 66 160 58 3 81 135 9 81 179 111 163 85 47 200 180 172 172 159 200 27 230 110 158 250 1 21 74 78 91 47 12 92 100 101 114 216 179 56 6 1]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629329 +{"level":"info","time":"2026-04-08T06:22:14Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:14Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:15Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:15Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629335 [] [170 58 162 2 109 219 82 212 97 254 26 88 22 167 86 86 139 214 119 179 237 60 203 12 193 126 20 227 116 140 67 87 241 250 24 93 122 93 97 145 204 45 154 175 162 96 127 220 180 2 34 234 154 204 242 114 174 88 222 135 53 214 93 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629335 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:16Z","message":"witness report"} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:22:20Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:20Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:20Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:20Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629340 [] [238 195 43 183 107 63 168 220 253 184 160 179 158 178 165 18 63 242 162 211 74 185 22 66 56 139 189 236 91 229 162 94 244 74 125 229 156 74 43 108 66 229 181 160 106 103 210 105 242 151 125 116 18 166 133 112 194 78 64 41 159 213 119 8]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629340 +{"level":"info","time":"2026-04-08T06:22:25Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:25Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:25Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:25Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629345 [] [3 253 149 166 87 72 223 116 17 174 119 244 178 113 199 143 95 24 132 160 245 22 104 98 161 183 22 219 187 58 98 27 57 165 159 130 132 178 53 13 165 200 94 31 47 53 199 131 61 24 128 177 212 196 170 189 253 49 214 144 120 221 99 15]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629345 +{"level":"info","time":"2026-04-08T06:22:30Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:30Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:30Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:30Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629350 [] [181 210 168 89 33 8 181 117 214 50 72 135 24 44 202 145 53 30 123 114 245 156 170 254 171 22 52 205 63 37 232 187 153 176 71 181 226 14 56 123 223 243 12 180 207 196 14 139 71 87 34 27 184 156 1 131 231 154 114 40 207 99 24 9]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629350 +{"level":"info","time":"2026-04-08T06:22:35Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:35Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:35Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:35Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629355 [] [206 59 19 160 32 126 18 156 87 174 206 32 59 177 100 105 90 226 227 101 156 201 16 46 46 26 125 91 87 146 186 183 156 169 151 96 96 26 24 110 149 82 157 99 228 235 168 74 239 244 91 241 143 124 229 6 30 197 49 233 48 208 80 15]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629355 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:36Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:22:40Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:40Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:40Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:40Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629360 [] [90 246 228 229 207 100 199 90 36 54 134 95 53 15 1 170 67 139 67 169 160 69 127 224 21 32 38 142 79 108 247 12 204 251 157 57 180 116 116 76 240 39 176 219 148 10 107 9 227 128 6 71 216 38 134 234 205 253 95 174 177 216 161 6]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629360 +{"level":"info","time":"2026-04-08T06:22:45Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:45Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:45Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:45Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629365 [] [63 199 217 15 130 99 177 48 78 10 36 251 150 42 115 110 100 247 20 74 254 171 89 52 92 230 211 148 104 143 107 230 209 68 95 224 15 57 122 163 53 46 159 191 92 175 118 241 157 14 62 2 101 66 66 211 67 124 208 117 101 1 225 6]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629365 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:22:50Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:50Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:50Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:50Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629370 [] [91 181 191 156 49 87 26 57 12 57 27 55 225 180 28 39 16 57 126 224 26 10 145 93 71 252 245 81 173 203 116 234 36 138 219 93 165 15 130 246 116 128 146 151 255 128 140 210 112 225 129 5 45 10 198 125 98 135 1 89 144 115 60 11]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629370 +{"level":"info","time":"2026-04-08T06:22:55Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:55Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:55Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:22:55Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629375 [] [168 228 101 110 246 181 204 230 69 13 111 254 247 246 184 225 72 223 92 222 179 241 100 165 195 74 14 198 45 136 87 171 93 156 118 186 49 2 58 187 123 117 79 124 61 11 119 124 53 2 95 121 29 251 73 217 212 191 200 176 139 228 215 13]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629375 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:22:56Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:23:00Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:00Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:01Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:01Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629381 [] [144 54 219 83 60 101 156 100 36 53 246 108 176 11 139 211 109 131 136 230 114 54 172 174 19 55 43 50 22 109 164 36 51 57 44 117 203 235 34 222 204 199 30 130 72 91 125 97 229 230 155 34 1 129 192 230 227 13 210 149 41 42 63 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629381 +{"level":"info","time":"2026-04-08T06:23:01Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +{"level":"info","time":"2026-04-08T06:23:01Z","message":"Catching propalgation event... oc-scheduler - "} +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629381 [] [144 54 219 83 60 101 156 100 36 53 246 108 176 11 139 211 109 131 136 230 114 54 172 174 19 55 43 50 22 109 164 36 51 57 44 117 203 235 34 222 204 199 30 130 72 91 125 97 229 230 155 34 1 129 192 230 227 13 210 149 41 42 63 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629381 +{"level":"info","time":"2026-04-08T06:23:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:06Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629386 [] [30 202 184 203 25 1 125 206 41 62 89 178 214 193 137 233 121 38 215 131 240 88 92 129 180 41 181 33 6 54 118 64 216 128 3 248 193 219 65 6 29 91 17 247 40 25 133 7 116 66 66 64 183 35 150 196 120 248 154 133 92 80 138 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629386 +{"level":"info","time":"2026-04-08T06:23:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:06Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629386 [] [30 202 184 203 25 1 125 206 41 62 89 178 214 193 137 233 121 38 215 131 240 88 92 129 180 41 181 33 6 54 118 64 216 128 3 248 193 219 65 6 29 91 17 247 40 25 133 7 116 66 66 64 183 35 150 196 120 248 154 133 92 80 138 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629386 +{"level":"info","time":"2026-04-08T06:23:11Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:11Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:11Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:11Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629391 [] [110 205 129 253 77 31 152 6 78 24 42 124 97 64 89 83 228 237 184 188 238 96 174 104 50 102 124 130 86 94 197 8 234 175 51 108 62 143 173 174 237 85 151 24 68 87 56 55 38 225 233 70 50 80 66 236 241 165 134 78 242 88 168 10]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629391 +{"level":"info","time":"2026-04-08T06:23:11Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:11Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:12Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:12Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629392 [] [75 116 113 253 77 139 233 209 46 112 155 197 247 65 52 60 137 142 105 1 205 163 117 18 158 109 93 196 162 238 246 20 224 91 203 238 197 189 191 221 154 16 149 245 45 66 27 211 84 170 9 125 137 77 171 165 232 188 216 242 164 215 76 11]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629392 +{"level":"info","time":"2026-04-08T06:23:16Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:16Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:16Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:16Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629396 [] [240 147 198 201 116 215 160 95 148 236 135 110 30 97 4 108 212 135 243 192 27 44 61 14 30 116 20 247 191 1 103 228 225 64 12 0 102 20 146 104 141 143 144 245 158 186 83 98 232 170 7 24 148 190 174 234 237 77 212 157 73 109 118 9]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629396 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:16Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:23:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:17Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:17Z","message":"Catching propalgation event... oc-scheduler - "} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629397 [] [144 164 56 237 29 110 226 88 72 232 64 152 15 204 134 122 155 214 86 191 104 104 233 231 117 60 0 46 236 113 98 65 83 58 9 168 130 155 188 250 239 51 192 170 242 103 173 236 91 177 224 13 161 196 219 48 139 206 90 53 98 20 239 14]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629397 +{"level":"info","time":"2026-04-08T06:23:21Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:21Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:22Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:22Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629402 [] [160 52 205 176 18 24 15 168 91 245 68 74 111 206 79 223 168 65 78 51 228 33 168 160 119 90 93 100 197 188 182 5 78 203 114 164 154 38 38 109 105 5 1 164 176 177 80 180 246 148 224 27 197 112 27 163 148 255 141 147 34 188 76 12]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629402 +{"level":"info","time":"2026-04-08T06:23:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:27Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:27Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629407 [] [88 59 221 55 52 217 233 119 150 192 131 111 42 48 14 16 50 136 74 47 169 197 90 201 55 244 224 159 96 11 247 141 130 162 158 159 61 223 1 92 102 220 144 6 193 206 130 184 122 35 192 144 233 156 4 162 32 148 54 38 138 173 20 3]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629407 +{"level":"info","time":"2026-04-08T06:23:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:32Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629412 [] [182 88 119 236 225 31 252 201 108 139 33 209 96 200 95 175 113 90 100 161 245 96 236 77 177 94 27 202 73 29 24 144 53 105 98 119 246 73 194 77 161 49 76 129 106 24 21 143 253 80 129 124 120 252 135 88 134 135 207 157 192 2 219 4]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629412 +{"level":"info","time":"2026-04-08T06:23:36Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:36Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629416 [] [10 244 75 241 90 17 201 160 103 126 22 191 185 54 29 248 245 177 134 52 150 112 55 146 241 110 87 175 229 109 156 206 245 219 178 64 104 78 24 182 65 254 218 15 86 33 182 25 92 108 83 228 153 76 244 150 108 234 21 39 87 196 146 12]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629416 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:36Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:23:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:41Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:41Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629421 [] [245 147 119 148 73 234 140 156 142 197 2 195 72 36 158 115 145 114 155 37 71 197 182 145 61 187 183 194 224 168 39 133 73 122 207 153 51 18 253 144 63 88 138 225 211 61 26 10 239 110 143 97 150 52 228 80 245 159 248 225 56 187 75 4]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629421 +{"level":"info","time":"2026-04-08T06:23:46Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:46Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:46Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:46Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629426 [] [141 72 153 198 16 160 45 156 136 192 30 121 181 17 191 121 164 1 21 178 18 144 234 140 250 86 200 10 239 124 55 214 17 37 197 65 192 47 211 6 77 242 33 240 223 228 13 22 34 198 107 128 182 220 178 184 54 133 169 166 101 156 102 5]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629426 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:23:51Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:51Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:51Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629431 [] [12 54 17 250 235 119 198 198 176 220 73 25 17 129 109 77 21 5 79 143 223 236 101 253 67 236 125 152 154 33 35 141 10 94 10 208 18 2 133 244 145 2 255 82 255 205 44 161 50 254 199 50 91 112 80 182 206 2 185 114 253 92 92 14]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629431 +{"level":"info","time":"2026-04-08T06:23:51Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:56Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:56Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:56Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:23:56Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629436 [] [23 83 186 19 183 6 46 206 59 164 212 169 55 102 13 73 224 1 161 53 196 143 252 186 57 92 58 65 207 137 186 81 172 118 242 143 197 229 171 7 29 127 80 235 182 193 92 104 137 158 182 102 18 242 121 191 29 230 30 197 136 144 135 1]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629436 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:56Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:23:56Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:24:01Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:01Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:01Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:01Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629441 [] [254 13 94 37 111 178 40 255 29 162 65 35 169 202 46 185 196 213 241 189 215 208 215 53 142 226 11 120 36 151 74 60 48 255 214 188 71 71 113 85 96 110 211 213 22 24 115 27 172 118 188 154 89 147 143 149 202 193 240 123 139 19 87 6]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629441 +{"level":"info","time":"2026-04-08T06:24:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:06Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:06Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629446 [] [246 176 91 73 160 106 186 232 90 254 21 33 188 36 82 137 87 157 180 212 249 215 0 194 143 19 45 211 65 107 64 50 225 228 242 113 78 152 136 187 19 134 178 53 244 118 233 41 188 102 161 95 32 120 87 154 4 111 222 114 195 6 255 8]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629446 +{"level":"info","time":"2026-04-08T06:24:11Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:11Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:11Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:11Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629451 [] [86 184 139 175 162 65 132 180 192 217 216 94 173 156 155 61 160 135 254 150 36 163 185 29 90 201 55 156 154 112 215 85 170 73 89 44 48 50 216 26 48 176 49 251 55 59 41 110 255 205 249 121 252 13 178 191 238 221 153 87 167 160 109 15]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629451 +{"level":"info","time":"2026-04-08T06:24:16Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:16Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:16Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:16Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629456 [] [155 167 250 33 26 113 255 90 195 252 218 51 87 156 236 27 33 235 173 205 214 91 71 182 173 208 4 34 56 187 252 51 242 25 188 172 144 173 139 254 206 169 130 128 76 124 221 225 175 107 51 5 195 217 190 89 183 197 214 233 225 144 22 9]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629456 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:24:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:24:16Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:24:16Z","message":"witness report"} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:24:21Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:21Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:21Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:21Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629461 [] [223 59 241 174 47 85 114 207 253 22 199 23 113 236 175 59 178 219 243 5 86 61 120 204 45 48 23 18 133 213 233 207 215 112 60 211 172 117 141 207 212 195 38 176 99 210 36 167 4 173 3 172 118 230 68 15 115 1 34 117 29 43 17 10]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629461 +{"level":"info","time":"2026-04-08T06:24:26Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:26Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:26Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:26Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629466 [] [78 233 88 195 228 51 61 74 210 130 161 187 123 96 35 249 102 247 231 145 230 218 95 156 156 57 196 239 51 100 156 207 145 191 177 198 148 187 45 255 188 135 168 246 45 232 145 167 16 227 212 162 240 83 53 227 19 50 4 155 89 251 173 15]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629466 +{"level":"info","time":"2026-04-08T06:24:31Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:31Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:32Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:32Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629472 [] [248 73 18 53 38 161 4 235 67 154 166 207 190 24 82 159 151 63 131 28 138 151 149 208 177 1 148 50 52 20 130 170 147 166 102 151 65 33 160 85 94 206 117 136 17 45 102 242 151 27 234 24 220 119 242 246 63 118 124 180 251 201 150 2]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629472 +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:24:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:24:36Z","message":"witness report"} +{"level":"debug","witness":"12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw","bornAt_ok":false,"fill_ok":true,"time":"2026-04-08T06:24:36Z","message":"witness report"} +{"level":"info","time":"2026-04-08T06:24:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:37Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:37Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629477 [] [18 59 128 116 59 142 226 74 128 34 172 184 42 157 167 147 209 86 3 76 58 71 29 198 127 217 243 106 0 8 233 13 28 54 16 255 138 41 114 125 164 222 219 216 190 57 22 197 217 128 65 197 209 136 44 83 82 207 68 42 252 246 13 7]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629477 +{"level":"info","time":"2026-04-08T06:24:42Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:42Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:42Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629482 [] [215 29 21 255 33 54 189 86 117 184 2 113 112 242 70 247 207 146 67 145 195 86 28 111 185 44 127 169 88 232 89 178 126 185 103 154 58 53 235 247 245 64 28 23 33 6 145 58 32 230 73 234 168 227 137 107 191 80 91 197 194 61 166 8]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +{"level":"info","time":"2026-04-08T06:24:42Z","message":"Catching propalgation event... oc-scheduler - "} +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629482 +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:24:47Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:47Z","message":"Catching propalgation event... oc-scheduler - "} +ACTUALLY RELATED INDEXERS map[12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u:{12D3KooWC3GNStak8KCYtJq11Dxiq45EJV53z1ZvKetMcZBeBX6u: [/ip4/172.19.0.14/tcp/4002 /ip4/172.40.0.2/tcp/4002]} 12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu:{12D3KooWGn3j4XqTSrjJDGGpTQERdDV5TPZdhQp87rAUnvQssvQu: [/ip4/172.40.0.1/tcp/4001]}] 2 +{"level":"info","time":"2026-04-08T06:24:47Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:47Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629487 [] [5 82 17 18 126 200 221 134 181 2 49 50 91 164 41 106 249 127 229 134 172 39 47 89 85 69 10 130 162 118 200 8 236 130 234 199 170 129 48 35 152 51 170 110 224 157 113 148 82 30 50 142 147 145 248 90 246 214 192 216 202 228 209 7]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629487 +{"level":"info","time":"2026-04-08T06:24:52Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:52Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:52Z","message":"Catching propalgation event... oc-scheduler - "} +{"level":"info","time":"2026-04-08T06:24:52Z","message":"Catching propalgation event... oc-scheduler - "} +handleEvent +sendPlanner &{/opencloud/resource/planner/1.0 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw [] -1 1775629492 [] [131 245 52 32 139 115 185 77 202 252 164 122 78 64 57 34 31 59 111 170 69 186 52 182 219 102 57 5 93 169 20 201 204 107 19 124 212 239 19 134 62 200 86 206 54 214 124 41 155 206 243 91 91 215 19 73 230 132 139 220 91 43 196 12]} +sendPlanner 0 +PublishCommon 12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw +SEND EVENT {12D3KooWBh9kZrekBAE5G33q4jCLNRAzygem3gP1mMdK8mhoCTaw: [/ip4/172.40.0.3/tcp/4003]} /opencloud/resource/planner/1.0 12D3KooWSzQtBux5GkpdqK8MA9Rmo5W1vTVZhWCbut2k99Ge45GN -1 1775629492 diff --git a/main.go b/main.go index 650be18..6d8a796 100644 --- a/main.go +++ b/main.go @@ -35,6 +35,7 @@ func main() { conf.GetConfig().MinIndexer = o.GetIntDefault("MIN_INDEXER", 1) conf.GetConfig().MaxIndexer = o.GetIntDefault("MAX_INDEXER", 5) + conf.GetConfig().LocationGranularity = o.GetIntDefault("LOCATION_GRANULARITY", 2) ctx, stop := signal.NotifyContext( context.Background(),