commit | cbe25281938b442be2087adde540935e1985888c | [log] [tgz] |
---|---|---|
author | Mario Salazar de Torres <mario.salazar.de.torres@est.tech> | Mon Nov 30 17:58:52 2020 +0100 |
committer | GitHub <noreply@github.com> | Mon Nov 30 08:58:52 2020 -0800 |
tree | ce7c0e9d369f1a5fe2b43e595ddeb3ac4c4a0868 | |
parent | fcf95b32773783e86976e34c0ccfc9987fa63fec [diff] |
GEODE-8537: Solve memory increase when LRU eviction is enabled (#687) * GEODE-8537: Refactor LRUList - LRUEntryProperties has been put into a separate file. - LRUList has been entirely refactored. It now uses STL's deque as base implementation. Implements the following methods: * push * pop * remove * move_to_end * size * clear - LRUList has been renamed to LRUQueue. * GEODE-8537: Integrate LRUQueue into LRU entries map - Refactored LRUEntriesMap to integrate with the new implementation of LRUQueue. * GEODE-8537: Fix compilation - After the changes made to both LRUQueue and LRUEntryProperties, compilation was broken. - This commit solves that. * GEODE-8537: Add UTs for LRUQueue - Added UTs for LRUQueue. - Added a mock for MapEntryImpl. - Removed testLRUList from old integration tests as has been replaced by the UT TS. * GEODE-8537: Solve EvictionController malfunction - EvictionController and EvictionThread was causing an inter-lock and also there was a race-condition which made LRU eviction not to be accurate. - In order to solve EvictionController malfunction the following things have been changed: * Now evictions are made by the EvictionController and the EvictionThread has been removed as in addition to the inter-lock, it was causing some unnecessary overhead. * EvictionController queue has been replaced by the heap size itself as an atomic variable. So now, eviction happens directly whenever heap size overflows the established limit, without having to sum up the deltas on the queue. - Additionally heap size counter in the LRUEntriesMap has been replaced by an atomic counter, getting rid therefore of the mutex. * GEODE-8537: Add LRU eviction integration tests - Added a new integrations TS to verify LRU eviction functionality. * GEODE-8537: Remove wrong test from old ITs - After implementing the new LRUQueue I noticed that testRegionMap.TestRecentlyUsedBit was failing and I noticed that the test was wrongly implemented. - Having set LRU entries limit to 10 and getting key "15" you could not expect that after putting keys [20, 35], key "15" would be still there. - Also the test has been replaced by one new integration test called LRUEvictionTest.verifyLruOrderGet * GEODE-8537: Revision 2 - Used mixed case in the EvictionController. - Removed debugging trace which was left during development. * GEODE-8537: Revision 3 - After discussing about the nature of LRUQueue, it seems that std::mutex is a better alternative to make LRUQueue thread-safe, so it's now the mutex used. * GEODE-8537: Re-trigger CI
Overview
Building from Source
Application Development
Native Client is a client implementation for Apache Geode that does not require the Java server JARs.
Directions to build Native Client from source can be found in the source distribution in BUILDING.md.
Native Client applications can be written in these client technologies:
This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.
The following provides more details on the included cryptographic software: