Cache API, serializable transactions, cluster state и affinity
Эта страница — публичная реконструкция продуктовой спецификации по исходникам тестов Apache Ignite 2 на ревизии 486a6367610c4c891b729e89373695ef83165345.
Эти требования описывают совместимость базового Cache API, поведение serializable transactions при конфликтах, семантику activation/deactivation, cache groups и сходимость affinity при изменениях топологии и жизненного цикла cache.
Пользовательские гарантии
- Базовые cache operations сохраняют API semantics во всей проверенной матрице cache configurations, включая synchronous/asynchronous формы и варианты transaction/cache mode.
- Serializable optimistic transactions отвергают устаревшие конфликтующие решения, сохраняют committed values и позволяют non-conflicting операциям commit.
- Переходы cluster state согласованно распространяют cache availability и read-only/inactive behavior между servers и clients, включая проверенные join/reconnect/failover cases.
- Cache groups сохраняют per-cache isolation при общей инфраструктуре; late affinity assignment сходится после изменений topology и cache lifecycle.
Трассируемые требования
После имени теста указывается только негативный или неоднозначный статус, например status=failed, status=flaky, status=ignored или status=mixed.
CACHE-API-VARIATIONS-01 — базовый Cache API согласованно работает в разных вариантах конфигурации cache
Требование: Для конфигураций Ignite cache, покрытых IgniteCacheConfigVariationsFullApiTest, user-visible cache operations должны сохранять JCache/Ignite API semantics across atomic/transactional variants, synchronous и async forms, transaction modes, local/global operations, skip-store views, expiry, locks, entry processors, iterators, и entry access APIs.
Зачем это нужно: приложения должны иметь возможность переключать cache mode, transaction mode и async/sync форму API без потери базовой семантики cache и без несовместимого edge-case behavior.
Граница: Это широкая compatibility-сетка, а не одно минимальное доказательство. Некоторые методы делегируют проверки в inherited helper suites, а часть entries требует просмотра helpers вместо прямых локальных assertion lines. Это не доказывает каждую пользовательскую cache configuration, persistence mode, topology timing или failure mode.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testAtomicOpsorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testCacheProxyorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testClearorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testCompactExpiredorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testContainsKeyorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testContainsKeysTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testContainsKeyTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testContinuousQueryorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testDeletedEntriesFlagorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testEvictExpiredorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAllorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAllAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAllAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAllWithNullsorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndPutAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndPutAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndPutIfAbsentorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndPutIfAbsentAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndPutIfAbsentAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndPutSerializableObjectorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndRemoveorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndRemoveObjectorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndReplaceorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndReplaceAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAndReplaceAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetEntryorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetOutTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetOutTxAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetOutTxAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGetTxNonExistingKeyorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearAllorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearAllAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearAllAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearKeyorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearKeyAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearKeyAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearKeysorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearKeysAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalClearKeysAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalRemoveAllorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalRemoveAllAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testGlobalRemoveAllAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testIgniteCacheIteratororg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testIgniteInvokeOptimisticReadCommitted1org.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testIgniteInvokeOptimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testIgniteInvokePessimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testIgniteInvokePessimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAfterRemoveOptimisticorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAfterRemovePessimisticorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllAsyncOptimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllAsyncOptimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllAsyncPessimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllAsyncPessimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllOptimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllOptimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllPessimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllPessimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAllWithNullsorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeExceptionorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeOptimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeOptimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokePessimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokePessimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeReturnValueGetOptimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeReturnValueGetOptimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeReturnValueGetPessimisticReadCommittedorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeReturnValueGetPessimisticRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeReturnValuePutInTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeSequentialOptimisticNoStartorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeSequentialOptimisticWithStartorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeSequentialPessimisticNoStartorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testInvokeSequentialPessimisticWithStartorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testIteratororg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testLoadAllorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testLocalClearKeyorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testLocalClearKeysorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testLocalEvictorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testLockInsideTransactionorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testLockUnlockorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testLockUnlockAllorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testNullInTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testOptimisticTxMissingKeyorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testOptimisticTxMissingKeyNoCommitorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testOptimisticTxReadCommittedInTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testOptimisticTxRepeatableReadInTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPeekorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPeekExpiredorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPeekExpiredTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPeekRemoveorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPeekTxRemoveOptimisticorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPeekTxRemovePessimisticorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPessimisticTxMissingKeyorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPessimisticTxMissingKeyNoCommitorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPessimisticTxReadCommittedInTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPessimisticTxRepeatableReadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPessimisticTxRepeatableReadInTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPessimisticTxRepeatableReadOnUpdateorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutAllorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutAllAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutAllAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutAllWithNullsorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutAsync0org.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutAsyncOld0org.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutIfAbsentorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutIfAbsentAsyncConcurrentorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutIfAbsentAsyncOldConcurrentorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutxIfAbsentAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutxIfAbsentAsyncNoTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutxIfAbsentAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutxIfAbsentAsyncOldNoTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testPutxNoTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAfterClearorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAllAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAllAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAllDuplicatesorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAllDuplicatesTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAllEmptyorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAllSkipStoreorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAllWithNullsorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveInExplicitLocksorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemoveLoadorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemovexAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testRemovexAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testReplaceorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testReplacexAsyncorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testReplacexAsyncOldorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testSizeorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testToMaporg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testTtlNoTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testTtlNoTxOldEntryorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testTtlTxorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testWithSkipStoreorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testWithSkipStoreRemoveAllorg.apache.ignite.internal.processors.cache.IgniteCacheConfigVariationsFullApiTest.testWithSkipStoreTx
TX-SERIALIZABLE-01 — read-only и read-write serializable optimistic transactions commit/rollback с visible all-node state
Требование: Under the CacheSerializableTransactionsTest fixture, serializable optimistic transactions должны оставлять read-only transactions side-effect-free, make committed writes visible on server/client cache views, и discard rolled-back writes.
Зачем это нужно: Пользователи полагаются на serializable isolation чтобы make transaction outcome deterministic across partitioned/replicated, backup, store, и near-cache configurations.
Граница: Покрывает the fixture’s generated cache configurations и test key placement helpers; не доказывает arbitrary transaction workloads or non-optimistic serializable variants.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxCommitorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxCommitReadOnly1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxCommitReadOnly2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxCommitReadOnlyGetAllorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxCommitReadOnlyGetEntriesorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxCommitReadWriteTwoNodesorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxRollback
TX-SERIALIZABLE-02 — concurrent writes that invalidate serializable reads cause optimistic transaction rollback
Требование: If an optimistic serializable transaction reads a key or entry и another transaction changes that read key до commit, Ignite должен отвергать the stale transaction с TransactionOptimisticException и сохраняют the concurrent committed value; transactions whose read set является не invalidated may commit.
Зачем это нужно: Это the core serializable conflict contract: пользователям нужны stale decisions чтобы fail rather than silently overwrite concurrent committed data.
Граница: Conflicts являются deterministic helper scenarios over выбранные primary/backup/near keys. Тесты не доказывают starvation freedom or каждый operation interleaving.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testReadLockPessimisticTxConflictorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testReadWriteTxConflictorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictCasReplaceorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictGetAndPut1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictGetAndPut2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictGetAndPutIfAbsentorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictGetAndRemove1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictGetAndRemove2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictGetAndReplaceorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictInvoke1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictInvoke2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictInvoke3org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictInvoke4org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictPutIfAbsentorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictReadEntryRemove1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictReadEntryRemove2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictReadEntryWrite1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictReadEntryWrite2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictReadWrite3org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictRemoveReturnBoolean1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictRemoveReturnBoolean2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictRemoveWithOldValueorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxConflictReplace
TX-SERIALIZABLE-03 — non-conflicting serializable updates и contains/read checks commit, включая partial-lock rollback cases
Требование: Optimistic serializable transactions должен commit updates когда their read set является не invalidated, возвращают in-transaction reads согласованный с the transaction’s own writes/removes, и roll back the full transaction if a required key является externally locked.
Зачем это нужно: Пользователям нужны serializable transactions чтобы быть strict about real conflicts без rejecting safe writes, и partial lock ошибка должен не leave partial data behind.
Граница: Does не доказывают fairness or timeout policy; lock-conflict cases являются controlled two-key helper scenarios.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxNoConflictContainsKey1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxNoConflictContainsKey2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxNoConflictPut1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxNoConflictPut2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxNoConflictPut3org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxNoConflictRemove1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxNoConflictRemove2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxNoConflictRemove3org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxRollbackIfLocked1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxRollbackIfLocked2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxRollbackIfLocked3
TX-SERIALIZABLE-04 — serializable transactions сохраняют near-cache, cross-cache, account-transfer, и restart/concurrency invariants
Требование: Serializable transactions должны сохранять committed values coherent across near caches, multiple caches in one transaction, repeated increments, get/remove races, account-transfer workloads, topology restarts, и mixed serializable/non-serializable concurrent updates без deadlock or invariant loss.
Зачем это нужно: Real deployments combine clients, near caches, multiple caches, restarts, и mixed transaction styles; serializable isolation является useful only if global invariants survive those operational shapes.
Граница: Several являются stress/timed scenarios и доказывают absence of observed violations, не exhaustive liveness. Publish only после reviewing each helper-backed workload.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testAccountTx1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testAccountTx2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testAccountTxNearCacheorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testAccountTxNodeRestartorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testAccountTxWithNonSerializableorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testConcurrentUpdateNoDeadlockFromClientsNodeRestartorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testConcurrentUpdateNoDeadlockWithNonSerializableorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testConflictResolutionorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testCrossCacheTxorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testGetRemoveTxorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testGetRemoveTxNearCache1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testGetRemoveTxNearCache2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testIncrementTx1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testIncrementTx2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testIncrementTxMultipleNodeRestartorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testIncrementTxNearCache1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testIncrementTxNearCache2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testIncrementTxRestartorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testMultipleOptimisticReadorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testNearCacheReaderUpdateorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testNoOptimisticExceptionOnChangingTopologyorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testRandomOperationsorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testReadWriteAccountTxorg.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testRollbackNearCache1org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testRollbackNearCache2org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testRollbackNearCache3org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testRollbackNearCache4org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest.testTxReadInParallerTxWrite
CLUSTER-STATE-01 — cluster activation/deactivation propagates cache availability across servers и clients
Требование: Transitioning a cluster between INACTIVE, ACTIVE, и ACTIVE_READ_ONLY из server or client nodes должен consistently раскрывают or hide configured caches on все joined nodes, включая repeated active-inactive-active cycles.
Зачем это нужно: Операторам нужны state changes чтобы быть cluster-wide и repeatable; приложения cannot tolerate split cache visibility после activation or deactivation.
Граница: Packet helper доказательства являются indirect; точные helper assertions должен быть reviewed до splitting into public spec clauses.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateFailover1org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateFailover2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateFailover3org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateInReadOnlySimple_5_Serversorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateInReadOnlySimple_5_Servers_5_Clientsorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateInReadOnlySimple_5_Servers_5_Clients_FromClientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateInReadOnlySimple_5_Servers2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateSimple_5_Serversorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateSimple_5_Servers_5_Clientsorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateSimple_5_Servers_5_Clients_FromClientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateSimple_5_Servers2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateWithReadOnlyFailover1org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateWithReadOnlyFailover2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testActivateWithReadOnlyFailover3org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFromReadOnlySimple_5_Serversorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFromReadOnlySimple_5_Servers_5_Clientsorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFromReadOnlySimple_5_Servers_5_Clients_FromClientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFromReadOnlySimple_5_Servers2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateSimple_5_Serversorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateSimple_5_Servers_5_Clientsorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateSimple_5_Servers_5_Clients_FromClientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateSimple_5_Servers2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testReActivateInReadOnlySimple_5_Servers_4_Clients_FromClientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testReActivateInReadOnlySimple_5_Servers_4_Clients_FromServerorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testReActivateSimple_5_Servers_4_Clients_FromClientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testReActivateSimple_5_Servers_4_Clients_FromServer
CLUSTER-STATE-02 — joining и reconnecting nodes converge во время cluster-state transitions
Требование: Server/client nodes that join or reconnect при этом activation/deactivation является complete or in progress должен converge чтобы the final cluster state и корректный cache visibility после the transition completes.
Зачем это нужно: State transitions являются operational events; nodes joining во время them должен не require manual repair or наблюдают durable inconsistent state.
Граница: Timing является controlled by TestRecordingCommunicationSpi; this является deterministic race harness, не proof для все network partitions.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterActivatedorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterActivatedReadOnlyorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterActivateInProgressorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterActivateReadOnlyInProgressorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterActiveorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterActiveReadOnlyorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterDeactivatedorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterDeactivatedFromReadOnlyorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterDeactivateFromReadOnlyInProgressorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterDeactivateInProgressorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testClientReconnectClusterInactiveorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testConcurrentJoinAndActivateorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testConcurrentJoinAndActivateInReadOnlyorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileActivate1_Clientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileActivate1_Serverorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileActivate1_WithCache_Serverorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileActivateInReadOnly1_Clientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileActivateInReadOnly1_Serverorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileActivateInReadOnly1_WithCache_Serverorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileDeactivate1_Clientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileDeactivate1_Serverorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileDeactivate1_WithCache_Serverorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileDeactivateFromReadOnly1_Clientorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileDeactivateFromReadOnly1_Serverorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testJoinWhileDeactivateFromReadOnly1_WithCache_Server
CLUSTER-STATE-03 — state-change failover и MXBean deactivation сохраняют final state rules
Требование: Activation, deactivation, и read-only enable/disable должны завершаться чтобы a coherent final state despite node failures/restarts во время the transition, и JMX deactivation должен enforce data-loss warnings unless persistence or forced deactivation makes it safe.
Зачем это нужно: Операторам нужны state-change commands и management APIs чтобы быть reliable во время failover и conservative about in-memory data loss.
Граница: Failover patterns являются specific чтобы blocked transition messages и выбранные node indexes; JMX requirement includes точные diagnostic text.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFailover1org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFailover2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFailover3org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFromReadOnlyFailover1org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFromReadOnlyFailover2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateFromReadOnlyFailover3org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDeactivateMXBeanorg.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDisableReadOnlyFailover1org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDisableReadOnlyFailover2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testDisableReadOnlyFailover3org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testEnableReadOnlyFailover1org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testEnableReadOnlyFailover2org.apache.ignite.internal.processors.cache.IgniteClusterActivateDeactivateTest.testEnableReadOnlyFailover3
CACHE-GROUPS-01 — caches sharing a group остаются logically isolated при этом sharing group infrastructure
Требование: Caches в одной cache group должны сохранять per-cache data isolation, expiry policy behavior, iterators, scan queries, continuous query listeners, loadCache sources, и full cache API behavior across partitioned/replicated и atomic/transactional modes.
Зачем это нужно: Cache groups являются an operational/storage optimization; пользователи должен не see one cache’s data, query events, store loads, or API operations leak into another cache in the same group.
Граница: Some helper-backed API и query groups нужны representative review; listener timing uses bounded waits.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheApiAtomicPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheApiAtomicReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheApiTxPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheApiTxReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheIteratorAtomicPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheIteratorAtomicReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheIteratorTxPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheIteratorTxReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testContinuousQueriesMultipleGroups1org.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testContinuousQueriesMultipleGroups2org.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testContinuousQueryAtomicPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testContinuousQueryAtomicReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testContinuousQueryTxPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testContinuousQueryTxReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testDataCleanuporg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testEntriesTtlAtomicPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testEntriesTtlAtomicReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testEntriesTtlTxPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testEntriesTtlTxReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testLoadCacheAtomicPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testLoadCacheAtomicReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testLoadCacheTxPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testLoadCacheTxReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testScanQueryMultiplePartitionsAtomicPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testScanQueryMultiplePartitionsAtomicReplicatedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testScanQueryMultiplePartitionsTxPartitionedorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testScanQueryMultiplePartitionsTxReplicated
CACHE-GROUPS-02 — cache group metadata, rebalance, и lifecycle остаются согласованный при joins, many caches, destroy, restart, и concurrency
Требование: Cache-group discovery metadata, per-cache ids, rebalance contents, partition iterators, key spaces, и lifecycle cleanup должен оставаться согласованный при этом caches являются started/destroyed, nodes join/restart, и concurrent operations continue.
Зачем это нужно: Операторы могут безопасно использовать grouped caches at scale only if metadata и partition ownership stay корректный через topology и lifecycle churn.
Граница: Stress/concurrency тесты являются time/iteration bounded и полагаются на absence of unexpected errors; точные внутренний cache-map assertions являются implementation-facing доказательства для a user-visible lifecycle consistency requirement.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testCacheIdSortorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testConcurrentOperationsAndCacheDestroyorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testConcurrentOperationsSameKeysorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testDiscoveryDataConsistency1org.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testNoKeyIntersectAtomicorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testNoKeyIntersectTxorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testRebalance1org.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testRebalance2org.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testRestartsAndCacheCreateDestroyorg.apache.ignite.internal.processors.cache.IgniteCacheGroupsTest.testStartManyCaches
LATE-AFFINITY-01 — late affinity assignment converges чтобы expected ideal/public affinity после topology/cache changes
Требование: Ignite должен delay и then publish affinity assignments so public affinity APIs и внутренний ready versions converge после server/client joins/leaves, coordinator absence, cache create/destroy/recreate, и client cache start/close.
Зачем это нужно: Correct routing, partition ownership, и service placement depend on nodes agreeing about affinity после topology и cache lifecycle changes.
Граница: Many assertions live in affinity helpers и внутренний exchange futures; random stop и concurrent static-cache cases являются stress доказательства.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testAffinitySimpleClientNodeEvents1org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testAffinitySimpleClientNodeEvents2org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testAffinitySimpleNoCacheOnCoordinator1org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testAffinitySimpleNodeLeave1org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testAffinitySimpleNodeLeave2org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testAffinitySimpleNodeLeaveClientAffinityorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testAffinitySimpleStopRandomNodeorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testCacheDestroyAndCreate1org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testCacheDestroyAndCreate2org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testCacheStartDestroyorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testClientCacheStartCloseorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testConcurrentStartStaticCachesorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testConcurrentStartStaticCachesWithClientNodesorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testCreateCloseClientCacheOnCoordinator1org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testCreateCloseClientCacheOnCoordinator2org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testDelayAssignmentCoordinatorLeave1org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testDelayAssignmentCoordinatorLeave2org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testInitCacheReceivedOnJoinorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testServiceReassignorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testSinglePartitionCacheNonOwnerLeftorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testSinglePartitionCacheOwnerLeftorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testStreamer1
LATE-AFFINITY-02 — blocked exchange-finish и delayed-assignment races не раскрывают premature or inconsistent affinity
Требование: When exchange-finish messages, supply messages, coordinator leave, custom affinity-change events, or unexpected PME timing являются blocked/released, Ignite должен не mark later affinity versions ready prematurely и должен converge чтобы identical partitions после the exchange completes.
Зачем это нужно: During topology churn, premature affinity readiness can route reads/writes/services чтобы the wrong owner or сообщать о a стабильный topology that является не actually стабильный.
Граница: Это a race harness с synthetic message blocking и bounded sleeps; absence из ошибка snapshot является не clean pass signal.
Тесты-доказательства:
org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testBlockedFinishMsg4org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testBlockedFinishMsg5org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testBlockedFinishMsg6org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testBlockedFinishMsg7org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testBlockedFinishMsg8org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testBlockedFinishMsg9org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testCoordinatorLeaveAfterNodeLeavesDelayAssignmentorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testDelayAssignmentAffinityChangedorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testDelayAssignmentAffinityChangedUnexpectedPMEorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testDelayAssignmentCacheDestroyCreateorg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testJoinExchangeBecomeCoordinatororg.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest.testRandomOperations
Важные границы
- Многие entries являются broad compatibility nets over inherited helpers; each helper-backed subgroup должен быть reviewed до becoming a narrow normative clause.
- Restart, random, concurrent, blocked-exchange, и failover доказательства являются bounded by the deterministic test harness и observed absence of violations.
- Absence из the local failure-only snapshot является не passing-run guarantee.