From 150afd3e88ba2f9151121e35ec6829e3ec03df34 Mon Sep 17 00:00:00 2001 From: Alexander Paschenko Date: Fri, 6 Oct 2017 15:17:19 +0300 Subject: [PATCH 1/3] IGNITE-6568 cache descriptor SQL attribute store/restore fix --- .../ignite/internal/processors/cache/ClusterCachesInfo.java | 1 + .../ignite/internal/processors/query/GridQueryProcessor.java | 2 ++ .../database/IgnitePersistentStoreSchemaLoadTest.java | 2 ++ 3 files changed, 5 insertions(+) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java index 5e2c8db939a1e..b4cc9c550eec1 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java @@ -1219,6 +1219,7 @@ public ExchangeActions onStateChangeRequest(ChangeGlobalStateMessage msg, Affini req.startCacheConfiguration(ccfg); req.cacheType(ctx.cache().cacheType(ccfg.getName())); req.schema(new QuerySchema(storedCfg.queryEntities())); + req.sql(storedCfg.sql()); reqs.add(req); } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java index 56e8a42d76f8b..40f9b2de375c4 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java @@ -2547,6 +2547,8 @@ private void saveCacheConfiguration(DynamicCacheDescriptor desc) { if (desc.schema() != null) data.queryEntities(desc.schema().entities()); + data.sql(desc.sql()); + cctx.pageStore().storeCacheData(data, true); } catch (IgniteCheckedException e) { diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgnitePersistentStoreSchemaLoadTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgnitePersistentStoreSchemaLoadTest.java index 85ce4d8986e43..a408596ca9291 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgnitePersistentStoreSchemaLoadTest.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/IgnitePersistentStoreSchemaLoadTest.java @@ -208,6 +208,8 @@ private void checkSchemaStateAfterNodeRestart(boolean aliveCluster) throws Excep node.active(true); checkDynamicSchemaChanges(node, SQL_CACHE_NAME); + + node.context().query().querySqlFieldsNoCache(new SqlFieldsQuery("drop table \"Person\""), false).getAll(); } /** */ From 8821b4af50c276351123240e6170ab7d749ed790 Mon Sep 17 00:00:00 2001 From: Alexander Paschenko Date: Fri, 6 Oct 2017 18:47:02 +0300 Subject: [PATCH 2/3] IGNITE-6568 fix continued --- .../internal/processors/cache/CacheAffinitySharedManager.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java index 741e204449aad..e1ab1bcb70f01 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java @@ -2509,8 +2509,6 @@ private DynamicCacheDescriptor registerCache(DynamicCacheDescriptor desc) { * @param grpDesc Group description. */ private CacheGroupDescriptor registerGroup(CacheGroupDescriptor grpDesc) { - saveCacheConfiguration(grpDesc.config()); - return registeredGrps.put(grpDesc.groupId(), grpDesc); } From 7a62e779ca7a36c578c2073eb6abb9f130196798 Mon Sep 17 00:00:00 2001 From: Alexander Paschenko Date: Fri, 6 Oct 2017 18:54:16 +0300 Subject: [PATCH 3/3] IGNITE-6568 fix continued 2 --- .../cache/CacheAffinitySharedManager.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java index e1ab1bcb70f01..a413adea04665 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheAffinitySharedManager.java @@ -2500,7 +2500,7 @@ void init(Map grps, Map cfg) { + private void saveCacheConfiguration(CacheConfiguration cfg, boolean sql) { if (cctx.pageStore() != null && cctx.database().persistenceEnabled() && !cctx.kernalContext().clientNode()) { try { - cctx.pageStore().storeCacheData( - new StoredCacheData(cfg), - false); + StoredCacheData data = new StoredCacheData(cfg); + + data.sql(sql); + + cctx.pageStore().storeCacheData(data, false); } catch (IgniteCheckedException e) { U.error(log(), "Error while saving cache configuration on disk, cfg = " + cfg, e);