You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/12/19 08:51:55 UTC
[3/4] ignite git commit: IGNITE-3514 C++: Fixed JVM crash on
incorrect configuration
IGNITE-3514 C++: Fixed JVM crash on incorrect configuration
This closes #1354
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a38ae7ec
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a38ae7ec
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a38ae7ec
Branch: refs/heads/ignite-4371
Commit: a38ae7eca125c6a17a468f130502de69e2aac18b
Parents: c530d47
Author: Igor Sapego <is...@gridgain.com>
Authored: Fri Dec 16 19:42:06 2016 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Fri Dec 16 19:42:06 2016 +0300
----------------------------------------------------------------------
.../cpp/core-test/config/cache-test.xml | 1 +
.../platforms/cpp/core-test/config/invalid.xml | 39 ++++++++++++++++++++
.../cpp/core-test/project/vs/core-test.vcxproj | 3 +-
.../project/vs/core-test.vcxproj.filters | 5 ++-
.../cpp/core-test/src/interop_test.cpp | 17 +++++++--
modules/platforms/cpp/core/src/ignition.cpp | 15 ++------
6 files changed, 64 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/a38ae7ec/modules/platforms/cpp/core-test/config/cache-test.xml
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core-test/config/cache-test.xml b/modules/platforms/cpp/core-test/config/cache-test.xml
index 659e12d..0ea5876 100644
--- a/modules/platforms/cpp/core-test/config/cache-test.xml
+++ b/modules/platforms/cpp/core-test/config/cache-test.xml
@@ -115,6 +115,7 @@
</property>
</bean>
</property>
+ <property name="socketTimeout" value="300" />
</bean>
</property>
http://git-wip-us.apache.org/repos/asf/ignite/blob/a38ae7ec/modules/platforms/cpp/core-test/config/invalid.xml
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core-test/config/invalid.xml b/modules/platforms/cpp/core-test/config/invalid.xml
new file mode 100644
index 0000000..d6481c7
--- /dev/null
+++ b/modules/platforms/cpp/core-test/config/invalid.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ 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.
+-->
+
+<!--
+ Ignite Spring configuration file to startup grid cache.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans
+ http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/util
+ http://www.springframework.org/schema/util/spring-util.xsd">
+ <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
+
+ <property name="discoverySpi">
+ <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
+ <property name="socketTimeout" value="-300" />
+ </bean>
+ </property>
+ </bean>
+</beans>
http://git-wip-us.apache.org/repos/asf/ignite/blob/a38ae7ec/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj b/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj
index c18b1c3..6f13719 100644
--- a/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj
+++ b/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj
@@ -35,6 +35,7 @@
<ItemGroup>
<None Include="..\..\config\cache-query.xml" />
<None Include="..\..\config\cache-test.xml" />
+ <None Include="..\..\config\invalid.xml" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\cache_test.cpp" />
@@ -185,4 +186,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
-</Project>
+</Project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/a38ae7ec/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj.filters
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj.filters b/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj.filters
index 0059364..cf1aaca 100644
--- a/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj.filters
+++ b/modules/platforms/cpp/core-test/project/vs/core-test.vcxproj.filters
@@ -88,5 +88,8 @@
<None Include="..\..\config\cache-query.xml">
<Filter>Configs</Filter>
</None>
+ <None Include="..\..\config\invalid.xml">
+ <Filter>Configs</Filter>
+ </None>
</ItemGroup>
-</Project>
+</Project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ignite/blob/a38ae7ec/modules/platforms/cpp/core-test/src/interop_test.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core-test/src/interop_test.cpp b/modules/platforms/cpp/core-test/src/interop_test.cpp
index 4b079d9..f29ecc8 100644
--- a/modules/platforms/cpp/core-test/src/interop_test.cpp
+++ b/modules/platforms/cpp/core-test/src/interop_test.cpp
@@ -27,7 +27,7 @@ using namespace ignite;
using namespace cache;
using namespace boost::unit_test;
-void InitConfig(IgniteConfiguration& cfg)
+void InitConfig(IgniteConfiguration& cfg, const char* config)
{
cfg.jvmOpts.push_back("-Xdebug");
cfg.jvmOpts.push_back("-Xnoagent");
@@ -45,7 +45,7 @@ void InitConfig(IgniteConfiguration& cfg)
char* cfgPath = getenv("IGNITE_NATIVE_TEST_CPP_CONFIG_PATH");
- cfg.springCfgPath = std::string(cfgPath).append("/").append("cache-test.xml");
+ cfg.springCfgPath = std::string(cfgPath).append("/").append(config);
}
BOOST_AUTO_TEST_SUITE(InteropTestSuite)
@@ -119,7 +119,7 @@ BOOST_AUTO_TEST_CASE(StringUtfValid4ByteCodePoint)
{
IgniteConfiguration cfg;
- InitConfig(cfg);
+ InitConfig(cfg, "cache-test.xml");
Ignite ignite = Ignition::Start(cfg);
@@ -145,4 +145,15 @@ BOOST_AUTO_TEST_CASE(StringUtfValid4ByteCodePoint)
Ignition::StopAll(false);
}
+BOOST_AUTO_TEST_CASE(GracefulDeathOnInvalidConfig)
+{
+ IgniteConfiguration cfg;
+
+ InitConfig(cfg, "invalid.xml");
+
+ BOOST_CHECK_THROW(Ignition::Start(cfg), IgniteError);
+
+ Ignition::StopAll(false);
+}
+
BOOST_AUTO_TEST_SUITE_END()
http://git-wip-us.apache.org/repos/asf/ignite/blob/a38ae7ec/modules/platforms/cpp/core/src/ignition.cpp
----------------------------------------------------------------------
diff --git a/modules/platforms/cpp/core/src/ignition.cpp b/modules/platforms/cpp/core/src/ignition.cpp
index 72fbf7a..cd7ad70 100644
--- a/modules/platforms/cpp/core/src/ignition.cpp
+++ b/modules/platforms/cpp/core/src/ignition.cpp
@@ -282,20 +282,13 @@ namespace ignite
factoryLock.Leave();
if (failed)
- {
- if (envTarget)
- delete envTarget;
-
return Ignite();
- }
- else
- {
- env.Get()->ProcessorReleaseStart();
- IgniteImpl* impl = new IgniteImpl(env, javaRef);
+ env.Get()->ProcessorReleaseStart();
- return Ignite(impl);
- }
+ IgniteImpl* impl = new IgniteImpl(env, javaRef);
+
+ return Ignite(impl);
}
Ignite Ignition::Get()