Skip to content

Commit

Permalink
GG-22572 Possible deadlock between exchange-worker and PartitionEvict…
Browse files Browse the repository at this point in the history
…ionTask runner
  • Loading branch information
EdShangGG committed Aug 27, 2019
1 parent 73ba62f commit 318f240
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
import org.apache.ignite.failure.FailureContext;
import org.apache.ignite.failure.FailureType;
import org.apache.ignite.internal.NodeStoppingException;
import org.apache.ignite.internal.metric.IoStatisticsHolder;
import org.apache.ignite.internal.pagemem.FullPageId;
import org.apache.ignite.internal.pagemem.wal.record.delta.DataPageMvccMarkUpdatedRecord;
import org.apache.ignite.internal.pagemem.wal.record.delta.DataPageMvccUpdateNewTxStateHintRecord;
Expand Down Expand Up @@ -92,7 +93,6 @@
import org.apache.ignite.internal.processors.cache.tree.mvcc.search.MvccTreeClosure;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.query.GridQueryRowCacheCleaner;
import org.apache.ignite.internal.metric.IoStatisticsHolder;
import org.apache.ignite.internal.transactions.IgniteTxUnexpectedStateCheckedException;
import org.apache.ignite.internal.util.GridAtomicLong;
import org.apache.ignite.internal.util.GridCloseableIteratorAdapter;
Expand Down Expand Up @@ -1265,7 +1265,7 @@ protected CacheDataStore createCacheDataStore0(int p) throws IgniteCheckedExcept
}

/** {@inheritDoc} */
@Override public final void destroyCacheDataStore(CacheDataStore store) throws IgniteCheckedException {
@Override public void destroyCacheDataStore(CacheDataStore store) throws IgniteCheckedException {
int p = store.partId();

partStoreLock.lock(p);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -836,20 +836,27 @@ private static boolean addPartition(
}

/** {@inheritDoc} */
@Override protected void destroyCacheDataStore0(CacheDataStore store) throws IgniteCheckedException {
assert ctx.database() instanceof GridCacheDatabaseSharedManager
: "Destroying cache data store when persistence is not enabled: " + ctx.database();

int partId = store.partId();

@Override public void destroyCacheDataStore(CacheDataStore store) throws IgniteCheckedException {
ctx.database().checkpointReadLock();

try {
saveStoreMetadata(store, null, true, false);
super.destroyCacheDataStore(store);
}
finally {
ctx.database().checkpointReadUnlock();
}
}

/** {@inheritDoc} */
@Override protected void destroyCacheDataStore0(CacheDataStore store) throws IgniteCheckedException {
assert ctx.database() instanceof GridCacheDatabaseSharedManager
: "Destroying cache data store when persistence is not enabled: " + ctx.database();

assert ctx.database().checkpointLockIsHeldByThread();

int partId = store.partId();

saveStoreMetadata(store, null, true, false);

((GridCacheDatabaseSharedManager)ctx.database()).schedulePartitionDestroy(grp.groupId(), partId);
}
Expand Down

0 comments on commit 318f240

Please sign in to comment.