# Merge remote-tracking branch 'remotes/origin/ignite-1' into ignite-43
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/fd5e15c9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/fd5e15c9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/fd5e15c9 Branch: refs/heads/ignite-54 Commit: fd5e15c9313631dfb27b255156896566c97f7810 Parents: 2a2eb5a 9223d38 Author: sboikov <sboi...@gridgain.com> Authored: Mon Jan 19 14:45:01 2015 +0300 Committer: sboikov <sboi...@gridgain.com> Committed: Mon Jan 19 14:45:01 2015 +0300 ---------------------------------------------------------------------- .../ignite/portables/PortableRawReader.java | 2 +- .../grid/dotnet/GridDotNetConfiguration.java | 14 +++- .../dotnet/GridDotNetPortableConfiguration.java | 28 +++----- .../GridDotNetPortableTypeConfiguration.java | 15 +--- .../org/gridgain/grid/kernal/GridGainEx.java | 76 ++++++++++++++------ .../grid/kernal/GridNodeAttributes.java | 5 +- .../processors/cache/GridCacheAdapter.java | 18 +++-- .../processors/cache/GridCacheContext.java | 2 +- .../processors/cache/GridCacheEntryImpl.java | 2 +- .../GridCacheContinuousQueryAdapter.java | 5 ++ .../GridCacheContinuousQueryFilterEx.java | 32 +++++++++ .../GridCacheContinuousQueryHandler.java | 17 ++++- .../GridCacheContinuousQueryListener.java | 5 ++ .../GridCacheContinuousQueryManager.java | 71 ++++++++++++------ .../interop/GridInteropProcessorAdapter.java | 3 - 15 files changed, 201 insertions(+), 94 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fd5e15c9/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryAdapter.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fd5e15c9/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryHandler.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryHandler.java index 228dfa5,a7ff429..5ab83e1 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryHandler.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryHandler.java @@@ -283,8 -262,7 +291,8 @@@ class GridCacheContinuousQueryHandler<K /** {@inheritDoc} */ @Override public void onListenerRegistered(UUID routineId, GridKernalContext ctx) { - manager(ctx).iterate(internal, routineId, keepPortable()); + if (!entryLsnr) - manager(ctx).iterate(internal, routineId); ++ manager(ctx).iterate(internal, routineId, keepPortable()); } /** {@inheritDoc} */ http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/fd5e15c9/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryManager.java ---------------------------------------------------------------------- diff --cc modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryManager.java index c3a4dfe,2d8e106..6e1eac3 --- a/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryManager.java +++ b/modules/core/src/main/java/org/gridgain/grid/kernal/processors/cache/query/continuous/GridCacheContinuousQueryManager.java @@@ -298,14 -126,12 +298,15 @@@ public class GridCacheContinuousQueryMa * @param lsnrId Listener ID. * @param lsnr Listener. * @param internal Internal flag. + * @param entryLsnr {@code True} if query created for {@link CacheEntryListener}. * @return Whether listener was actually registered. */ + @SuppressWarnings("UnusedParameters") - boolean registerListener(UUID nodeId, UUID lsnrId, GridCacheContinuousQueryListener<K, V> lsnr, boolean internal) { - ListenerInfo<K, V> info = new ListenerInfo<>(lsnr); + boolean registerListener(UUID lsnrId, + GridCacheContinuousQueryListener<K, V> lsnr, + boolean internal, + boolean entryLsnr) { + ListenerInfo<K, V> info = new ListenerInfo<>(lsnr, entryLsnr); boolean added; @@@ -354,31 -190,35 +365,45 @@@ assert info != null; - Set<GridCacheEntry<K, V>> entries; + GridCacheProjectionImpl<K, V> oldPrj = null; - if (cctx.isReplicated()) - entries = internal ? cctx.cache().entrySetx() : - cctx.cache().entrySet(); - else - entries = internal ? cctx.cache().primaryEntrySetx() : - cctx.cache().primaryEntrySet(); + try { + if (keepPortable) { + oldPrj = cctx.projectionPerCall(); - boolean evt = !internal && cctx.gridEvents().isRecordable(EVT_CACHE_QUERY_OBJECT_READ); + cctx.projectionPerCall(cctx.cache().<K, V>keepPortable0()); + } - for (GridCacheEntry<K, V> e : entries) { - GridCacheContinuousQueryEntry<K, V> qryEntry = new GridCacheContinuousQueryEntry<>(cctx, - e, - e.getKey(), - e.getValue(), - null, - null, - null, - CREATED); + Set<GridCacheEntry<K, V>> entries; - info.onIterate(qryEntry, evt); - } + if (cctx.isReplicated()) + entries = internal ? cctx.cache().entrySetx() : + cctx.cache().entrySet(); + else + entries = internal ? cctx.cache().primaryEntrySetx() : + cctx.cache().primaryEntrySet(); + ++ boolean evt = !internal && cctx.gridEvents().isRecordable(EVT_CACHE_QUERY_OBJECT_READ); ++ + for (GridCacheEntry<K, V> e : entries) { - info.onIterate(new GridCacheContinuousQueryEntry<>(cctx, e, e.getKey(), e.getValue(), null, null, null), - !internal && cctx.gridEvents().isRecordable(EVT_CACHE_QUERY_OBJECT_READ)); ++ GridCacheContinuousQueryEntry<K, V> qryEntry = new GridCacheContinuousQueryEntry<>(cctx, ++ e, ++ e.getKey(), ++ e.getValue(), ++ null, ++ null, ++ null, ++ CREATED); + - info.flushPending(); ++ info.onIterate(qryEntry, evt); + } + + info.flushPending(); + } + finally { + if (keepPortable) + cctx.projectionPerCall(oldPrj); + } } /**