-
Notifications
You must be signed in to change notification settings - Fork 149
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: add BulkWriter integration tests, java backport changes, delete fix #1117
Conversation
Codecov Report
@@ Coverage Diff @@
## node10 #1117 +/- ##
==========================================
- Coverage 98.60% 98.59% -0.01%
==========================================
Files 28 28
Lines 18366 18310 -56
Branches 1414 1405 -9
==========================================
- Hits 18109 18053 -56
Misses 254 254
Partials 3 3
Continue to review full report at Codecov.
|
dev/src/write-batch.ts
Outdated
@@ -575,12 +575,33 @@ export class WriteBatch implements firestore.WriteBatch { | |||
api.BatchWriteResponse | |||
>('batchWrite', request, tag); | |||
|
|||
return (response.writeResults || []).map((result, i) => { | |||
const writeResults = response.writeResults || []; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mind removing GCF_IDLE_TIMEOUT_MS
(the unrelated lint complaint above)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's being used further down in _shouldCreateTransaction()
.
dev/src/write-batch.ts
Outdated
return (response.writeResults || []).map((result, i) => { | ||
const writeResults = response.writeResults || []; | ||
let latestTimestamp = Timestamp.fromMillis(0); | ||
writeResults.forEach(result => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: Prefer using for ... of
loops when possible, as this makes for far easier debugging than inline lambdas.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
n/a anymore
dev/src/write-batch.ts
Outdated
return new BatchWriteResult( | ||
result.updateTime ? Timestamp.fromProto(result.updateTime) : null, | ||
isSuccessfulDelete |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know what is going on here :) Can you rewrite this to make it obvious? At the very least, this needs parentheses.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I copied this style from your Transaction PR b/c I thought it seemed really cool! And then I went back and saw you changed it :(
dev/system-test/firestore.ts
Outdated
it.skip('can terminate once BulkWriter is closed', async () => { | ||
it('has create() method', async () => { | ||
const ref = randomCol.doc('doc1'); | ||
const promise = writer.create(ref, {foo: 'bar'}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
s/promise/singleOp/ ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done.
dev/src/bulk-writer.ts
Outdated
@@ -113,7 +113,7 @@ class BulkCommitBatch { | |||
|
|||
/** | |||
* Adds a `delete` operation to the WriteBatch. Returns a promise that | |||
* resolves with the result of the delete. | |||
* resolves with the sentinel value for the delete operation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we point out that we are returning Timestamp(0)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll add that to the description.
// sentinel Timestamp value. | ||
// TODO(b/158502664): Use actual delete timestamp. | ||
const isSuccessfulDelete = | ||
result.updateTime === null && error.code === Status.OK; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
result.updateTime === null && error.code === Status.OK; | |
const DELETE_TIMESTAMP_SENTINEL : api.ITimestamp = {} | |
const updateTime = error.code === Status.OK | |
? Timestamp.fromProto(result.updateTime || DELETE_TIMESTAMP_SENTINEL) | |
: null; |
For brevity.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so crisp, so clean.
73c30fb
to
d149ee0
Compare
* fix!: mark v1beta1 client as deprecated (#937) * feat!: use QueryDocumentSnapshot in FirestoreDataConverter (#965) * deps: update to gts 2.x (#1013) * chore!: update settings for Node 10 (#1019) * deps: drop through2 (#1014) * feat: support BigInt (#1016) * fix: make update.sh work on Linux (#1043) * fix: only use BigInt in BigInt system test (#1044) * fix: make pbjs compile admin proto again (#1045) * Add BulkWriter (#1055) * docs: Add documentation for FirestoreDataConverter (#1059) * chore: enforce return types (#1065) * fix: add generic to Firestore.getAll() (#1066) * chore: remove internal WriteOp (#1067) * chore: add linter checks for it|describe.only (#1068) * fix: handle terminate in BulkWriter (#1070) * chore: run template copying last in synthtool (#1071) * feat: Firestore Bundles implementation (#1078) * feat: add support for set() with SetOptions when using FirestoreDataConverter (#1087) * feat: Add totalDocuments and totalBytes to bundle metadata. (#1085) * feat: Add totalDocuments and totalBytes to bundle metadata. * fix: Better comment * fix: Better testing. * fix: Improve metadata testing. * fix: incomplete expect in rate-limiter test (#1092) * Remove BatchWrite proto, fix conformance tests * chore: use public API types internally (#1100) * feat: add Partition and BatchWrite protos (#1110) * fix: remove GCF transaction fallback (#1112) * fix: add BulkWriter integration tests, java backport changes, delete fix (#1117) * chore: merge master (#1218) * chore: add eslint check for console.log statements (#1229) * fix: another attempt at fixing the flaky BulkWriter test (#1228) * Fix comment * Renames * Test fix * Fix unit tests Co-authored-by: Brian Chen <[email protected]> Co-authored-by: wu-hui <[email protected]>
A few things in this PR: