Skip to content

Conversation

@srkukarni
Copy link
Contributor

Motivation

For functions running in Threadruntime, javainstanceRunnable is potentially called at two places. Once inside the run loop of javainstancerunnable itself in the finally clause, and one outside in the threadruntime. The logic exists to make sure that its called atleast once. However often it ends up being called in two places. This causes some potential errors while doing source/sink closes since their classloading is unloaded in close, thus the second close potentially causes a classNotFoundError.
This pr modifies the logic of close to put back all variables to null, as well as adding a sync clause to make sure that these two calls don't step on each other.

Modifications

Describe the modifications you've done.

Verifying this change

  • Make sure that the change passes the CI checks.

(Please pick either of the following options)

This change is a trivial rework / code cleanup without any test coverage.

(or)

This change is already covered by existing tests, such as (please describe tests).

(or)

This change added tests and can be verified as follows:

(example:)

  • Added integration tests for end-to-end deployment with large payloads (10MB)
  • Extended integration test for recovery after broker failure

Does this pull request potentially affect one of the following parts:

If yes was chosen, please highlight the changes

  • Dependencies (does it add or upgrade a dependency): (yes / no)
  • The public API: (yes / no)
  • The schema: (yes / no / don't know)
  • The default values of configurations: (yes / no)
  • The wire protocol: (yes / no)
  • The rest endpoints: (yes / no)
  • The admin cli options: (yes / no)
  • Anything that affects deployment: (yes / no / don't know)

Documentation

  • Does this pull request introduce a new feature? (yes / no)
  • If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)
  • If a feature is not applicable for documentation, explain why?
  • If a feature is not documented yet in this PR, please create a followup issue for adding the documentation

@srkukarni srkukarni added this to the 2.3.1 milestone Mar 28, 2019
@srkukarni srkukarni self-assigned this Mar 28, 2019
@srkukarni srkukarni requested review from jerrypeng and sijie March 28, 2019 21:06

@Override
public void close() {
synchronized public void close() {
Copy link
Contributor

Choose a reason for hiding this comment

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

can you add a comment to why this method needs to be synchronized for future reference

Copy link
Contributor Author

Choose a reason for hiding this comment

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

added comments

@srkukarni srkukarni merged commit 5740699 into apache:master Mar 28, 2019
@srkukarni srkukarni deleted the function_close_sync branch March 28, 2019 23:23
merlimat pushed a commit that referenced this pull request Mar 29, 2019
* Cleanup logic in JavaInstanceRunnable close method

* Added comments
@merlimat
Copy link
Contributor

merlimat commented Apr 1, 2019

Merged in 2.3.1 at
d1c17cd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants