美文网首页Filecoin
Filecoin之Powergate文件检索

Filecoin之Powergate文件检索

作者: rleor | 来源:发表于2020-10-13 14:15 被阅读0次

    文件检索

    powergate仅提供ffs get接口用于查询文件,并且仅从热存储ipfs中查询文件.
    ffs/api/api_actions.go

    func (i *API) Get(ctx context.Context, c cid.Cid) (io.Reader, error) {
        if !c.Defined() {
            return nil, fmt.Errorf("cid is undefined")
        }
        conf, err := i.is.getStorageConfig(c)
        if err != nil {
            return nil, fmt.Errorf("getting cid config: %s", err)
        }
        if !conf.Hot.Enabled {
            return nil, ErrHotStorageDisabled
        }
        r, err := i.sched.GetCidFromHot(ctx, c)
        if err != nil {
            return nil, fmt.Errorf("getting from hot layer %s: %s", c, err)
        }
        return r, nil
    }
    

    powergate中冷存储检索

    powergate冷存储实现逻辑:
    接口位于ffs/api/api_retrieval.go的StartRetrieval方法,但是目前为止并未被调用过.(d1840e23251c53b03457d8eb33cc72baf7b0253f)

    func (i *API) StartRetrieval(payloadCid, pieceCid cid.Cid, selector string, miners []string, opts ...RetrievalOption) (Retrieval, error)
    

    调用流程:
    ffs/api/api_retrieval.go Start_Retrieval
    -> scheduler_retrieval.go StartRetrieval方法,将retrieval请求放入队列
    -> scheduler.go中循环处理队列中的retrieval请求
    -> filcold.go中的Fetch方法
    -> deals.go中最终调用lotus的api ClientMinerQueryOffer.

    powergate目前调用了冷存储检索的地方在PushStorageCofig时,scheduler_storage.go中,执行executeHotStorage时,如果

    1. IPFS中没有对应cid的文件
    2. StorageConfig中AllowUnfreeze打开
      会发检索请求到Filecoin, 接受文件并存到热存储中.

    相关文章

      网友评论

        本文标题:Filecoin之Powergate文件检索

        本文链接:https://www.haomeiwen.com/subject/irqvpktx.html