diff --git a/markets/loggers/loggers.go b/markets/loggers/loggers.go new file mode 100644 index 000000000..8ebf54fd2 --- /dev/null +++ b/markets/loggers/loggers.go @@ -0,0 +1,29 @@ +package marketevents + +import ( + "github.com/filecoin-project/go-fil-markets/retrievalmarket" + "github.com/filecoin-project/go-fil-markets/storagemarket" + logging "github.com/ipfs/go-log/v2" +) + +var log = logging.Logger("markets") + +// StorageClientLogger logs events from the storage client +func StorageClientLogger(event storagemarket.ClientEvent, deal storagemarket.ClientDeal) { + log.Infow("storage event", "name", storagemarket.ClientEvents[event], "proposal CID", deal.ProposalCid, "state", storagemarket.DealStates[deal.State], "message", deal.Message) +} + +// StorageProviderLogger logs events from the storage provider +func StorageProviderLogger(event storagemarket.ProviderEvent, deal storagemarket.MinerDeal) { + log.Infow("storage event", "name", storagemarket.ProviderEvents[event], "proposal CID", deal.ProposalCid, "state", storagemarket.DealStates[deal.State], "message", deal.Message) +} + +// RetrievalClientLogger logs events from the retrieval client +func RetrievalClientLogger(event retrievalmarket.ClientEvent, deal retrievalmarket.ClientDealState) { + log.Infow("retrieval event", "name", retrievalmarket.ClientEvents[event], "deal ID", deal.ID, "state", retrievalmarket.DealStatuses[deal.Status], "message", deal.Message) +} + +// RetrievalProviderLogger logs events from the retrieval provider +func RetrievalProviderLogger(event retrievalmarket.ProviderEvent, deal retrievalmarket.ProviderDealState) { + log.Infow("retrieval event", "name", retrievalmarket.ProviderEvents[event], "deal ID", deal.ID, "receiver", deal.Receiver, "state", retrievalmarket.DealStatuses[deal.Status], "message", deal.Message) +} diff --git a/node/modules/client.go b/node/modules/client.go index 1bba07672..c7e2e33c9 100644 --- a/node/modules/client.go +++ b/node/modules/client.go @@ -28,6 +28,7 @@ import ( "github.com/libp2p/go-libp2p-core/host" "github.com/filecoin-project/lotus/lib/blockstore" + marketevents "github.com/filecoin-project/lotus/markets/loggers" "github.com/filecoin-project/lotus/markets/retrievaladapter" "github.com/filecoin-project/lotus/node/impl/full" payapi "github.com/filecoin-project/lotus/node/impl/paych" @@ -127,6 +128,7 @@ func StorageClient(lc fx.Lifecycle, h host.Host, ibs dtypes.ClientBlockstore, md } lc.Append(fx.Hook{ OnStart: func(ctx context.Context) error { + c.SubscribeToEvents(marketevents.StorageClientLogger) return c.Start(ctx) }, OnStop: func(context.Context) error { @@ -138,9 +140,19 @@ func StorageClient(lc fx.Lifecycle, h host.Host, ibs dtypes.ClientBlockstore, md } // RetrievalClient creates a new retrieval client attached to the client blockstore -func RetrievalClient(h host.Host, mds dtypes.ClientMultiDstore, dt dtypes.ClientDataTransfer, pmgr *paychmgr.Manager, payapi payapi.PaychAPI, resolver retrievalmarket.PeerResolver, ds dtypes.MetadataDS, chainapi full.ChainAPI) (retrievalmarket.RetrievalClient, error) { +func RetrievalClient(lc fx.Lifecycle, h host.Host, mds dtypes.ClientMultiDstore, dt dtypes.ClientDataTransfer, pmgr *paychmgr.Manager, payapi payapi.PaychAPI, resolver retrievalmarket.PeerResolver, ds dtypes.MetadataDS, chainapi full.ChainAPI) (retrievalmarket.RetrievalClient, error) { adapter := retrievaladapter.NewRetrievalClientNode(pmgr, payapi, chainapi) network := rmnet.NewFromLibp2pHost(h) sc := storedcounter.New(ds, datastore.NewKey("/retr")) - return retrievalimpl.NewClient(network, mds, dt, adapter, resolver, namespace.Wrap(ds, datastore.NewKey("/retrievals/client")), sc) + client, err := retrievalimpl.NewClient(network, mds, dt, adapter, resolver, namespace.Wrap(ds, datastore.NewKey("/retrievals/client")), sc) + if err != nil { + return nil, err + } + lc.Append(fx.Hook{ + OnStart: func(ctx context.Context) error { + client.SubscribeToEvents(marketevents.RetrievalClientLogger) + return nil + }, + }) + return client, nil } diff --git a/node/modules/storageminer.go b/node/modules/storageminer.go index a1ac7c8d2..17cfed53f 100644 --- a/node/modules/storageminer.go +++ b/node/modules/storageminer.go @@ -55,6 +55,7 @@ import ( "github.com/filecoin-project/lotus/chain/gen" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/lib/blockstore" + marketevents "github.com/filecoin-project/lotus/markets/loggers" "github.com/filecoin-project/lotus/markets/retrievaladapter" "github.com/filecoin-project/lotus/miner" "github.com/filecoin-project/lotus/node/config" @@ -182,6 +183,7 @@ func StorageMiner(mctx helpers.MetricsCtx, lc fx.Lifecycle, api lapi.FullNode, h func HandleRetrieval(host host.Host, lc fx.Lifecycle, m retrievalmarket.RetrievalProvider) { lc.Append(fx.Hook{ OnStart: func(context.Context) error { + m.SubscribeToEvents(marketevents.RetrievalProviderLogger) return m.Start() }, OnStop: func(context.Context) error { @@ -195,6 +197,7 @@ func HandleDeals(mctx helpers.MetricsCtx, lc fx.Lifecycle, host host.Host, h sto lc.Append(fx.Hook{ OnStart: func(context.Context) error { + h.SubscribeToEvents(marketevents.StorageProviderLogger) return h.Start(ctx) }, OnStop: func(context.Context) error { @@ -433,12 +436,7 @@ func StorageProvider(minerAddress dtypes.MinerAddress, return true, "", nil }) - p, err := storageimpl.NewProvider(net, namespace.Wrap(ds, datastore.NewKey("/deals/provider")), store, mds, pieceStore, dataTransfer, spn, address.Address(minerAddress), ffiConfig.SealProofType, storedAsk, funds, opt) - if err != nil { - return p, err - } - - return p, nil + return storageimpl.NewProvider(net, namespace.Wrap(ds, datastore.NewKey("/deals/provider")), store, mds, pieceStore, dataTransfer, spn, address.Address(minerAddress), ffiConfig.SealProofType, storedAsk, funds, opt) } // RetrievalProvider creates a new retrieval provider attached to the provider blockstore