[ 
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)

Reply via email to