IGNITE-3936 Added check for already processed key types on load cache. Added info message about started/finished load cache. Improved exceptions messages.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4ee52f0a Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4ee52f0a Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4ee52f0a Branch: refs/heads/master Commit: 4ee52f0a50d9cf8bc64a277f2d02600a832d6ca6 Parents: b3ba8b8 Author: Alexey Kuznetsov <akuznet...@apache.org> Authored: Wed Sep 21 15:37:52 2016 +0700 Committer: Alexey Kuznetsov <akuznet...@apache.org> Committed: Wed Sep 21 15:37:52 2016 +0700 ---------------------------------------------------------------------- .../store/jdbc/CacheAbstractJdbcStore.java | 42 ++++++++++++-------- .../cache/store/jdbc/CacheJdbcPojoStore.java | 5 ++- 2 files changed, 29 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee52f0a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java index a33a1e6..fe8a50b 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheAbstractJdbcStore.java @@ -827,17 +827,31 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, throw new CacheLoaderException("Provided key type is not found in store or cache configuration " + "[cache=" + U.maskName(cacheName) + ", key=" + keyType + "]"); - String selQry = args[i + 1].toString(); + String qry = args[i + 1].toString(); EntryMapping em = entryMapping(cacheName, typeIdForTypeName(kindForName(keyType), keyType)); - futs.add(pool.submit(new LoadCacheCustomQueryWorker<>(em, selQry, clo))); + if (log.isInfoEnabled()) + log.info("Started load cache using custom query [cache=" + U.maskName(cacheName) + + ", keyType=" + keyType + ", query=" + qry + "]"); + + futs.add(pool.submit(new LoadCacheCustomQueryWorker<>(em, qry, clo))); } } else { - Collection<EntryMapping> entryMappings = mappings.values(); + Collection<String> processedKeyTypes = new HashSet<>(); + + for (EntryMapping em : mappings.values()) { + String keyType = em.keyType(); + + if (processedKeyTypes.contains(keyType)) + continue; + + processedKeyTypes.add(keyType); + + if (log.isInfoEnabled()) + log.info("Started load cache [cache=" + U.maskName(cacheName) + ", keyType=" + keyType + "]"); - for (EntryMapping em : entryMappings) { if (parallelLoadCacheMinThreshold > 0) { Connection conn = null; @@ -853,7 +867,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, if (rs.next()) { if (log.isDebugEnabled()) log.debug("Multithread loading entries from db [cache=" + U.maskName(cacheName) + - ", keyType=" + em.keyType() + " ]"); + ", keyType=" + keyType + "]"); int keyCnt = em.keyCols.size(); @@ -876,13 +890,13 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, } futs.add(pool.submit(loadCacheRange(em, clo, upperBound, null, 0))); - - continue; } + + continue; } catch (SQLException e) { - log.warning("Failed to load entries from db in multithreaded mode " + - "[cache=" + U.maskName(cacheName) + ", keyType=" + em.keyType() + " ]", e); + log.warning("Failed to load entries from db in multithreaded mode, will try in single thread " + + "[cache=" + U.maskName(cacheName) + ", keyType=" + keyType + " ]", e); } finally { U.closeQuiet(conn); @@ -891,7 +905,7 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, if (log.isDebugEnabled()) log.debug("Single thread loading entries from db [cache=" + U.maskName(cacheName) + - ", keyType=" + em.keyType() + " ]"); + ", keyType=" + keyType + "]"); futs.add(pool.submit(loadCacheFull(em, clo))); } @@ -900,8 +914,8 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, for (Future<?> fut : futs) U.get(fut); - if (log.isDebugEnabled()) - log.debug("Cache loaded from db: " + U.maskName(cacheName)); + if (log.isInfoEnabled()) + log.info("Finished load cache: " + U.maskName(cacheName)); } catch (IgniteCheckedException e) { throw new CacheLoaderException("Failed to load cache: " + U.maskName(cacheName), e.getCause()); @@ -1941,10 +1955,6 @@ public abstract class CacheAbstractJdbcStore<K, V> implements CacheStore<K, V>, /** {@inheritDoc} */ @Override public Void call() throws Exception { - if (log.isDebugEnabled()) - log.debug("Load cache using custom query [cache= " + U.maskName(em.cacheName) + - ", keyType=" + em.keyType() + ", query=" + qry + "]"); - Connection conn = null; PreparedStatement stmt = null; http://git-wip-us.apache.org/repos/asf/ignite/blob/4ee52f0a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java index 798b84a..dd3e812 100644 --- a/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java +++ b/modules/core/src/main/java/org/apache/ignite/cache/store/jdbc/CacheJdbcPojoStore.java @@ -102,7 +102,8 @@ public class CacheJdbcPojoStore<K, V> extends CacheAbstractJdbcStore<K, V> { return prop.get(obj); } catch (Exception e) { - throw new CacheException("Failed to read object of class: " + typeName, e); + throw new CacheException("Failed to read object property [cache=" + U.maskName(cacheName) + + ", type=" + typeName + ", prop=" + fldName + "]", e); } } @@ -262,7 +263,7 @@ public class CacheJdbcPojoStore<K, V> extends CacheAbstractJdbcStore<K, V> { return builder.build(); } catch (SQLException e) { - throw new CacheException("Failed to read binary object", e); + throw new CacheException("Failed to read binary object: " + typeName, e); } }