FISH-10526: update of corba to use new concurrency implementation instead of synchronized blocks #7230
+1
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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:
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:
Testing Environment
windows 11, azul JDK 11 and maven 3.8.6
Documentation
Notes for Reviewers