0
votes

This has got me absolutely beat.

I have a .NET Core 3.1 React SPA app which references some (private) scoped packages.

This morning I (published via GitHub Actions) a new version of one of the packages.

This new version, and any subsequent versions, have completely bricked my web site - sockjs-node and calls to fonts.google.com now are stuck in "Pending" and the whole thing hangs as shown here.

Normally the startup web traffic looks like this.

Downgrading to a prior version removes the issue completely - so I am assuming at this point it is package-related, trouble is:

  • A source code diff doesn't show any differences in the package output (javascript library) other than the code change

  • I reverted the code change and re-published, this didn't remove the error

  • I completely nuked any cached browser entries, this didn't make a difference

  • The setup-node action in GitHub Actions has recently been updated so I modified the workflow YML on my side to target the specific version prior (this also did not fix the issue):

    steps:
      - uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@aa759c6c94d3800c55b8601f21ba4b2371704cb7
    
  • I thought it was possibly app-specific, so I referenced the new version on a separate app / codebase, this didn't make a difference (it also froze)

  • Tested on Edge, Chrome, Firefox, all the same result: calls to websocket-related endpoints are stuck in pending

  • Tried 'salting the earth' by deleting the local code and cloning the repo and re-installing node_modules - this didn't make a difference

  • The actual changed code was to add the formik.isValid flag (from FormIk v2.1.2) to my returned React Hook (typescript) handler object:

    return {
        errors: formik.errors,
        handleBlur: formik.handleBlur,
        handleChange: formik.handleChange,
        handleRefresh,
        handleReset,
        handleSubmit: formik.handleSubmit,
        isDirty: formik.dirty,
        isLoading: state.isLoading,
        isValid: formik.isValid,
        record: formik.values,
        setFieldValue: formik.setFieldValue,
        setValues: formik.setValues,
        submitForm: formik.submitForm
    };
    

Typically if this has broken dependencies or something I'd have expected a build error, not this particular scenario. And again, after undoing this code change, the new packages still caused the issue.

Any help at all would be appreciated.

UPDATED

I found the cause of the issue - this problematic library was also a dependency of another library which was also running in the app(s); the new version of the built package was not propagating to the dependent. Once this was done, everything worked.

I'm pretty not sure if this is not a blind shot, but if you use something with websocket module, it was recently upgraded to ^8.0.0 and there are some breaking changes: github.com/websockets/ws/releases/tag/8.0.0 For me the killer one was: Text messages and close reasons are no longer decoded to strings. - Fide