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

avoid racyness from the polling library #15856

Merged
merged 3 commits into from
Apr 3, 2024
Merged

Conversation

tgummerer
Copy link
Collaborator

The library we're using unfortunately has a race condition that's especially worse when using polling to check for new changes of the file. Avoid this racyness by sleeping for a bit for now, but really this should be fixed upstream ideally.

I opened a upstream issue for this in nxadm/tail#67. I think we should merge this in the meantime, as it makes this work, even though it's very hacky.

I tested this in #15853, where I could no longer reproduce the failure we've seen before.

Fixes #15659
Fixes #15235

The library we're using unfortunately has a race condition that's
especially worse when using polling to check for new changes of the
file.  Avoid this racyness by sleeping for a bit for now, but really
this should be fixed upstream ideally.
@tgummerer tgummerer requested a review from a team as a code owner April 3, 2024 08:37
@pulumi-bot
Copy link
Contributor

pulumi-bot commented Apr 3, 2024

Changelog

[uncommitted] (2024-04-03)

Bug Fixes

  • [auto/go] Avoid flakyness when reading the event log from pulumi commands
    #15856

Copy link
Member

@justinvp justinvp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely a hack, but seems like a reasonable workaround in the meantime until it's fixed upstream... Would be great if we could submit a PR upstream with a fix.

Comment on lines +1459 to +1467
// The tail library we're using is racy when shutting down.
// If it gets the shutdown signal before reading the data, it
// will just shut down before finding the EoF. This problem
// is exacerbated on Windows, where we use the poller, which
// polls for changes every 250ms. Sleep a little bit longer
// than that to ensure the tail library had a chance to read
// the whole file. On OSs that don't use the poller we still
// want to try to avoid the problem so we sleep for a short
// amount of time.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we include a link to nxadm/tail#67 in the comment?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea, done ✔️

@tgummerer
Copy link
Collaborator Author

Would be great if we could submit a PR upstream with a fix.

Yup, I was planning to do that next week after the hackathon is over, since I was going to prioritize the hackathon, but also really wanted to improve the CI situation first.

@tgummerer tgummerer enabled auto-merge April 3, 2024 18:53
@tgummerer tgummerer added this pull request to the merge queue Apr 3, 2024
Merged via the queue into master with commit 98fc51e Apr 3, 2024
49 checks passed
@tgummerer tgummerer deleted the tg/unflake-go-automatino branch April 3, 2024 19:52
github-merge-queue bot pushed a commit that referenced this pull request Apr 11, 2024
Tentative changelog:


### Features

- [cli] Support always fully qualifying stack names in CLI output
  [#15857](#15857)

- [cli] Add --no-plugins and --no-dependencies to `pulumi install`
  [#15910](#15910)

- [docs] Implement Java constructor syntax examples
  [#15805](#15805)

- [sdk/nodejs] Make TypeScript and ts-node optional peer dependencies to
allow using user specified versions
  [#15622](#15622)

- [sdk/{nodejs,python}] Allow apply to have unknown values during
updates
  [#15898](#15898)

- [sdk/python] Adds 'typeChecker' runtime option to the Python language
host
  [#15725](#15725)


### Bug Fixes

- [auto] Tolerate missing stack and bookkeeping files in ProgramTest.
  [#15863](#15863)

- [cli] Fix a panic when user's home directory could not be looked up
  [#15872](#15872)

- [cli] Fix some commands that didn't respect
`--disable-integrity-checking`

- [programgen/dotnet] Removes trailing whitespace from emitted DependsOn
resource option expressions
  [#15892](#15892)

- [auto/go] Avoid flakyness when reading the event log from pulumi
commands
  [#15856](#15856)

- [sdk/go] Fix Provider and Providers options in Go transform functions
  [#15885](#15885)

- [sdk/nodejs] Handle serialization of aliases for well known native
functions
  [#15873](#15873)

- [sdk/nodejs] Correctly serialise functions whose code would make use
of reserved identifiers
  [#15879](#15879)

- [sdk/nodejs] Serialize function values obtained from Function.bind
  [#15887](#15887)

- [sdk/python] Improve types of getters in Python SDK
  [#15865](#15865)

- [sdkgen/{dotnet,go}] Fixes SDK-generation when referencing shared
types in config variables
  [#15772](#15772)


### Miscellaneous

- [sdk/nodejs] Update builtin module list for function serialization
  [#15830](#15830)

- [sdk/nodejs] Set package.json engines to node >= 18
  [#15845](#15845)
@justinvp justinvp mentioned this pull request Apr 11, 2024
github-merge-queue bot pushed a commit that referenced this pull request Apr 12, 2024
### Features

- [cli] Support always fully qualifying stack names in CLI output
  [#15857](#15857)

- [cli] Add --no-plugins and --no-dependencies to `pulumi install`
  [#15910](#15910)

- [docs] Implement Java constructor syntax examples
  [#15805](#15805)

- [sdk/nodejs] Make TypeScript and ts-node optional peer dependencies to
allow using user specified versions
  [#15622](#15622)

- [sdk/{nodejs,python}] Allow apply to have unknown values during
updates
  [#15898](#15898)

- [sdk/python] Adds 'typeChecker' runtime option to the Python language
host
  [#15725](#15725)


### Bug Fixes

- [auto] Tolerate missing stack and bookkeeping files in ProgramTest.
  [#15863](#15863)

- [cli] Fix a panic when user's home directory could not be looked up
  [#15872](#15872)

- [cli] Fix some commands that didn't respect
`--disable-integrity-checking`
  [#15911](#15911)

- [programgen/dotnet] Removes trailing whitespace from emitted DependsOn
resource option expressions
  [#15892](#15892)

- [auto/go] Avoid flakyness when reading the event log from pulumi
commands
  [#15856](#15856)

- [sdk/go] Fix Provider and Providers options in Go transform functions
  [#15885](#15885)

- [sdk/nodejs] Handle serialization of aliases for well known native
functions
  [#15873](#15873)

- [sdk/nodejs] Correctly serialise functions whose code would make use
of reserved identifiers
  [#15879](#15879)

- [sdk/nodejs] Serialize function values obtained from Function.bind
  [#15887](#15887)

- [sdk/python] Improve types of getters in Python SDK
  [#15865](#15865)

- [sdkgen/{dotnet,go}] Fixes SDK-generation when referencing shared
types in config variables
  [#15772](#15772)


### Miscellaneous

- [sdk/nodejs] Update builtin module list for function serialization
  [#15830](#15830)

- [sdk/nodejs] Set package.json engines to node >= 18
  [#15845](#15845)
@justinvp justinvp mentioned this pull request Apr 12, 2024
github-merge-queue bot pushed a commit that referenced this pull request Apr 15, 2024
### Features

- [auto/{go,nodejs,python}] Add support for continue-on-error parameter
of the destroy command to the Automation API
  [#15921](#15921)

- [cli] Support always fully qualifying stack names in CLI output
  [#15857](#15857)

- [cli] Add --no-plugins and --no-dependencies to `pulumi install`
  [#15910](#15910)

- [docs] Implement Java constructor syntax examples
  [#15805](#15805)

- [sdk/nodejs] Make TypeScript and ts-node optional peer dependencies to
allow using user specified versions
  [#15622](#15622)

- [sdk/{nodejs,python}] Allow apply to have unknown values during
updates
  [#15898](#15898)

- [sdk/python] Add 'typeChecker' runtime option to the Python language
host
  [#15922](#15922)
  [#15725](#15725)


### Bug Fixes

- [auto] Tolerate missing stack and bookkeeping files in ProgramTest
  [#15922](#15922)
  [#15863](#15863)

- [cli] Fix a panic when user's home directory could not be looked up
  [#15872](#15872)

- [cli] Fix some commands that didn't respect
`--disable-integrity-checking`
  [#15911](#15911)

- [programgen/dotnet] Remove trailing whitespace from emitted DependsOn
resource option expressions
  [#15922](#15922)
  [#15892](#15892)

- [auto/go] Avoid flakyness when reading the event log from pulumi
commands
  [#15856](#15856)

- [sdk/go] Fix Provider and Providers options in Go transform functions
  [#15885](#15885)

- [sdk/nodejs] Handle serialization of aliases for well known native
functions
  [#15873](#15873)

- [sdk/nodejs] Correctly serialise functions whose code would make use
of reserved identifiers
  [#15879](#15879)

- [sdk/nodejs] Serialize function values obtained from Function.bind
  [#15887](#15887)

- [sdk/python] Improve types of getters in Python SDK
  [#15865](#15865)

- [sdkgen/{dotnet,go}] Fix SDK-generation when referencing shared types
in config variables
  [#15772](#15772)
  [#15922](#15922)


### Miscellaneous

- [sdk/nodejs] Update builtin module list for function serialization
  [#15830](#15830)

- [sdk/nodejs] Set package.json engines to node >= 18
  [#15845](#15845)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

go/auto TestStructuredOutput is flaky go/auto TestUpsertStackInlineSourceParallel is flaky
3 participants