Merge branch 'master' into ignite-1786
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9d296c98 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9d296c98 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9d296c98 Branch: refs/heads/ignite-1786 Commit: 9d296c989ab36a3f604391ee5f5967f82d54d20d Parents: 4c6e7fa a9937a6 Author: vozerov-gridgain <[email protected]> Authored: Wed Feb 10 17:16:37 2016 +0300 Committer: vozerov-gridgain <[email protected]> Committed: Wed Feb 10 17:16:37 2016 +0300 ---------------------------------------------------------------------- DEVNOTES.txt | 4 +- .../processors/cache/CacheLazyEntry.java | 3 + .../processors/cache/GridCacheContext.java | 4 +- .../processors/cache/GridCacheMapEntry.java | 118 +++- .../binary/CacheObjectBinaryProcessorImpl.java | 6 +- .../dht/atomic/GridDhtAtomicCache.java | 79 ++- .../dht/atomic/GridDhtAtomicUpdateFuture.java | 85 ++- .../dht/atomic/GridDhtAtomicUpdateRequest.java | 38 +- .../cache/query/GridCacheQueryManager.java | 30 +- .../continuous/CacheContinuousQueryHandler.java | 3 +- .../CacheContinuousQueryListener.java | 2 +- .../continuous/CacheContinuousQueryManager.java | 120 +++- .../continuous/GridContinuousProcessor.java | 16 +- .../IgniteCacheEntryListenerAbstractTest.java | 454 ++++++++---- ...cheEntryListenerAtomicOffheapTieredTest.java | 32 + ...cheEntryListenerAtomicOffheapValuesTest.java | 32 + ...niteCacheEntryListenerExpiredEventsTest.java | 202 ++++++ ...teCacheEntryListenerTxOffheapTieredTest.java | 32 + ...teCacheEntryListenerTxOffheapValuesTest.java | 32 + .../cache/IgniteCacheEntryListenerTxTest.java | 1 + ...ContinuousQueryFailoverAbstractSelfTest.java | 10 + ...tomicPrimaryWriteOrderOffheapTieredTest.java | 33 + ...tinuousQueryFailoverTxOffheapTieredTest.java | 32 + ...acheContinuousQueryRandomOperationsTest.java | 684 +++++++++++++++++++ ...ridCacheContinuousQueryAbstractSelfTest.java | 19 +- ...eContinuousQueryAtomicOffheapTieredTest.java | 32 + ...eContinuousQueryAtomicOffheapValuesTest.java | 32 + ...CacheContinuousQueryTxOffheapTieredTest.java | 32 + ...CacheContinuousQueryTxOffheapValuesTest.java | 32 + .../junits/common/GridCommonAbstractTest.java | 2 +- .../ignite/testsuites/IgniteCacheTestSuite.java | 8 + .../hadoop/fs/BasicHadoopFileSystemFactory.java | 22 +- .../fs/CachingHadoopFileSystemFactory.java | 2 +- .../fs/KerberosHadoopFileSystemFactory.java | 217 ++++++ ...KerberosHadoopFileSystemFactorySelfTest.java | 104 +++ .../testsuites/IgniteHadoopTestSuite.java | 3 + .../cache/CacheQueryBuildValueTest.java | 144 ++++ .../IgniteCacheQuerySelfTestSuite.java | 14 + .../include/ignite/impl/ignite_environment.h | 19 +- .../cpp/binary/src/impl/ignite_environment.cpp | 30 +- modules/platforms/cpp/core-test/Makefile.am | 1 + .../cpp/core-test/project/vs/core-test.vcxproj | 1 + .../project/vs/core-test.vcxproj.filters | 3 + .../platforms/cpp/core-test/src/cache_test.cpp | 12 + .../cpp/core-test/src/interop_memory_test.cpp | 95 +++ .../cpp/core/src/impl/cache/cache_impl.cpp | 2 +- .../commands/tasks/VisorTasksCommand.scala | 4 +- .../scala/org/apache/ignite/visor/visor.scala | 4 + 48 files changed, 2588 insertions(+), 298 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9d296c98/modules/platforms/cpp/binary/include/ignite/impl/ignite_environment.h ---------------------------------------------------------------------- diff --cc modules/platforms/cpp/binary/include/ignite/impl/ignite_environment.h index 2fbdb44,0000000..02facfc mode 100644,000000..100644 --- a/modules/platforms/cpp/binary/include/ignite/impl/ignite_environment.h +++ b/modules/platforms/cpp/binary/include/ignite/impl/ignite_environment.h @@@ -1,130 -1,0 +1,135 @@@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _IGNITE_ENVIRONMENT +#define _IGNITE_ENVIRONMENT + +#include <ignite/common/concurrent.h> +#include <ignite/common/java.h> + +#include "ignite/impl/interop/interop_memory.h" +#include "binary/binary_type_manager.h" + +namespace ignite - { ++{ + namespace impl + { + /** + * Defines environment in which Ignite operates. + */ + class IGNITE_IMPORT_EXPORT IgniteEnvironment - { ++ { + public: + /** ++ * Default memory block allocation size. ++ */ ++ enum { DEFAULT_ALLOCATION_SIZE = 1024 }; ++ ++ /** + * Default constructor. + */ + IgniteEnvironment(); + + /** + * Destructor. + */ + ~IgniteEnvironment(); + + /** + * Populate callback handlers. + * + * @param Target (current env wrapped into a shared pointer). + * @return JNI handlers. + */ + ignite::common::java::JniHandlers GetJniHandlers(ignite::common::concurrent::SharedPointer<IgniteEnvironment>* target); - ++ + /** + * Perform initialization on successful start. + * + * @param ctx Context. + */ + void Initialize(ignite::common::concurrent::SharedPointer<ignite::common::java::JniContext> ctx); + + /** + * Start callback. + * + * @param memPtr Memory pointer. + */ - void OnStartCallback(long long memPtr); - ++ void OnStartCallback(long long memPtr); ++ + /** + * Get name of Ignite instance. + * + * @return Name. + */ + const char* InstanceName() const; + + /** + * Get JNI context. + * + * @return Context. + */ + ignite::common::java::JniContext* Context(); + + /** + * Get memory for interop operations. + * + * @return Memory. + */ + ignite::common::concurrent::SharedPointer<interop::InteropMemory> AllocateMemory(); + + /** + * Get memory chunk for interop operations with desired capacity. + * + * @param cap Capacity. + * @return Memory. + */ + ignite::common::concurrent::SharedPointer<interop::InteropMemory> AllocateMemory(int32_t cap); + + /** + * Get memory chunk located at the given pointer. + * + * @param memPtr Memory pointer. + * @retrun Memory. + */ + ignite::common::concurrent::SharedPointer<interop::InteropMemory> GetMemory(int64_t memPtr); + + /** + * Get type manager. + * + * @param Type manager. + */ + binary::BinaryTypeManager* GetTypeManager(); + private: + /** Context to access Java. */ + ignite::common::concurrent::SharedPointer<ignite::common::java::JniContext> ctx; + + /** Startup latch. */ + ignite::common::concurrent::SingleLatch* latch; + + /** Ignite name. */ + char* name; + + /** Type manager. */ - binary::BinaryTypeManager* metaMgr; ++ binary::BinaryTypeManager* metaMgr; + + IGNITE_NO_COPY_ASSIGNMENT(IgniteEnvironment); + }; - } ++ } +} + +#endif http://git-wip-us.apache.org/repos/asf/ignite/blob/9d296c98/modules/platforms/cpp/binary/src/impl/ignite_environment.cpp ---------------------------------------------------------------------- diff --cc modules/platforms/cpp/binary/src/impl/ignite_environment.cpp index 013a139,0000000..c9c57a0 mode 100644,000000..100644 --- a/modules/platforms/cpp/binary/src/impl/ignite_environment.cpp +++ b/modules/platforms/cpp/binary/src/impl/ignite_environment.cpp @@@ -1,167 -1,0 +1,185 @@@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "ignite/impl/binary/binary_reader_impl.h" +#include "ignite/impl/ignite_environment.h" +#include "ignite/binary/binary.h" + +using namespace ignite::common::concurrent; +using namespace ignite::common::java; +using namespace ignite::impl::interop; +using namespace ignite::impl::binary; +using namespace ignite::binary; + +namespace ignite +{ + namespace impl + { + /** + * OnStart callback. + * + * @param target Target environment. + * @param proc Processor instance (not used for now). + * @param memPtr Memory pointer. + */ + void IGNITE_CALL OnStart(void* target, void* proc, long long memPtr) + { + SharedPointer<IgniteEnvironment>* ptr = static_cast<SharedPointer<IgniteEnvironment>*>(target); + + ptr->Get()->OnStartCallback(memPtr); + } + + /** + * OnStop callback. + * + * @param target Target environment. + */ + void IGNITE_CALL OnStop(void* target) + { + SharedPointer<IgniteEnvironment>* ptr = static_cast<SharedPointer<IgniteEnvironment>*>(target); + + delete ptr; - } ++ } ++ ++ /** ++ * Memory reallocate callback. ++ * ++ * @param target Target environment. ++ * @param memPtr Memory pointer. ++ * @param cap Required capasity. ++ */ ++ void IGNITE_CALL MemoryReallocate(void* target, long long memPtr, int cap) ++ { ++ SharedPointer<IgniteEnvironment>* env = static_cast<SharedPointer<IgniteEnvironment>*>(target); ++ ++ SharedPointer<InteropMemory> mem = env->Get()->GetMemory(memPtr); ++ ++ mem.Get()->Reallocate(cap); ++ } + + IgniteEnvironment::IgniteEnvironment() : ctx(SharedPointer<JniContext>()), latch(new SingleLatch), name(NULL), + metaMgr(new BinaryTypeManager()) + { + // No-op. + } + + IgniteEnvironment::~IgniteEnvironment() + { + delete latch; + + if (name) + delete name; + + delete metaMgr; + } + + JniHandlers IgniteEnvironment::GetJniHandlers(SharedPointer<IgniteEnvironment>* target) + { + JniHandlers hnds = JniHandlers(); + + hnds.target = target; + + hnds.onStart = OnStart; + hnds.onStop = OnStop; + ++ hnds.memRealloc = MemoryReallocate; ++ + hnds.error = NULL; + + return hnds; + } - ++ + void IgniteEnvironment::Initialize(SharedPointer<JniContext> ctx) + { + this->ctx = ctx; - ++ + latch->CountDown(); + } - ++ + const char* IgniteEnvironment::InstanceName() const + { + return name; + } + + JniContext* IgniteEnvironment::Context() + { + return ctx.Get(); + } + + SharedPointer<InteropMemory> IgniteEnvironment::AllocateMemory() + { - SharedPointer<InteropMemory> ptr(new InteropUnpooledMemory(1024)); ++ SharedPointer<InteropMemory> ptr(new InteropUnpooledMemory(DEFAULT_ALLOCATION_SIZE)); + + return ptr; + } + + SharedPointer<InteropMemory> IgniteEnvironment::AllocateMemory(int32_t cap) + { + SharedPointer<InteropMemory> ptr(new InteropUnpooledMemory(cap)); + + return ptr; + } + + SharedPointer<InteropMemory> IgniteEnvironment::GetMemory(int64_t memPtr) + { + int8_t* memPtr0 = reinterpret_cast<int8_t*>(memPtr); + + int32_t flags = InteropMemory::Flags(memPtr0); + + if (InteropMemory::IsExternal(flags)) + { + SharedPointer<InteropMemory> ptr(new InteropExternalMemory(memPtr0)); + + return ptr; + } + else + { + SharedPointer<InteropMemory> ptr(new InteropUnpooledMemory(memPtr0)); + + return ptr; + } + } + + BinaryTypeManager* IgniteEnvironment::GetTypeManager() + { + return metaMgr; + } + + void IgniteEnvironment::OnStartCallback(long long memPtr) + { + InteropExternalMemory mem(reinterpret_cast<int8_t*>(memPtr)); + InteropInputStream stream(&mem); + + BinaryReaderImpl reader(&stream); - ++ + int32_t nameLen = reader.ReadString(NULL, 0); + + if (nameLen >= 0) + { + name = new char[nameLen + 1]; + reader.ReadString(name, nameLen + 1); + } + else + name = NULL; + } + } +} + + + + + http://git-wip-us.apache.org/repos/asf/ignite/blob/9d296c98/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/9d296c98/modules/platforms/cpp/core/src/impl/cache/cache_impl.cpp ----------------------------------------------------------------------
