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

FISH-10526: update of corba to use new concurrency implementation instead of synchronized blocks #7230

Conversation

breakponchito
Copy link
Contributor

@breakponchito breakponchito commented Mar 3, 2025

Updating corba version to use new concurrency implementation

Description

This is a feature to improve the concurrency functionality of the corba implementation when processing big messages. The process to read big messages cause to split in multiple fragments internally processed by multithread functionality. The reported issue from customer mentioned that in some moment most of the threads are in the wait state causing an startvation because any of those threads can get time to continue processing. This will impact the system using most of the resources available and in some moment restart the system to clear resources

Important Info

Blockers

Testing

New tests

Testing Performed

You need to deploy the following EJB on the server:

remoteview.zip

And use the same as a lib for the following stand alone application:

EJBRemoteClient6.zip

This is a remote client implementation that will send 300 requests to the server sending big message each one. This will cause to split the big message in fragments using the internal fragment processing from corba.

On the Main class you will see the remote call configuration to execute the tests with multiple threads creating 300 requests to the server. something important for the standalone application is to indicate the correct path for the modules folder and resolve all dependencies for the EJB Client call configuration:

image

to enable the new implementation with locks you need to set the following property on the system:

com.sun.corba.ee.protocol.enablingNewFragmentProcess=true

by default this is set as false to use the synchonized mechanism

also you can set the timeout time of the internal management of the process to wait for information on the queue with the following property:

com.sun.corba.ee.protocol.newFragmentEmptyConditionTimeout=10000

by default this is set with 10000 milliseconds, the unit for the value is milliseconds and this value is only used when the previous property is set as true

when you enable the new implementation you can send multiple calls of the client sending 300 messages and check with a tool like visualvm the behavior of the system. Here the example of results:

image

Testing Environment

windows 11, azul JDK 11 and maven 3.8.6

Documentation

Notes for Reviewers

Unverified

This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
…tead of synchronized blocks
@breakponchito
Copy link
Contributor Author

Jenkins test please

@breakponchito breakponchito changed the title FISH-10526: update of corba to use new concurrency implementation ins… FISH-10526: update of corba to use new concurrency implementation instead of synchronized blocks Mar 3, 2025
@breakponchito
Copy link
Contributor Author

Jenkins test please

@breakponchito breakponchito marked this pull request as ready for review March 5, 2025 05:24
@breakponchito
Copy link
Contributor Author

Jenkins test please

1 similar comment
@breakponchito
Copy link
Contributor Author

Jenkins test please

This reverts commit 54e57c3.
@Pandrex247 Pandrex247 merged commit e1cbd3f into payara:main Mar 5, 2025
1 check passed
Pandrex247 added a commit to Pandrex247/Payara that referenced this pull request Mar 6, 2025
…g-concurrent-implementation-of-corba-to-use-lock-api

FISH-10526: update of corba to use new concurrency implementation instead of synchronized blocks
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.

None yet

2 participants