Comments (9)
Can report that the work around to increase the low-units to be very close to high-units (this way ensuring that a small number of entries are evicted each time a "prune" is performed) seem to have improved the situation quite a lot (prune still seem more CPU consuming than expected though and now we instead have very frequent prunes which is not ideal either)...
Woulds appreciate info about IF that line that remove the entries from the list as they are processed is really needed (I would naively assume the whole prune operation is executed inside a "synchronized" block preventing any other operations on the local cache and in that case I do not immediately see the need to remove the elements instead of just letting them be and afterwards empty the whole array at once if it is retained or just discard it if it is temporary) and if so if you have some other suggestions of improvements to the code we can add in a "patch" for our own use... maybe use a double linked list instead of an array list that have a O(1) complexity for deleting an entry?!
from coherence.
Hi @javafanboy
So far as I can tell, this is a memory use improvement to address instances of OOM that we saw. It's just to release references early, and I believe should be safe for you to just undo that line. Said references will be released eventually.
If memory usage is not a concern for you, I would say just go ahead and "patch".
We'll investigate this on our side. Thanks for finding it.
from coherence.
from coherence.
I have never tried building Coherence before and when following the instructions it eventually reported build complete (including tests - some where skipped) but nothing shows up under the /dist directory?!
My latest try was with the "mvn -am -pl coherence clean install -DskipTests -Dtde.compile.not.required" that reports the build as successful but leaves dist empty (only original readme file is there)?
A quick search for "coherence*.jar" results in:
/prj/coherence-core-components/target/coherence-core-components-14.1.1-0-13-SNAPSHOT-sources.jar
./prj/coherence-core-components/target/coherence-core-components-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-core/target/coherence-core-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-core/target/coherence-core-14.1.1-0-13-SNAPSHOT-tests.jar
./prj/coherence-core/target/coherence-core-14.1.1-0-13-SNAPSHOT-sources.jar
./prj/coherence-discovery/target/coherence-discovery-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-docker/target/coherence-docker-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-http-netty/target/coherence-http-netty-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-javadoc/target/coherence-javadoc-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-jcache/target/coherence-jcache-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-loadbalancer/target/coherence-loadbalancer-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-login/target/coherence-login-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-management/target/coherence-management-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-metrics/target/coherence-metrics-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-mock/target/coherence-mock-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-rest/target/coherence-rest-14.1.1-0-13-SNAPSHOT-tests.jar
./prj/coherence-rest/target/coherence-rest-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence-testing-support/target/coherence-testing-support-14.1.1-0-13-SNAPSHOT.jar
./prj/coherence/target/coherence-14.1.1-0-13-SNAPSHOT.jar
./prj/test/performance/framework/target/lib/14.1.1-0/coherence.jar
./prj/test/performance/framework/target/coherence-performance-framework-14.1.1-0-13-SNAPSHOT.jar
./prj/test/performance/psr/target/lib/14.1.1-0/coherence.jar
./prj/test/performance/psr/target/coherence-performance-psr-14.1.1-0-13-SNAPSHOT.jar
./prj/test/performance/target/lib/14.1.1-0/coherence.jar
./tde/core-net/3.0/target/coherence.jar
./tde/core/1.3/ext/coherence-core.jar
./tde/core/1.3/ext/coherence-discovery.jar
./tools/tde/lib/coherence.jar
Any ideas what is up?
I did not get the version using git client but rather by downloading a ZIP (selecting v14.1.1.0 as branch) but I assume that should not make any difference.
Also in the v14.1.1 I downloaded there is a readme.txt (in addition to the README.md) that seem to contain some old / misleading instructions (Oracle internal for the Enterprise edition?) that had me confused at first so I actually executed the config files mentioned in it (the linux one that also runs the common) - they seemed quite harmless when I looked at them but mentioning it in case I could have "fucked up" something by running them....
from coherence.
When you build like that (mvn ... install), the jar ends up in the maven repository, usually in ~/.m2/repository/com/oracle/...
Otherwise the main jar can also be found in ./prj/coherence/target/coherence-14.1.1-0-13-SNAPSHOT.jar it's the same file. Useful for debugging or prototyping purposes.
I wouldn't worry about making any mistakes running these config files, Coherence doesn't depend on any "hidden" magic ala Windows registry :)
I'll look into those, at any rate.
from coherence.
from coherence.
As the devs in my project mostly use Windows Laptops I can report that I also tried building 14.1.1.0 under Windows but right away the testApproximateDurationToString (DuratiionTest.java) failed with the message below (I have not tried to figure out why). I used Maven 3.9.0 OpenJDK 1.8, Windows 10.
DurationTest.testApproximateDurationToString:110 expected:<1[.]50ms> but was:<1[,]50ms>
from coherence.
Off the top of my head, I wonder if the DuratiionTest.java
failure is a region thing. I notice in your error message it says, expected:<1[.]50ms> but was:<1[,]50ms>
, i.e the test expects a decimal point (as this is hard coded in the test code), but your region settings use a comma in place of a decimal point (like we do here in Turkey, although my laptop uses English for it region settings). We run all our CI builds on a number of different OS'es including versions of Windows and they all pass but they are all on US based Jenkins slaves. I'm sure we do not run builds with non-English regions, maybe we should try one and see what happens.
from coherence.
The "patch" of removing the line worked - we no longer see minute long delays in eviction where one core run at 100%. No negative effects observed in our testing of removing it.
Do I need to write a "bug report" (this code line still exists in the code base) or will you find a solution based on my findings?
from coherence.
Related Issues (20)
- PagedTopic MBean attributes documentation
- Bad performance pruning large caches HOT 4
- Is there a function to obtain hotkeys implemented HOT 3
- Restrictive license text found in one of the versions of Coherence HOT 5
- Multicast error message on MacOS HOT 6
- Problem with configurating invocation service HOT 3
- How to do grid wide processing per partition? HOT 18
- How to configure the same partitioned cache to be a back cache both for use "in cluster" and with gRPC? HOT 14
- Detail question regarding StreamingAggregator methods and characteristics HOT 3
- Thoughts on running Coherence cluster over multiple availability zones in the cloud... HOT 4
- Possible to insert data directly to front cache without replication to back cache? HOT 2
- Dynamic backups
- Backups in Flash
- Provide a Graddle alternative for Coherence POF Maven plugin HOT 1
- CaffeineCache doesn't track entry and cache size correctly when unit factor is used HOT 1
- Relationship between future releases of Coherence Enterprise/Grid and Coherence Community HOT 3
- Support to change the percentage used for calculating default low-units HOT 1
- Is "-Dtangosol.coherence.override" not used in Coherence CE? Still talking about the old v14 sorry for that.... :-( HOT 7
- initiating connection migration with tmb? HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from coherence.