Debug Spread Get Peer

This commit is contained in:
mr
2026-02-04 11:35:19 +01:00
parent 1ebbb54dd1
commit 3bc01c3a04
15 changed files with 256 additions and 224 deletions

View File

@@ -79,7 +79,6 @@ func InitNode(isNode bool, isIndexer bool) (*Node, error) {
panic(err)
}
logger.Info().Msg("subscribe to decentralized search flow...")
node.SubscribeToSearch(node.PS)
logger.Info().Msg("run garbage collector...")
node.StartGC(30 * time.Second)
@@ -90,6 +89,12 @@ func InitNode(isNode bool, isIndexer bool) (*Node, error) {
if node.PubSubService, err = pubsub.InitPubSub(context.Background(), node.Host, node.PS, node, node.StreamService); err != nil {
panic(err)
}
f := func(ctx context.Context, evt common.Event, topic string) {
if p, err := node.GetPeerRecord(ctx, evt.From); err == nil && len(p) > 0 {
node.StreamService.SendResponse(p[0], &evt)
}
}
node.SubscribeToSearch(node.PS, &f)
}
if isIndexer {
logger.Info().Msg("generate opencloud indexer...")
@@ -102,7 +107,7 @@ func InitNode(isNode bool, isIndexer bool) (*Node, error) {
}
func (d *Node) Close() {
if d.isIndexer {
if d.isIndexer && d.IndexerService != nil {
d.IndexerService.Close()
}
d.PubSubService.Close()
@@ -147,9 +152,9 @@ func (d *Node) publishPeerRecord(
func (d *Node) GetPeerRecord(
ctx context.Context,
key string,
) (*peer.Peer, error) {
) ([]*peer.Peer, error) {
var err error
var info *indexer.PeerRecord
var info map[string]indexer.PeerRecord
if common.StreamIndexers[common.ProtocolPublish] == nil {
return nil, errors.New("no protocol Publish is set up on the node")
}
@@ -162,29 +167,32 @@ func (d *Node) GetPeerRecord(
return nil, err
}
var resp indexer.GetResponse
if err := json.NewDecoder(stream.Stream).Decode(&resp); err != nil {
return nil, err
}
if resp.Found {
info = &resp.Record
break
for {
var resp indexer.GetResponse
if err := json.NewDecoder(stream.Stream).Decode(&resp); err != nil {
return nil, err
}
if resp.Found {
info = resp.Records
break
}
}
}
var p *peer.Peer
if info != nil {
if pk, err := info.Verify(); err != nil {
var ps []*peer.Peer
for _, pr := range info {
if pk, err := pr.Verify(); err != nil {
return nil, err
} else if ok, p, err := info.ExtractPeer(d.PeerID.String(), key, pk); err != nil {
} else if ok, p, err := pr.ExtractPeer(d.PeerID.String(), key, pk); err != nil {
return nil, err
} else {
if ok {
d.publishPeerRecord(info)
d.publishPeerRecord(&pr)
}
return p, nil
ps = append(ps, p)
}
}
return p, err
return ps, err
}
func (d *Node) claimInfo(