[ https://issues.apache.org/jira/browse/GEODE-8601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17312485#comment-17312485 ]
ASF subversion and git services commented on GEODE-8601: -------------------------------------------------------- Commit db82746d2ed72a8d88651e4912a4d3805a2507b3 in geode-native's branch refs/heads/develop from Mario Salazar de Torres [ https://gitbox.apache.org/repos/asf?p=geode-native.git;h=db82746 ] GEODE-8601: Replace ExpiryTaskManager ACE implementation by boost::asio one (#678) * GEODE-8601: Replace ExpiryTaskManager impl - Now ExpiryTaskManager implementation uses boost::asio. - Handlers have been replaced by ExpiryTasks, which will serve as base to each custom expiry task. - Add a generic ExpiryTask implementation which accepts an std::function as on_expire callback. - Refactored EntryExpiryHandler code to use new ExpiryTask implementation. - Class has been renamed to EntryExpiryTask. However file has not being renamed so git log is not lost. This will be addressed in the next commit. - As class has been previously renamed, now files have also been renamed to EntryExpiryTask.{h,c}pp - Refactored RegionExpiryHandler to use the new ExpiryTask implementation. - Renamed RegionExpiryHandler class to RegionExpiryTask. Note that files have not been renamed in order to avoid git log from being lost. This will be addressed in the following commit. - Moved TombstoneEntry into a separate file, for clarity's shake. - Code has been refactored, so only thing stored is: * Task ID. * Validity flag. This is a new flag added to avoid race conditions. This way, tombstone entries can be now invalidated. * Actual entry's reference. - Refactored TomstoneExpiryHandler to use new ExpiryTask implementation. - TombstoneExpiryHandler class files have been renamed to TombstoneExpiryTask.{h,c}pp. - Refactored SuspendedTxExpiryHandler to use the new implementation of the ExpiryTask. - Renamed SuspendedTxExpiryHandler to SuspendedTxExpiryTask. - Renamed SuspendedTxExpiryHandler files to SuspendedTxExpiryTask.{h,c}pp - Used new id_t types from ExpiryTask rather than the ones from ExpiryTaskManager for the TXState class. - Chnged setter names to comply with Google style guide. - Setters have been left the same as they are part of the public API. Consider if it's possible to change these names. - Modified CLI's CacheStatistics to convert between system and steady time_points. - Changed CacheImpl to integrate with the new implementation of the ExpiryTaskManager. - While doing several refactors to adapt to the new ExpiryTaskManager implementation it has been considered convinient to split MapEntry.hpp into several files so everything is more readable. - Minor refactors. - TombstoneList has been completely refactored to better adapt the new implementation of ExpiryTaskManager. - Now ExpiryTask is created and scheduled in the add method, rather than having two separate methods. - Refactored TcrConnectionManager to use the new ExpiryTaskManager implementation. - Removed unused code in TcrConnectionManager related to expiry tasks. - Changes made to integrate with the new implementation of the ExpiryTaskManager. - Refactored LocalRegion class to integrate with the new ExpiryTaskManager implementation. - system_clock has been replaced by steady_clock which is a monotonic one. - Refactored PreservedDataExpiryHandler to integrate with the new implementation of ExpiryTaskManager. - Renamed PreservedDataExpiryHandler to PreservedDataExpiryTask. File renaming has been left for the following commit in order to avoid git log from being lost. - Added the possiblity to internally reset the task, based on the expiration time point. - Fixed preserved expiry task as the entry was being removed from a copy, rather than the actual map. - Renamed PreservedDataExpiryHandler class files. - Refactored PdxRemotePreservedData to integrate with the new ExpiryTaskManager implementation. - Added expiration time point. - Refactored PdxTypeRegistry to integrate new ExpiryTaskManager implementation. - Refactored ThinClientRedundancyManager to integrate with the new ExpiryTaskmanager implementation. - Refactored ThinClientPoolHADM to integrate with the new ExpiryTaskManager implementation. - Refactored ThinClientPoolDM to integrate with the new ExpiryTaskManager implementation. - Replaced 1ms sleep in cleanStaleConnections by thread yield in order to guarantee thread is re-scheduled as soon as possible. - Refactored CLI cache MemoryPressureHandler to integrate with the new ExpiryTaskManager implementation. - Renamed class to MemoryPressureTask. Files renaming left to the next commit to avoid git log from being lost. - Change integrated in DistributedSystem. - Note that this task is not schduled per-se, however has been left as it was before, in order not to change the behavior. - Renamed MemoryPressureHandler class files to MemoryPressureTask.{h,c}pp - Modified CMakeLists.txt to use new files. - Integrated change in DistributedSystem - Due to previous refactor, somne includes were missing both in PdxLocalReader and PdxRemoteWriter. - Added missing includes in PdxInstanceImplTest after previous refactor. - Added a mock for ExpiryTask. - Added UTs for ExpiryTaskManager. - Added ExpiryTask UTs. - Added Google Mock extensions. - Modified ExpiryTask mock to expose reset method. - Added Boost linking to testobject and old integrations test to enforce using BOOST_ALL_NO_LIB preprocessor variable while compiling. - Some implementations of ExpiryTask were exported. While that's not being necessary it was causing a compilation error in Windows due to the base class not being also exported. Exposure is removed. - Fixed steady/system clock differences. Now CacheStatistics return system clock timepoint, but uses steady timepoint as internal representation. Also, added 2 new non-virtual methods to obtain steady timepoint. - Used string like logging for EntryExpiryTask. - Added Boost to legacy integration tests as in order to avoid clang-tidy reporting boost issues it's needed to include boost headers as system. - Removed unused C# MemoryPressureTask > Replace ACE ExpiryTaskManager impl by boost::asio one > ----------------------------------------------------- > > Key: GEODE-8601 > URL: https://issues.apache.org/jira/browse/GEODE-8601 > Project: Geode > Issue Type: Improvement > Components: native client > Reporter: Mario Salazar de Torres > Assignee: Mario Salazar de Torres > Priority: Major > Labels: obliterate-ace, pull-request-available > > *AS A* native client contributor > *I WOULD LIKE* to replace ACE implementation of ExpiryTaskManager for a > boost::asio one > *SO THAT* all issues related to it disappear, the implementation is more > simple and move away from ACE as it's the project policy for a while. > — > *Additional information* > Current implementation of ExpiryTaskManager is causing issue GEODE-8535 and > some other related, not yet reported. > Also, as I am aware the project is moving away from ACE, so I'd say this is > the perfect oportunity to replace ExpiryTaskManager implementation. -- This message was sent by Atlassian Jira (v8.3.4#803005)