You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Code/Framework/AzCore/Tests
lumberyard-employee-dm 9060423592
Settings registry notification deadlock fix (#3065)
* Added a StealHandlers function to AZ Event

The StealHandlers function is able to take all the handlers from an AZ
Event parameter and register them with the current AZ Event

This allows stealing handlers from expiring AZ Events, which is useful
for a lock and swap algorithm for thread safety.
1. Lock persistent AZ::Event
2. Swap persistent AZ::Event with local AZ::Event
3. Unlock persistent AZ::Event - Other threads can now add to this
   AZ::Event
4. Invoke handlers from local AZ::Event
5. Relock persistent AZ::Event
5. Swap local AZ::Event with persistent AZ::Event
6. Local AZ::Event now contains handlers that were added when the lock
   was free
7. Persistent AZ::Event now steals from local AZ::Event
8. Unlock persistent AZ::Event

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Separated SettingRegistry update/query mutex from Notifier update mutex

The Settings Registry update/query mutex is also better scoped to reduce
the amount of lock time.

The Notifier mutex being separate allows the Settings Registry to signal
a notification event without being under any mutex, by locking and
swapping the notifier event with a local instance

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>

* Renamed StealHandlers function to ClaimHandlers
Replaced decltype keywords in ClaimHandlers to auto

Signed-off-by: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com>
4 years ago
..
AZStd Merge branch 'development' into cmake/SPEC-7484 4 years ago
AZTestShared Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Asset Disabling a flaky test (#2749) ContainerFilterTest_ContainersWithAndWithoutFiltering_Success 4 years ago
Console Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Debug Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
EBus Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
IO/Path FixedMaxPathString replacement 4 years ago
Math [GHI 2178] Vegetation Debugger info was sometimes getting culled (#2209) 4 years ago
Memory Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Name Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Platform Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
RTTI Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Serialization/Json Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Settings Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Streamer Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
AssetJsonSerializerTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
AssetManager.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
AssetSerializerTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
AzEnumTest.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
BehaviorContext.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
BehaviorContextFixture.h Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Components.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
DLL.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
DLLMainTest.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Debug.cpp More windows/linux fixes 4 years ago
Driller.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
EBus.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
EntityIdTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
EntityTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
EnumTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
EventTests.cpp Settings registry notification deadlock fix (#3065) 4 years ago
FileIOBaseTestTypes.h Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
FixedWidthIntegers.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
GenericStreamMock.h Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
GenericStreamTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Geometry2DUtils.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
IPC.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Interface.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
IntersectPoint.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
JSON.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Jobs.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Main.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Memory.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Module.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
ModuleTestBus.h Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
OrderedEventBenchmarks.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
OrderedEventTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Outcome.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Patching.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
RemappableId.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Rtti.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Script.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
ScriptMath.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
ScriptProperty.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Serialization.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
SerializeContextFixture.h Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
SettingsRegistryMergeUtilsTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
SettingsRegistryTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Slice.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
State.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
StatisticalProfiler.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
Statistics.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
StreamerTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
StringFunc.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
SystemFile.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
TaskTests.cpp Remove TaskGraph::Drain which was only added initially for testing 4 years ago
TestCatalog.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
TestCatalog.h Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
TickBusTest.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
TimeDataStatistics.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
UUIDTests.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
XML.cpp Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
azcoretestdll_files.cmake Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago
azcoretests_files.cmake JobGraph -> TaskGraph (and associated classes/files) 4 years ago
aztestshared_files.cmake Shorten copyright headers by splitting into 2 lines (#2213) 5 years ago