[
https://issues.apache.org/jira/browse/GEODE-8601?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17312487#comment-17312487
]
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)