Skip to content
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

table.createLoadJob has mutually exclusive polymorphic return #640

Closed
zamnuts opened this issue Mar 3, 2020 · 9 comments · Fixed by #647
Closed

table.createLoadJob has mutually exclusive polymorphic return #640

zamnuts opened this issue Mar 3, 2020 · 9 comments · Fixed by #647
Assignees
Labels
api: bigquery Issues related to the googleapis/nodejs-bigquery API. type: process A process-related concern. May include testing, release, or the like.

Comments

@zamnuts
Copy link
Contributor

zamnuts commented Mar 3, 2020

Affects @google-cloud/bigquery@4.7.0

The table.createLoadJob is a callback-first method that has been promisified via promisifyAll, i.e. it doesn't meet the requirements of a non-promise method (Stream/constructor/etc). However, when the source argument is a string, the current implementation attempts a synchronous return type of Stream.Writable (EventEmitter). See https://github.com/googleapis/nodejs-bigquery/blob/v4.7.0/src/table.ts#L1226-L1248

This polymorphic return is problematic:

  1. With callback and without await, Writable is returned
  2. With callback and with await, Writable is returned
  3. Without callback and without await, Promise (of Job? can't actually test this) is returned
  4. Without callback and with await, Promise of Job is returned

The corresponding overloads are available:

createLoadJob(source: string): Writable; // Never reached
createLoadJob(source: string, callback: JobCallback): Writable; // 1, 2

// 4 is not documented as an overload, but is possible in the concrete signature:
createLoadJob(source: string): Promise<JobResponse> {...}

One of the tests expects a Writable without a supplied callback, but, upon promisifyAll refactor in the unit tests to actually be applied, it fails due to the method assuming to be used like a promise, which corresponds to scenario 3 in previous: https://github.com/googleapis/nodejs-bigquery/blob/v4.7.0/test/table.ts#L58-L64

In the current unit tests, this issue is not presented due to the promisifyAll stub, which removes the promisification functionality. See https://github.com/googleapis/nodejs-bigquery/blob/v4.7.0/test/table.ts#L58-L64

Example test cases (all succeed):

// fix the promisifyAll fake
const fakePfy = extend({}, pfy, {
  promisifyAll: (c: Function) => {
    if (c.name === 'Table') {
      promisified = true;
    }
    pfy.promisifyAll(c); // ADDED THIS
  },
});

// test cases
it('+cb +async', async () => {
  sandbox.stub(table, 'createWriteStream_').returns(new stream.Writable());
  const result = await table.createLoadJob(FILEPATH, () => {}); // noop
  assert(result instanceof stream.Writable);
  result.emit('job', {metadata: 'foo'});
});

it('+cb -async', (done) => {
  sandbox.stub(table, 'createWriteStream_').returns(new stream.Writable());
  const result = table.createLoadJob(FILEPATH, done);
  assert(result instanceof stream.Writable);
  result.emit('job', {metadata: 'bar'});
});

it('-cb +async', async () => {
  const w = new stream.Writable();
  sandbox.stub(table, 'createWriteStream_').returns(w);
  setImmediate(() => w.emit('job', {metadata: 'qux'}));
  const result = await table.createLoadJob(FILEPATH);
  assert.deepStrictEqual(result, [{metadata: 'qux'}, 'qux']);
});

it('-cb -async', () => {
  // cannot test this, table.createLoadJob always returns a Promise
});

Typically, combining promises, callbacks, and streams in a single function signature is mutually exclusive.

If a Writable result is really desired that coincides with the createLoadJob(source: string): Writable; signature, I recommend implementing a createLoadJobStream(source: string): Writable; method which will not be promisified.

@product-auto-label product-auto-label bot added the api: bigquery Issues related to the googleapis/nodejs-bigquery API. label Mar 3, 2020
@stephenplusplus
Copy link
Contributor

I would guess that all the implementor wanted was an early return from the function, and all of the annotations suggesting stream support was done to get the linter off their back. Here's a diff of all I believe we want: https://gist.github.com/stephenplusplus/c20d164ff46aefe0fc0a7165667534a9

@zamnuts
Copy link
Contributor Author

zamnuts commented Mar 3, 2020

Thanks @stephenplusplus, that would be breaking API change, and wouldn't reveal the Stream whatsoever. Are we ok with that?

@stephenplusplus
Copy link
Contributor

It's currently not possible to actually get the stream back, right? Would it only break TypeScript compilers if a user was under the impression they'd get a stream back?

@bcoe bcoe added the type: process A process-related concern. May include testing, release, or the like. label Mar 3, 2020
@zamnuts
Copy link
Contributor Author

zamnuts commented Mar 4, 2020

In the current implementation, there are two scenarios that return the Writable stream, but considering it also invokes the supplied callback upon completion, i don't really see the point of returning the Writable. So yes, it is possible to get the stream back (the Writable).

  1. With callback and without await, Writable is returned
  2. With callback and with await, Writable is returned

Additionally, since it returns the Writable, which has a Readable already piped to it, the Writable can't be used except to listen for events like close; i.e. you wouldn't want to multiplex multiple Readables to it, nor can you read from the Writable since it is not a Duplex.

@steffnay
Copy link
Contributor

@stephenplusplus @JustinBeckwith @shollyman I've not seen a breaking change handled in this library, so I'm curious if you can give @zamnuts and myself more feedback on this

@JustinBeckwith
Copy link
Contributor

We are going to be doing a semver major release here in the next or so. If you want to make a breaking change, now would be a good time.

@stephenplusplus
Copy link
Contributor

I tested this out, but it wouldn't actually return a stream to me:

'use strict'

const bigQuery = new (require('@google-cloud/bigquery')).BigQuery()

const dataset = bigQuery.dataset('stephen_has_a_new_dataset')
const table = dataset.table('stephen_has_a_new_table')
const schema = [{"type":"STRING","name":"Name"},{"type":"INTEGER","name":"Age"},{"type":"FLOAT","name":"Weight"},{"type":"BOOLEAN","name":"IsMagic"}]

;(async() => {
  await dataset.create()
  await table.create(schema)

  table.createLoadJob('./location-test-data.json')
    .on('error', console.error)
    .on('finish', console.log)
})()
(node:7504) UnhandledPromiseRejectionWarning: TypeError: table.createLoadJob(...).on is not a function
    at /Users/stephen/dev/play/gissue-640/index.js:14:6

I think we just need to move the return to after the lines that do the streaming work.

@zamnuts
Copy link
Contributor Author

zamnuts commented Mar 17, 2020

@JustinBeckwith in the next "what" or so? :) i pushed up a draft, still have some testing to do...

We are going to be doing a semver major release here in the next or so.

@stephenplusplus IIRC table.createLoadJob the way you have it will return a promise of a stream. check my test cases in the OP.

@stephenplusplus
Copy link
Contributor

Ah, I'm caught up now. This will return a stream, like your test case shows (sorry):

table.createLoadJob('./location-test-data.json', (err, job, apiResponse) => {
  // These are the expected arguments. No stream.
  console.log({err, job, apiResponse})
})
.on('data', console.log) // doesn't error

IIRC table.createLoadJob the way you have it will return a promise of a stream.

It actually resolves the normally-expected arguments, the Job instance and the POJO apiResponse:

table.createLoadJob('./location-test-data.json')
  .then(([job, apiResponse]) => {})

I don't believe there's a way to actually get the stream back where a Job or apiResponse was expected.

We never meant to allow a stream to be returned, or advertised it (outside of the TypeScript params, right?). So this is the gray area of breaking changes IMO, when an undocumented side-effect will break a user's code. (Documentation being these docs: https://googleapis.dev/nodejs/bigquery/latest/Table.html#createLoadJob, and not TypeScript IDE helpers)

But to be safe, and since we have one coming up anyway, sure, it's a breaking change. However, I don't think we need to do too much to fix this. Just not putting the return on the stream line, and instead below the stream logic should restore us to the original intentions of the function. Skip the idea that we need to return a stream at all.

zamnuts added a commit that referenced this issue Mar 31, 2020
* fix!(table): createLoadJobStream sync returns a stream, createLoadJob always returns a job #640

* chore(table): remove createLoadJobStream, createLoadJob test refactor for promises #640

* chore(table): remove never encountered callback noop in createLoadJob given promisifyAll

* test(biqquery): add tests to increase codecov as a result of #647 refactor

Co-authored-by: Benjamin E. Coe <bencoe@google.com>
Co-authored-by: Steffany Brown <30247553+steffnay@users.noreply.github.com>
yoshi-automation added a commit that referenced this issue Apr 1, 2020
8e26fb5
commit 8e26fb5
Author: Andrew Zammit <zammit.andrew@gmail.com>
Date:   Mon Mar 30 21:58:06 2020 -0700

    refactor!: don't return Stream from createLoadJob (#647)

    * fix!(table): createLoadJobStream sync returns a stream, createLoadJob always returns a job #640

    * chore(table): remove createLoadJobStream, createLoadJob test refactor for promises #640

    * chore(table): remove never encountered callback noop in createLoadJob given promisifyAll

    * test(biqquery): add tests to increase codecov as a result of #647 refactor

    Co-authored-by: Benjamin E. Coe <bencoe@google.com>
    Co-authored-by: Steffany Brown <30247553+steffnay@users.noreply.github.com>
alexander-fenster pushed a commit that referenced this issue Apr 1, 2020
* Change triggered by none of the following:
This git repo (https://github.com/googleapis/nodejs-bigquery.git)
Git repo https://github.com/googleapis/synthtool.git

* feat!: drop Node 8 from engines field (#662)

712b029
commit 712b029
Author: Steffany Brown <30247553+steffnay@users.noreply.github.com>
Date:   Mon Mar 30 12:59:52 2020 -0700

    feat!: drop Node 8 from engines field (#662)

    Drops Node 8 from the engines field.

* refactor!: don't return Stream from createLoadJob (#647)

8e26fb5
commit 8e26fb5
Author: Andrew Zammit <zammit.andrew@gmail.com>
Date:   Mon Mar 30 21:58:06 2020 -0700

    refactor!: don't return Stream from createLoadJob (#647)

    * fix!(table): createLoadJobStream sync returns a stream, createLoadJob always returns a job #640

    * chore(table): remove createLoadJobStream, createLoadJob test refactor for promises #640

    * chore(table): remove never encountered callback noop in createLoadJob given promisifyAll

    * test(biqquery): add tests to increase codecov as a result of #647 refactor

    Co-authored-by: Benjamin E. Coe <bencoe@google.com>
    Co-authored-by: Steffany Brown <30247553+steffnay@users.noreply.github.com>

* chore: update dependency @google-cloud/common to v3 (#661)

c61407e
commit c61407e
Author: WhiteSource Renovate <bot@renovateapp.com>
Date:   Tue Mar 31 19:27:51 2020 +0200

    chore: update dependency @google-cloud/common to v3 (#661)

* fix(deps): update dependency @google-cloud/paginator to v3 (#658)

a09c493
commit a09c493
Author: WhiteSource Renovate <bot@renovateapp.com>
Date:   Tue Mar 31 19:38:07 2020 +0200

    fix(deps): update dependency @google-cloud/paginator to v3 (#658)

    This PR contains the following updates:

    | Package | Type | Update | Change |
    |---|---|---|---|
    | [@google-cloud/paginator](https://togithub.com/googleapis/nodejs-paginator) | dependencies | major | [`^2.0.0` -> `^3.0.0`](https://renovatebot.com/diffs/npm/@google-cloud%2fpaginator/2.0.3/3.0.0) |

    ---

    ### Release Notes

    <details>
    <summary>googleapis/nodejs-paginator</summary>

    ### [`v3.0.0`](https://togithub.com/googleapis/nodejs-paginator/blob/master/CHANGELOG.md#&#8203;300-httpswwwgithubcomgoogleapisnodejs-paginatorcomparev203v300-2020-03-25)

    [Compare Source](https://togithub.com/googleapis/nodejs-paginator/compare/v2.0.3...v3.0.0)

    ##### ⚠ BREAKING CHANGES

    -   **dep:** upgrade gts 2.0.0 ([#&#8203;194](https://togithub.com/googleapis/nodejs-paginator/issues/194))
    -   **deps:** deprecated node 8 to 10; upgrade typescript

    ##### Miscellaneous Chores

    -   **dep:** upgrade gts 2.0.0 ([#&#8203;194](https://www.github.com/googleapis/nodejs-paginator/issues/194)) ([4eaf9be](https://www.github.com/googleapis/nodejs-paginator/commit/4eaf9bed1fcfd0f10e877ff15c1d0e968e3356c8))
    -   **deps:** deprecated node 8 to 10; upgrade typescript ([f6434ab](https://www.github.com/googleapis/nodejs-paginator/commit/f6434ab9cacb6ab804c070f19c38b6072ca326b5))

    ##### [2.0.3](https://www.github.com/googleapis/nodejs-paginator/compare/v2.0.2...v2.0.3) (2019-12-05)

    ##### Bug Fixes

    -   **deps:** pin TypeScript below 3.7.0 ([e06e1b0](https://www.github.com/googleapis/nodejs-paginator/commit/e06e1b0a2e2bb1cf56fc806c1703b8b5e468b954))

    ##### [2.0.2](https://www.github.com/googleapis/nodejs-paginator/compare/v2.0.1...v2.0.2) (2019-11-13)

    ##### Bug Fixes

    -   **docs:** add jsdoc-region-tag plugin ([#&#8203;155](https://www.github.com/googleapis/nodejs-paginator/issues/155)) ([b983799](https://www.github.com/googleapis/nodejs-paginator/commit/b98379905848fd179c6268aff3e1cfaf2bf76663))

    ##### [2.0.1](https://www.github.com/googleapis/nodejs-paginator/compare/v2.0.0...v2.0.1) (2019-08-25)

    ##### Bug Fixes

    -   **deps:** use the latest extend ([#&#8203;141](https://www.github.com/googleapis/nodejs-paginator/issues/141)) ([61b383e](https://www.github.com/googleapis/nodejs-paginator/commit/61b383e))

    </details>

    ---

    ### Renovate configuration

    📅 **Schedule**: "after 9am and before 3pm" (UTC).

    🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

    ♻️ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

    ---

     - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

    ---

    This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-bigquery).

* fix(deps): update dependency @google-cloud/promisify to v2 (#657)

5d8112c
commit 5d8112c
Author: WhiteSource Renovate <bot@renovateapp.com>
Date:   Tue Mar 31 19:48:07 2020 +0200

    fix(deps): update dependency @google-cloud/promisify to v2 (#657)

    This PR contains the following updates:

    | Package | Type | Update | Change |
    |---|---|---|---|
    | [@google-cloud/promisify](https://togithub.com/googleapis/nodejs-promisify) | dependencies | major | [`^1.0.0` -> `^2.0.0`](https://renovatebot.com/diffs/npm/@google-cloud%2fpromisify/1.0.4/2.0.0) |

    ---

    ### Release Notes

    <details>
    <summary>googleapis/nodejs-promisify</summary>

    ### [`v2.0.0`](https://togithub.com/googleapis/nodejs-promisify/blob/master/CHANGELOG.md#&#8203;200-httpswwwgithubcomgoogleapisnodejs-promisifycomparev104v200-2020-03-23)

    [Compare Source](https://togithub.com/googleapis/nodejs-promisify/compare/v1.0.4...v2.0.0)

    ##### ⚠ BREAKING CHANGES

    -   update to latest version of gts/typescript ([#&#8203;183](https://togithub.com/googleapis/nodejs-promisify/issues/183))
    -   drop Node 8 from engines field ([#&#8203;184](https://togithub.com/googleapis/nodejs-promisify/issues/184))

    ##### Features

    -   drop Node 8 from engines field ([#&#8203;184](https://www.github.com/googleapis/nodejs-promisify/issues/184)) ([7e6d3c5](https://www.github.com/googleapis/nodejs-promisify/commit/7e6d3c54066d89530ed25c7f9722efd252f43fb8))

    ##### Build System

    -   update to latest version of gts/typescript ([#&#8203;183](https://www.github.com/googleapis/nodejs-promisify/issues/183)) ([9c3ed12](https://www.github.com/googleapis/nodejs-promisify/commit/9c3ed12c12f4bb1e17af7440c6371c4cefddcd59))

    ##### [1.0.4](https://www.github.com/googleapis/nodejs-promisify/compare/v1.0.3...v1.0.4) (2019-12-05)

    ##### Bug Fixes

    -   **deps:** pin TypeScript below 3.7.0 ([e48750e](https://www.github.com/googleapis/nodejs-promisify/commit/e48750ef96aa20eb3a2b73fe2f062d04430468a7))

    ##### [1.0.3](https://www.github.com/googleapis/nodejs-promisify/compare/v1.0.2...v1.0.3) (2019-11-13)

    ##### Bug Fixes

    -   **docs:** add jsdoc-region-tag plugin ([#&#8203;146](https://www.github.com/googleapis/nodejs-promisify/issues/146)) ([ff0ee74](https://www.github.com/googleapis/nodejs-promisify/commit/ff0ee7408f50e8f7147b8ccf7e10337aa5920076))

    ##### [1.0.2](https://www.github.com/googleapis/nodejs-promisify/compare/v1.0.1...v1.0.2) (2019-06-26)

    ##### Bug Fixes

    -   **docs:** link to reference docs section on googleapis.dev ([#&#8203;128](https://www.github.com/googleapis/nodejs-promisify/issues/128)) ([5a8bd90](https://www.github.com/googleapis/nodejs-promisify/commit/5a8bd90))

    ##### [1.0.1](https://www.github.com/googleapis/nodejs-promisify/compare/v1.0.0...v1.0.1) (2019-06-14)

    ##### Bug Fixes

    -   **docs:** move to new client docs URL ([#&#8203;124](https://www.github.com/googleapis/nodejs-promisify/issues/124)) ([34d18cd](https://www.github.com/googleapis/nodejs-promisify/commit/34d18cd))

    </details>

    ---

    ### Renovate configuration

    📅 **Schedule**: "after 9am and before 3pm" (UTC).

    🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

    ♻️ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

    ---

     - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

    ---

    This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-bigquery).

* fix(deps): update dependency google-auth-library to v6 (#660)

3ea642e
commit 3ea642e
Author: WhiteSource Renovate <bot@renovateapp.com>
Date:   Tue Mar 31 19:58:07 2020 +0200

    fix(deps): update dependency google-auth-library to v6 (#660)

    This PR contains the following updates:

    | Package | Type | Update | Change |
    |---|---|---|---|
    | [google-auth-library](https://togithub.com/googleapis/google-auth-library-nodejs) | dependencies | major | [`^5.8.0` -> `^6.0.0`](https://renovatebot.com/diffs/npm/google-auth-library/5.10.1/6.0.0) |

    ---

    ### Release Notes

    <details>
    <summary>googleapis/google-auth-library-nodejs</summary>

    ### [`v6.0.0`](https://togithub.com/googleapis/google-auth-library-nodejs/blob/master/CHANGELOG.md#&#8203;600-httpswwwgithubcomgoogleapisgoogle-auth-library-nodejscomparev5101v600-2020-03-26)

    [Compare Source](https://togithub.com/googleapis/google-auth-library-nodejs/compare/v5.10.1...v6.0.0)

    ##### ⚠ BREAKING CHANGES

    -   typescript@3.7.x introduced some breaking changes in
        generated code.
    -   require node 10 in engines field ([#&#8203;926](https://togithub.com/googleapis/google-auth-library-nodejs/issues/926))
    -   remove deprecated methods ([#&#8203;906](https://togithub.com/googleapis/google-auth-library-nodejs/issues/906))

    ##### Features

    -   require node 10 in engines field ([#&#8203;926](https://www.github.com/googleapis/google-auth-library-nodejs/issues/926)) ([d89c59a](https://www.github.com/googleapis/google-auth-library-nodejs/commit/d89c59a316e9ca5b8c351128ee3e2d91e9729d5c))

    ##### Bug Fixes

    -   do not warn for SDK creds ([#&#8203;905](https://www.github.com/googleapis/google-auth-library-nodejs/issues/905)) ([9536840](https://www.github.com/googleapis/google-auth-library-nodejs/commit/9536840f88e77f747bbbc2c1b5b4289018fc23c9))
    -   use iamcredentials API to sign blobs ([#&#8203;908](https://www.github.com/googleapis/google-auth-library-nodejs/issues/908)) ([7b8e4c5](https://www.github.com/googleapis/google-auth-library-nodejs/commit/7b8e4c52e31bb3d448c3ff8c05002188900eaa04))
    -   **deps:** update dependency gaxios to v3 ([#&#8203;917](https://www.github.com/googleapis/google-auth-library-nodejs/issues/917)) ([1f4bf61](https://www.github.com/googleapis/google-auth-library-nodejs/commit/1f4bf6128a0dcf22cfe1ec492b2192f513836cb2))
    -   **deps:** update dependency gcp-metadata to v4 ([#&#8203;918](https://www.github.com/googleapis/google-auth-library-nodejs/issues/918)) ([d337131](https://www.github.com/googleapis/google-auth-library-nodejs/commit/d337131d009cc1f8182f7a1f8a9034433ee3fbf7))
    -   **types:** add additional fields to TokenInfo ([#&#8203;907](https://www.github.com/googleapis/google-auth-library-nodejs/issues/907)) ([5b48eb8](https://www.github.com/googleapis/google-auth-library-nodejs/commit/5b48eb86c108c47d317a0eb96b47c0cae86f98cb))

    ##### Build System

    -   update to latest gts and TypeScript ([#&#8203;927](https://www.github.com/googleapis/google-auth-library-nodejs/issues/927)) ([e11e18c](https://www.github.com/googleapis/google-auth-library-nodejs/commit/e11e18cb33eb60a666980d061c54bb8891cdd242))

    ##### Miscellaneous Chores

    -   remove deprecated methods ([#&#8203;906](https://www.github.com/googleapis/google-auth-library-nodejs/issues/906)) ([f453fb7](https://www.github.com/googleapis/google-auth-library-nodejs/commit/f453fb7d8355e6dc74800b18d6f43c4e91d4acc9))

    ##### [5.10.1](https://www.github.com/googleapis/google-auth-library-nodejs/compare/v5.10.0...v5.10.1) (2020-02-25)

    ##### Bug Fixes

    -   if GCF environment detected, increase library timeout ([#&#8203;899](https://www.github.com/googleapis/google-auth-library-nodejs/issues/899)) ([2577ff2](https://www.github.com/googleapis/google-auth-library-nodejs/commit/2577ff28bf22dfc58bd09e7365471c16f359f109))

    </details>

    ---

    ### Renovate configuration

    📅 **Schedule**: "after 9am and before 3pm" (UTC).

    🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

    ♻️ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

    🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

    ---

     - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

    ---

    This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/nodejs-bigquery).

* build: set AUTOSYNTH_MULTIPLE_COMMITS=true for context aware commits (#665)

3f78914
commit 3f78914
Author: Benjamin E. Coe <bencoe@google.com>
Date:   Tue Mar 31 18:35:04 2020 -0700

    build: set AUTOSYNTH_MULTIPLE_COMMITS=true for context aware commits (#665)

* docs: document the release schedule we follow (#454)

googleapis/synthtool@6a17abc
commit 6a17abc7652e2fe563e1288c6e8c23fc260dda97
Author: Benjamin E. Coe <bencoe@google.com>
Date:   Mon Mar 23 19:22:34 2020 -0700

    docs: document the release schedule we follow (#454)

* fix: do not run node 8 CI (#456)

googleapis/synthtool@1b4cc80
commit 1b4cc80a7aaf164f6241937dd87f3bd1f4149e0c
Author: Alexander Fenster <fenster@google.com>
Date:   Wed Mar 25 08:01:31 2020 -0700

    fix: do not run node 8 CI (#456)

* fix: update template files for Node.js libraries (#463)

googleapis/synthtool@9982024
commit 99820243d348191bc9c634f2b48ddf65096285ed
Author: Alexander Fenster <fenster@google.com>
Date:   Tue Mar 31 11:56:27 2020 -0700

    fix: update template files for Node.js libraries (#463)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: bigquery Issues related to the googleapis/nodejs-bigquery API. type: process A process-related concern. May include testing, release, or the like.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants