Fix up client storage deal matcher

This commit is contained in:
whyrusleeping
2020-02-28 16:05:56 -08:00
parent 115167659d
commit cf2eefdfbe
6 changed files with 97 additions and 37 deletions
+38 -16
View File
@@ -276,29 +276,51 @@ func (c *ClientNodeAdapter) OnDealSectorCommitted(ctx context.Context, provider
return nil
}
var sectorNumber abi.SectorNumber
var sectorFound bool
matchEvent := func(msg *types.Message) (bool, error) {
if msg.To != provider {
return false, nil
}
if msg.Method != builtin.MethodsMiner.ProveCommitSector {
switch msg.Method {
case builtin.MethodsMiner.PreCommitSector:
var params miner.SectorPreCommitInfo
if err := params.UnmarshalCBOR(bytes.NewReader(msg.Params)); err != nil {
return false, xerrors.Errorf("unmarshal pre commit: %w", err)
}
for _, did := range params.DealIDs {
if did == abi.DealID(dealId) {
log.Error("FOUND OUR SECTOR!", params.SectorNumber)
sectorNumber = params.SectorNumber
sectorFound = true
return false, nil
}
}
return false, nil
case builtin.MethodsMiner.ProveCommitSector:
log.Errorf("Look! a prove commit!")
var params miner.ProveCommitSectorParams
if err := params.UnmarshalCBOR(bytes.NewReader(msg.Params)); err != nil {
return false, xerrors.Errorf("failed to unmarshal prove commit sector params: %w", err)
}
log.Warn("prove commit: ", params.SectorNumber, sectorFound, sectorNumber)
if !sectorFound {
return false, nil
}
if params.SectorNumber != sectorNumber {
return false, nil
}
log.Warn("getting out of here")
return true, nil
default:
return false, nil
}
var params miner.SectorPreCommitInfo
if err := params.UnmarshalCBOR(bytes.NewReader(msg.Params)); err != nil {
return false, err
}
var found bool
for _, dealID := range params.DealIDs {
if uint64(dealID) == dealId {
found = true
break
}
}
return found, nil
}
if err := c.ev.Called(checkFunc, called, revert, 3, build.SealRandomnessLookbackLimit, matchEvent); err != nil {
+41 -15
View File
@@ -219,6 +219,7 @@ func (n *ProviderNodeAdapter) LocatePieceForDealWithinSector(ctx context.Context
}
func (n *ProviderNodeAdapter) OnDealSectorCommitted(ctx context.Context, provider address.Address, dealID uint64, cb storagemarket.DealSectorCommittedCallback) error {
log.Errorf("ON DEAL SECTOR COMMITTED", provider, dealID)
checkFunc := func(ts *types.TipSet) (done bool, more bool, err error) {
sd, err := n.StateMarketStorageDeal(ctx, abi.DealID(dealID), ts.Key())
@@ -236,6 +237,7 @@ func (n *ProviderNodeAdapter) OnDealSectorCommitted(ctx context.Context, provide
}
called := func(msg *types.Message, rec *types.MessageReceipt, ts *types.TipSet, curH abi.ChainEpoch) (more bool, err error) {
log.Errorf("CAllled callllllback")
defer func() {
if err != nil {
cb(xerrors.Errorf("handling applied event: %w", err))
@@ -269,29 +271,53 @@ func (n *ProviderNodeAdapter) OnDealSectorCommitted(ctx context.Context, provide
return nil
}
var sectorNumber abi.SectorNumber
var sectorFound bool
matchEvent := func(msg *types.Message) (bool, error) {
if msg.To != provider {
return false, nil
}
if msg.Method != builtin.MethodsMiner.ProveCommitSector {
switch msg.Method {
case builtin.MethodsMiner.PreCommitSector:
var params miner.SectorPreCommitInfo
if err := params.UnmarshalCBOR(bytes.NewReader(msg.Params)); err != nil {
return false, xerrors.Errorf("unmarshal pre commit: %w", err)
}
for _, did := range params.DealIDs {
if did == abi.DealID(dealID) {
log.Error("FOUND OUR SECTOR!", params.SectorNumber)
sectorNumber = params.SectorNumber
sectorFound = true
return false, nil
}
}
return false, nil
case builtin.MethodsMiner.ProveCommitSector:
log.Errorf("Look! a prove commit!")
var params miner.ProveCommitSectorParams
if err := params.UnmarshalCBOR(bytes.NewReader(msg.Params)); err != nil {
return false, xerrors.Errorf("failed to unmarshal prove commit sector params: %w", err)
}
log.Warn("prove commit: ", params.SectorNumber, sectorFound, sectorNumber)
if !sectorFound {
return false, nil
}
if params.SectorNumber != sectorNumber {
return false, nil
}
log.Warn("getting out of here")
return true, nil
default:
return false, nil
}
var params miner.SectorPreCommitInfo
if err := params.UnmarshalCBOR(bytes.NewReader(msg.Params)); err != nil {
return false, err
}
var found bool
for _, did := range params.DealIDs {
if did == abi.DealID(dealID) {
found = true
break
}
}
return found, nil
}
if err := n.ev.Called(checkFunc, called, revert, 3, build.SealRandomnessLookbackLimit, matchEvent); err != nil {