Pass in prev delta to collectItems cont. (#2400)
## Description Forgot to push the review changes in https://github.com/alcionai/corso/pull/2371 . ## Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No ## Type of change <!--- Please check the type of change your PR introduces: ---> - [ ] 🌻 Feature - [x] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Test - [ ] 💻 CI/Deployment - [ ] 🧹 Tech Debt/Cleanup ## Issue(s) <!-- Can reference multiple issues. Use one of the following "magic words" - "closes, fixes" to auto-close the Github issue. --> * #<issue> ## Test Plan <!-- How will this be tested prior to merging.--> - [ ] 💪 Manual - [x] ⚡ Unit test - [ ] 💚 E2E
This commit is contained in:
parent
17b698b854
commit
b327de5801
@ -30,6 +30,7 @@ const pageSize = int32(999)
|
|||||||
|
|
||||||
type driveItemPager struct {
|
type driveItemPager struct {
|
||||||
gs graph.Servicer
|
gs graph.Servicer
|
||||||
|
driveID string
|
||||||
builder *msdrives.ItemRootDeltaRequestBuilder
|
builder *msdrives.ItemRootDeltaRequestBuilder
|
||||||
options *msdrives.ItemRootDeltaRequestBuilderGetRequestConfiguration
|
options *msdrives.ItemRootDeltaRequestBuilderGetRequestConfiguration
|
||||||
}
|
}
|
||||||
@ -49,6 +50,7 @@ func NewItemPager(
|
|||||||
|
|
||||||
res := &driveItemPager{
|
res := &driveItemPager{
|
||||||
gs: gs,
|
gs: gs,
|
||||||
|
driveID: driveID,
|
||||||
options: requestConfig,
|
options: requestConfig,
|
||||||
builder: gs.Client().DrivesById(driveID).Root().Delta(),
|
builder: gs.Client().DrivesById(driveID).Root().Delta(),
|
||||||
}
|
}
|
||||||
@ -78,6 +80,10 @@ func (p *driveItemPager) SetNext(link string) {
|
|||||||
p.builder = msdrives.NewItemRootDeltaRequestBuilder(link, p.gs.Adapter())
|
p.builder = msdrives.NewItemRootDeltaRequestBuilder(link, p.gs.Adapter())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *driveItemPager) Reset() {
|
||||||
|
p.builder = p.gs.Client().DrivesById(p.driveID).Root().Delta()
|
||||||
|
}
|
||||||
|
|
||||||
func (p *driveItemPager) ValuesIn(l api.DeltaPageLinker) ([]models.DriveItemable, error) {
|
func (p *driveItemPager) ValuesIn(l api.DeltaPageLinker) ([]models.DriveItemable, error) {
|
||||||
return getValues[models.DriveItemable](l)
|
return getValues[models.DriveItemable](l)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1048,6 +1048,7 @@ func (p *mockItemPager) GetPage(context.Context) (gapi.DeltaPageLinker, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *mockItemPager) SetNext(string) {}
|
func (p *mockItemPager) SetNext(string) {}
|
||||||
|
func (p *mockItemPager) Reset() {}
|
||||||
|
|
||||||
func (p *mockItemPager) ValuesIn(gapi.DeltaPageLinker) ([]models.DriveItemable, error) {
|
func (p *mockItemPager) ValuesIn(gapi.DeltaPageLinker) ([]models.DriveItemable, error) {
|
||||||
idx := p.getIdx
|
idx := p.getIdx
|
||||||
@ -1497,7 +1498,6 @@ func (suite *OneDriveCollectionsSuite) TestCollectItems() {
|
|||||||
name string
|
name string
|
||||||
items []deltaPagerResult
|
items []deltaPagerResult
|
||||||
deltaURL string
|
deltaURL string
|
||||||
prevDelta string
|
|
||||||
prevDeltaSuccess bool
|
prevDeltaSuccess bool
|
||||||
err error
|
err error
|
||||||
}{
|
}{
|
||||||
@ -1522,7 +1522,7 @@ func (suite *OneDriveCollectionsSuite) TestCollectItems() {
|
|||||||
name: "invalid prev delta",
|
name: "invalid prev delta",
|
||||||
deltaURL: delta,
|
deltaURL: delta,
|
||||||
items: []deltaPagerResult{
|
items: []deltaPagerResult{
|
||||||
{nextLink: &next, err: deltaError},
|
{err: deltaError},
|
||||||
{deltaLink: &delta}, // works on retry
|
{deltaLink: &delta}, // works on retry
|
||||||
},
|
},
|
||||||
prevDeltaSuccess: false,
|
prevDeltaSuccess: false,
|
||||||
@ -1531,7 +1531,7 @@ func (suite *OneDriveCollectionsSuite) TestCollectItems() {
|
|||||||
name: "fail a normal delta query",
|
name: "fail a normal delta query",
|
||||||
items: []deltaPagerResult{
|
items: []deltaPagerResult{
|
||||||
{nextLink: &next},
|
{nextLink: &next},
|
||||||
{nextLink: &next, err: assert.AnError},
|
{err: assert.AnError},
|
||||||
},
|
},
|
||||||
prevDeltaSuccess: true,
|
prevDeltaSuccess: true,
|
||||||
err: assert.AnError,
|
err: assert.AnError,
|
||||||
@ -1566,9 +1566,9 @@ func (suite *OneDriveCollectionsSuite) TestCollectItems() {
|
|||||||
"",
|
"",
|
||||||
)
|
)
|
||||||
|
|
||||||
require.ErrorIs(suite.T(), err, test.err)
|
require.ErrorIs(suite.T(), err, test.err, "delta fetch err")
|
||||||
require.Equal(suite.T(), test.deltaURL, delta.URL)
|
require.Equal(suite.T(), test.deltaURL, delta.URL, "delta url")
|
||||||
require.Equal(suite.T(), !test.prevDeltaSuccess, delta.Reset)
|
require.Equal(suite.T(), !test.prevDeltaSuccess, delta.Reset, "delta reset")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -148,6 +148,7 @@ type itemCollector func(
|
|||||||
type itemPager interface {
|
type itemPager interface {
|
||||||
GetPage(context.Context) (gapi.DeltaPageLinker, error)
|
GetPage(context.Context) (gapi.DeltaPageLinker, error)
|
||||||
SetNext(nextLink string)
|
SetNext(nextLink string)
|
||||||
|
Reset()
|
||||||
ValuesIn(gapi.DeltaPageLinker) ([]models.DriveItemable, error)
|
ValuesIn(gapi.DeltaPageLinker) ([]models.DriveItemable, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,7 +194,6 @@ func collectItems(
|
|||||||
newPaths = map[string]string{}
|
newPaths = map[string]string{}
|
||||||
excluded = map[string]struct{}{}
|
excluded = map[string]struct{}{}
|
||||||
invalidPrevDelta = false
|
invalidPrevDelta = false
|
||||||
triedPrevDelta = false
|
|
||||||
)
|
)
|
||||||
|
|
||||||
maps.Copy(newPaths, oldPaths)
|
maps.Copy(newPaths, oldPaths)
|
||||||
@ -205,13 +205,12 @@ func collectItems(
|
|||||||
for {
|
for {
|
||||||
page, err := pager.GetPage(ctx)
|
page, err := pager.GetPage(ctx)
|
||||||
|
|
||||||
if !triedPrevDelta && graph.IsErrInvalidDelta(err) {
|
if graph.IsErrInvalidDelta(err) {
|
||||||
logger.Ctx(ctx).Infow("Invalid previous delta link", "link", prevDelta)
|
logger.Ctx(ctx).Infow("Invalid previous delta link", "link", prevDelta)
|
||||||
|
|
||||||
triedPrevDelta = true // TODO(meain): Do we need this check?
|
|
||||||
invalidPrevDelta = true
|
invalidPrevDelta = true
|
||||||
|
|
||||||
pager.SetNext("")
|
pager.Reset()
|
||||||
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user