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

EJBCLIENT-276 Add support for JTA stickiness #324

Merged
merged 3 commits into from
Sep 29, 2017

Conversation

n1hility
Copy link
Member

@n1hility n1hility commented Sep 28, 2017

This commit includes the following changes:

  • Refactors transaction handling to maintain a mapping of applications to a
    target destination on the transaction, thereby sticking proxy invocations for
    all beans in that application against the same target node. Additionally the
    change prefers nodes already associated with a transaction when new
    applications are encountered. The end result is that a transaction will
    typically be associated with a single host until it is completed. If, however,
    the host does not have the requested bean, this change will maintain an
    additional association with a host that does. This leads to a given
    transaction having a set of possible associations, and a preference for those
    associations.

  • Corrects affinity association with session open requests, in the case that the
    server does not provide one.

  • Fixes invocation retries when a remote UserTransaction is used.

  • Fixes XA delistment in the case of a retryable error (e.g. not found)

  • Introduces a comprehensive set of tests for verifying transactional behavior
    against a load-balanced multi-node configuration:

    • Verifies node stickiness when a transaction is active.

    • Verifies distribution across nodes when multiple transactions are used.

    • Verifies retried invocations rebalance.

    • Verifies transaction preference across applications.

    • Verifies non-propogating client TX attributes result in expected node
      distribution.

    • Verifies session open requests as well as general invocations

    • Verifies affinity on session open results in non-propogating
      client TX stickiness vs distribution

    • Verifies Remote and Local transaction stickiness

n1hility and others added 3 commits September 28, 2017 10:01
This commit includes the following changes:

- Refactors transaction handling to maintain a mapping of applications to a
  target destination on the transaction, thereby sticking proxy invocations for
  all beans in that application against the same target node. Additionally the
  change prefers nodes already associated with a transaction when new
  applications are encountered.  The end result is that a transaction will
  typically be associated with a single host until it is completed. If, however,
  the host does not have the requested bean, this change will maintain an
  additional association with a host that does. This leads to a given
  transaction having a set of possible associations, and a preference for those
  associations.

- Corrects affinity association with session open requests, in the case that the
  server does not provide one.

- Fixes invocation retries when a remote UserTransaction is used.

- Fixes XA delistment in the case of a retryable error (e.g. not found)

- Introduces a comprehensive set of tests for verifying transactional behavior
  against a load-balanced multi-node configuration:

  + Verifies node stickiness when a transaction is active.

  + Verifies distribution across nodes when multiple transactions are used.

  + Verifies retried invocations rebalance.

  + Verifies transaction preference across applications.

  + Verifies non-propogating client TX attributes result in expected node
    distribution.

  + Verifies session open requests as well as general invocations

  + Verifies affinity on session open results in non-propogating
    client TX stickiness vs distribution

  + Verifies Remote and Local transaction stickiness
@dmlloyd dmlloyd merged commit 9d5e416 into wildfly:master Sep 29, 2017
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.

2 participants