Naming JMX monitor threads, awaiting termination
Changes related to better memory management of the service:
* moved release logic from ScenarioCleanupStage to new ScenarioDestroyStage (configured in <destroy />)
* ScenarioDestroyStage is automatically inserted after the last user-stage but before ScenarioCleanupStage
* all stages on Slave but the ScenarioCleanupStage are executed in separate thread: otherwise we could leak memory through ThreadLocals
* ScenarioCleanupStage is executed in main thread but cannot use any traits: service was already destroyed
* added some tweaks to Infinispan and Coherence services to force shutdown of some threads
* automatically deregistering Infinispan MBeans
* unfinished threads can be stopped using Thread.stop()
* ScenarioInit got property for preparing heap dump
Fixed link to timelines
One more script fix
* Logging stressors/checker records status
* Check for no-progress on checker record basis
Logging: changed log.trace(String.format("...", ...)) to log.tracef("...", ...) (and the same for other logging levels)
Fixed typo in method name
Generalized control flow in scenario
* return value of DistStage.processAckOnMaster and MasterStage.execute changed from boolean to StageResult
* StageResult can either let scenario proceed with next stage, fail scenario, exit whole benchmark or jump to arbitrary label
* labels are strings that point to certain stages
* 'repeat' does not insert stages multiple times; it uses RepeatBeginStage and RepeatEndStage with labels instead
* ${repeat.counter} (or ${repeat.xxx.counter}) is not added as 'extra' property, it is stored as regular State variable
* added 'loop' which creates appropriate labels and inserts/increments State property ${loop.counter} (or ${loop.xxx.counter})
* refactored BaseDistStage out of AbstractDistStage, as common base for some internal stages
* reporters do not get reference to Scenario anymore; instead, Report contains description of the executed scenario
Refactoring of StressTestStage
* removed ClientStressTestStage: repeat or loop should be used instead
* removed StressTestWarmupStage: just set test-name="warmup" (or leave this empty)
* stage hierarchy:
** TestStage spawns the threads, and also manages transactions
** CacheTestStage provides key and value generators and entry-size
** CacheOperationsTestStage provides key selector
*** CollidingKeysSelector replaces shared-keys="true"
*** ConcurrentKeysSelector replaces shared-keys="false"
** xOperationsTestStages implement the logic for invoking operations
** KeyExpirationTestStage replaces fixed-keys="false"
* Stressor does not need the ugly switch for operation type, OperationLogic calls it with Invocation instance
* removed variants of operations from some traits, now the derivations are defined inside Invocations
* ReflexiveListConverter -> ReflexiveConverters.ListConverter, added ReflexiveConverters.ObjectConverter for single object
* fixed XSD schema generator (each property can be defined as element only once), forcing element count provided to ComplexConverter
Performance condition
* allows to control the loop according to latest performance results
* integrated into TestStage
NumberObjectGenerator: ranges have to be computed as longs
Better error handling of stage initialization.
Output defaults again to stdout_slave_$LOG4J_PREFIX.out
Added default server configuration to JDG 6.2.x plugin
AnnotatedHelper can lookup both core and libs
* fixes in XSD generation
* ReflexiveConverters can search for implementing classes
Refactored how statistics are used from TestStage
* statistics prototype is loaded through ReflexiveConverter as a property
* removed HistogramStatistics and HistogramOperationStats -> will be added as extension
Added HistogramOperationStats, and refactored bar chart generation
* mean and stddev retrieved from HistogramOperationsStats seems sometimes suffering from some HdrHistogram bug
* batching mode recognized as transactional
* trace logging of transactional operations
Implemented transactional loading
* workaround for Infinispan returning the same cache for no-return and force-return caches
* reimplemented some operations that had API throwing UnsupportedOperationExceptions
* added trace logging