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 2015/06/05 07:52:02 UTC
[3/3] incubator-ignite git commit: ignite-950: merge from sprint-6
ignite-950: merge from sprint-6
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/2bc8b253
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/2bc8b253
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/2bc8b253
Branch: refs/heads/ignite-950
Commit: 2bc8b253482ddfffc247fbbb938aecefb61f15d3
Parents: d18536a
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri Jun 5 08:51:48 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri Jun 5 08:51:48 2015 +0300
----------------------------------------------------------------------
dev-tools/gradle/wrapper/gradle-wrapper.jar | Bin 51017 -> 0 bytes
.../gradle/wrapper/gradle-wrapper.properties | 18 +-
dev-tools/gradlew | 163 ++++--
dev-tools/slurp.sh | 10 +
dev-tools/src/main/groovy/jiraslurp.groovy | 145 ++++--
examples/pom.xml | 2 +-
modules/aop/pom.xml | 2 +-
modules/aws/pom.xml | 2 +-
modules/clients/pom.xml | 2 +-
modules/cloud/pom.xml | 2 +-
modules/codegen/pom.xml | 2 +-
modules/core/pom.xml | 2 +-
.../src/main/java/org/apache/ignite/Ignite.java | 8 +-
.../java/org/apache/ignite/IgniteServices.java | 5 +-
.../apache/ignite/internal/IgniteKernal.java | 4 +-
.../processors/cache/IgniteCacheProxy.java | 3 +-
.../GridDistributedTxRemoteAdapter.java | 10 +-
.../processors/query/GridQueryIndexing.java | 16 +
.../processors/query/GridQueryProcessor.java | 52 +-
.../shmem/IpcSharedMemoryServerEndpoint.java | 2 +-
.../org/apache/ignite/services/Service.java | 5 +-
.../core/src/main/resources/ignite.properties | 2 +-
.../cache/IgniteDynamicCacheStartSelfTest.java | 20 +-
.../service/ClosureServiceClientsNodesTest.java | 245 +++++++++
.../ignite/testsuites/IgniteBasicTestSuite.java | 2 +
modules/extdata/p2p/pom.xml | 2 +-
modules/extdata/uri/pom.xml | 2 +-
modules/gce/pom.xml | 2 +-
modules/geospatial/pom.xml | 2 +-
.../query/h2/GridH2IndexingGeoSelfTest.java | 20 +-
modules/hadoop/pom.xml | 2 +-
modules/hibernate/pom.xml | 2 +-
modules/indexing/pom.xml | 2 +-
.../processors/query/h2/IgniteH2Indexing.java | 17 +
.../query/h2/opt/GridH2AbstractKeyValueRow.java | 18 +-
.../query/h2/opt/GridH2KeyValueRowOffheap.java | 4 +-
.../query/h2/sql/GridSqlOperationType.java | 2 +-
.../query/h2/sql/GridSqlQuerySplitter.java | 4 +
.../h2/twostep/GridReduceQueryExecutor.java | 2 +-
.../IgniteCacheQueryMultiThreadedSelfTest.java | 2 +-
.../local/IgniteCacheLocalQuerySelfTest.java | 6 +
.../query/h2/sql/BaseH2CompareQueryTest.java | 16 +
modules/jcl/pom.xml | 2 +-
modules/jta/pom.xml | 2 +-
modules/log4j/pom.xml | 2 +-
modules/mesos/README.txt | 28 +
modules/mesos/licenses/apache-2.0.txt | 202 ++++++++
modules/mesos/licenses/jetty-epl-license.txt | 69 +++
modules/mesos/pom.xml | 95 ++++
.../apache/ignite/mesos/ClusterProperties.java | 519 +++++++++++++++++++
.../apache/ignite/mesos/IgniteFramework.java | 119 +++++
.../apache/ignite/mesos/IgniteScheduler.java | 361 +++++++++++++
.../org/apache/ignite/mesos/IgniteTask.java | 86 +++
.../org/apache/ignite/mesos/package-info.java | 22 +
.../ignite/mesos/resource/IgniteProvider.java | 234 +++++++++
.../ignite/mesos/resource/JettyServer.java | 61 +++
.../ignite/mesos/resource/ResourceHandler.java | 142 +++++
.../ignite/mesos/resource/ResourceProvider.java | 120 +++++
.../ignite/mesos/resource/package-info.java | 22 +
.../main/resources/ignite-default-config.xml | 35 ++
.../org/apache/ignite/IgniteMesosTestSuite.java | 38 ++
.../ignite/mesos/IgniteSchedulerSelfTest.java | 464 +++++++++++++++++
modules/rest-http/pom.xml | 2 +-
modules/scalar/pom.xml | 2 +-
modules/schedule/pom.xml | 2 +-
modules/schema-import/pom.xml | 2 +-
modules/slf4j/pom.xml | 2 +-
modules/spring/pom.xml | 2 +-
modules/ssh/pom.xml | 2 +-
modules/tools/pom.xml | 2 +-
modules/urideploy/pom.xml | 2 +-
.../licenses/jcraft-revised-bsd.txt | 28 -
modules/visor-console/pom.xml | 2 +-
modules/visor-plugins/pom.xml | 2 +-
modules/web/pom.xml | 2 +-
modules/yardstick/pom.xml | 2 +-
parent/pom.xml | 4 +
pom.xml | 15 +-
scripts/git-patch-prop.sh | 2 +-
79 files changed, 3294 insertions(+), 233 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/dev-tools/gradle/wrapper/gradle-wrapper.jar
----------------------------------------------------------------------
diff --git a/dev-tools/gradle/wrapper/gradle-wrapper.jar b/dev-tools/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index b761216..0000000
Binary files a/dev-tools/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/dev-tools/gradle/wrapper/gradle-wrapper.properties
----------------------------------------------------------------------
diff --git a/dev-tools/gradle/wrapper/gradle-wrapper.properties b/dev-tools/gradle/wrapper/gradle-wrapper.properties
index 3111cd7..b85fc63 100644
--- a/dev-tools/gradle/wrapper/gradle-wrapper.properties
+++ b/dev-tools/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,20 @@
-#Tue Feb 24 21:36:05 PST 2015
+# 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.
+
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-bin.zip
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/dev-tools/gradlew
----------------------------------------------------------------------
diff --git a/dev-tools/gradlew b/dev-tools/gradlew
index 91a7e26..aa08fcb 100755
--- a/dev-tools/gradlew
+++ b/dev-tools/gradlew
@@ -1,8 +1,26 @@
#!/usr/bin/env bash
-##############################################################################
+# 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.
+
+##
+## Tries to recreate Gradle's gradlew command in pure bash.
+## This way you don't have to worry about binaries in your build.
##
-## Gradle start up script for UN*X
+## Depdencies
+## unzip
##
##############################################################################
@@ -15,6 +33,22 @@ APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
+bin=`dirname "$0"`
+bin=`cd "$bin">/dev/null; pwd`
+
+if [ -e "$bin/gradle/wrapper/gradle-wrapper.properties" ]; then
+ . "$bin/gradle/wrapper/gradle-wrapper.properties"
+else
+ # the location that the wrapper is at doesn't have a properties
+ # check PWD, gradlew may be shared
+ if [ -e "$PWD/gradle/wrapper/gradle-wrapper.properties" ]; then
+ . "$PWD/gradle/wrapper/gradle-wrapper.properties"
+ else
+ echo "Unable to locate gradle-wrapper.properties. Not at $PWD/gradle/wrapper/gradle-wrapper.properties or $bin/gradle/wrapper/gradle-wrapper.properties" 1>&2
+ exit 1
+ fi
+fi
+
warn ( ) {
echo "$*"
}
@@ -110,55 +144,90 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
+# does not match gradle's hash
+# waiting for http://stackoverflow.com/questions/26642077/java-biginteger-in-bash-rewrite-gradlew
+hash() {
+ local input="$1"
+ if $darwin; then
+ md5 -q -s "$1"
+ else
+ echo -n "$1" | md5sum | cut -d" " -f1
+ fi
+}
+
+dist_path() {
+ local dir=$(basename $distributionUrl | sed 's;.zip;;g')
+ local id=$(hash "$distributionUrl")
+
+ echo "$HOME/.gradle/${distributionPath:-wrapper/dists}/$dir/$id"
+}
+
+zip_path() {
+ local dir=$(basename $distributionUrl | sed 's;.zip;;g')
+ local id=$(hash "$distributionUrl")
+
+ echo "$HOME/.gradle/${zipStorePath:-wrapper/dists}/$dir/$id"
+}
+
+download() {
+ local base_path=$(dist_path)
+ local file_name=$(basename $distributionUrl)
+ local dir_name=$(echo "$file_name" | sed 's;-bin.zip;;g' | sed 's;-src.zip;;g' |sed 's;-all.zip;;g')
+
+ if [ ! -d "$base_path" ]; then
+ mkdir -p "$base_path"
+ else
+ # if data already exists, it means we failed to do this before
+ # so cleanup last run and try again
+ rm -rf $base_path/*
+ fi
+
+ # download dist. curl on mac doesn't like the cert provided...
+ local zip_path=$(zip_path)
+ curl --insecure -L -o "$zip_path/$file_name" "$distributionUrl"
+
+ pushd "$base_path"
+ touch "$file_name.lck"
+ unzip "$zip_path/$file_name" 1> /dev/null
+ touch "$file_name.ok"
+ popd
+}
+
+is_cached() {
+ local file_name=$(basename $distributionUrl)
+
+ [ -e "$(dist_path)/$file_name.ok" ]
+}
+
+lib_path() {
+ local base_path=$(dist_path)
+ local file_name=$(basename $distributionUrl | sed 's;-bin.zip;;g' | sed 's;-src.zip;;g' |sed 's;-all.zip;;g')
+
+ echo "$base_path/$file_name/lib"
+}
+
+classpath() {
+ local dir=$(lib_path)
+ local cp=$(ls -1 $dir/*.jar | tr '\n' ':')
+ echo "$dir:$cp"
+}
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
- JVM_OPTS=("$@")
+ JVM_OPTS=("$@")
+}
+
+main() {
+ if ! is_cached; then
+ download
+ fi
+
+ eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+
+ exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath $(classpath) org.gradle.launcher.GradleMain "$@"
+ #$JAVACMD "${JVM_OPTS[@]}" -cp $(classpath) org.gradle.launcher.GradleMain "$@"
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
+main "$@"
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/dev-tools/slurp.sh
----------------------------------------------------------------------
diff --git a/dev-tools/slurp.sh b/dev-tools/slurp.sh
index 1636f21..7edc776 100755
--- a/dev-tools/slurp.sh
+++ b/dev-tools/slurp.sh
@@ -51,6 +51,16 @@ TASK_RUNNER_USER='task_runner'
#
TASK_RUNNER_PWD=''
+echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
+echo "<"$(date + "%D - %H:%M:%S")"> Starting task triggering"
+echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
+
+# Useful settings
+#cd /home/teamcity/jobs/incubator-ignite/
+#
+#export JAVA_HOME=<java_home>
+#export PATH=$PATH:<gradle_path>
+
git fetch
git checkout ${DEFAULT_BRANCH}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/dev-tools/src/main/groovy/jiraslurp.groovy
----------------------------------------------------------------------
diff --git a/dev-tools/src/main/groovy/jiraslurp.groovy b/dev-tools/src/main/groovy/jiraslurp.groovy
index 0920001..8498cf0 100644
--- a/dev-tools/src/main/groovy/jiraslurp.groovy
+++ b/dev-tools/src/main/groovy/jiraslurp.groovy
@@ -45,12 +45,34 @@ def checkprocess = { process ->
if (process.exitValue() != 0) {
println "Return code: " + process.exitValue()
- println "Errout:\n" + process.err.text
+// println "Errout:\n" + process.err.text
assert process.exitValue() == 0 || process.exitValue() == 128
}
}
+def exec = {command, envp, dir ->
+ println "Executing command '$command'..."
+
+ def ps = command.execute(envp, dir)
+
+ try {
+ println "Command output:"
+
+ println ps.text
+ }
+ catch (Throwable e) {
+ // Do nothing.
+ println "Error: could not get caommand output."
+ }
+
+ checkprocess ps
+}
+
+def execGit = {command ->
+ exec(command, null, new File("../"))
+}
+
/**
* Util method to send http request.
*/
@@ -117,8 +139,9 @@ def sendGetRequest = { urlString, user, pwd->
final GIT_REPO = "https://git1-us-west.apache.org/repos/asf/incubator-ignite.git"
final JIRA_URL = "https://issues.apache.org"
final ATTACHMENT_URL = "$JIRA_URL/jira/secure/attachment"
-final validated_filename = "${System.getProperty("user.home")}/validated-jira.txt"
-final LAST_SUCCESSFUL_ARTIFACT = "guestAuth/repository/download/Ignite_PatchValidation_PatchChecker/.lastSuccessful/$validated_filename"
+final HISTORY_FILE = "${System.getProperty("user.home")}/validated-jira.txt"
+final LAST_SUCCESSFUL_ARTIFACT = "guestAuth/repository/download/Ignite_PatchValidation_PatchChecker/.lastSuccessful/$HISTORY_FILE"
+final NL = System.getProperty("line.separator")
final def JIRA_CMD = System.getProperty('JIRA_COMMAND', 'jira.sh')
@@ -162,16 +185,20 @@ def readHistory = {
List validated_list = []
- def validated = new File(validated_filename)
+ def validated = new File(HISTORY_FILE)
if (validated.exists()) {
validated_list = validated.text.split('\n')
}
// Let's make sure the preserved history isn't too long
- if (validated_list.size > MAX_HISTORY)
+ if (validated_list.size > MAX_HISTORY) {
validated_list = validated_list[validated_list.size - MAX_HISTORY..validated_list.size - 1]
+ validated.delete()
+ validated << validated_list.join(NL)
+ }
+
println "History=$validated_list"
validated_list
@@ -211,31 +238,32 @@ def findAttachments = {
"https://issues.apache.org/jira/sr/jira.issueviews:searchrequest-xml/12330308/SearchRequest-12330308.xml?tempMax=100&field=key&field=attachments"
def rss = new XmlSlurper().parse(JIRA_FILTER)
- List list = readHistory {}
+ final List history = readHistory {}
LinkedHashMap<String, String> attachments = [:]
rss.channel.item.each { jira ->
String row = getLatestAttachment(jira)
- if (row != null && !list.contains(row)) {
+ if (row != null && !history.contains(row)) {
def pair = row.split(',')
attachments.put(pair[0] as String, pair[1] as String)
-
- list.add(row)
}
}
- // Write everything back to persist the list
- def validated = new File(validated_filename)
+ attachments
+}
- if (validated.exists())
- validated.delete()
+/**
+ * Store jira with attachment id to hostory.
+ */
+def addToHistory = {jira, attachmentId ->
+ def validated = new File(HISTORY_FILE)
- validated << list.join('\n')
+ assert validated.exists(), "History file does not exist."
- attachments
+ validated << NL + "$jira,$attachmentId"
}
def tryGitAmAbort = {
@@ -246,8 +274,6 @@ def tryGitAmAbort = {
}
catch (Throwable e) {
println "Error: git am --abort fails: "
-
- e.printStackTrace()
}
}
@@ -255,50 +281,69 @@ def tryGitAmAbort = {
* Applys patch from jira to given git state.
*/
def applyPatch = { jira, attachementURL ->
- def userEmail = System.getenv("env.GIT_USER_EMAIL");
- def userName = System.getenv("env.GIT_USER_NAME");
+ // Delete all old IGNITE-*-*.patch files.
+ def directory = new File("./")
+
+ println "Remove IGNITE-*-*.patch files in ${directory.absolutePath} and its subdirectories..."
+
+ def classPattern = ~/.*IGNITE-.*-.*\.patch/
+
+ directory.eachFileRecurse(groovy.io.FileType.FILES)
+ { file ->
+ if (file ==~ classPattern){
+ println "Deleting ${file}..."
+
+ file.delete()
+ }
+ }
+ // Main logic.
println "Patch apllying with jira='$jira' and attachment='$ATTACHMENT_URL/$attachementURL/'."
+ def userEmail = System.getenv("env.GIT_USER_EMAIL");
+ def userName = System.getenv("env.GIT_USER_NAME");
+
def patchFile = new File("${jira}-${attachementURL}.patch")
- try {
- println "Getting patch content."
+ println "Getting patch content."
- patchFile << new URL("$ATTACHMENT_URL/$attachementURL/").text
+ def attachmentUrl = new URL("$ATTACHMENT_URL/$attachementURL/")
- println "Got patch content."
+ HttpURLConnection conn = (HttpURLConnection)attachmentUrl.openConnection();
+ conn.setRequestProperty("Content-Type", "text/x-patch;charset=utf-8");
+ conn.setRequestProperty("X-Content-Type-Options", "nosniff");
+ conn.connect();
- try {
- tryGitAmAbort()
+ patchFile << conn.getInputStream()
- checkprocess "git branch".execute()
+ println "Got patch content."
- checkprocess "git config user.email \"$userEmail\"".execute(null, new File("../"))
- checkprocess "git config user.name \"$userName\"".execute(null, new File("../"))
+ try {
+ tryGitAmAbort()
- // Create a new uniqueue branch to applying patch
- def newTestBranch = "test-branch-${jira}-${attachementURL}-${System.currentTimeMillis()}"
- checkprocess "git checkout -b ${newTestBranch}".execute(null, new File("../"))
+ execGit "git branch"
- checkprocess "git branch".execute()
+ execGit "git config user.email \"$userEmail\""
+ execGit "git config user.name \"$userName\""
- println "Trying to apply patch."
+ // Create a new uniqueue branch to applying patch
+ def newTestBranch = "test-branch-${jira}-${attachementURL}-${System.currentTimeMillis()}"
+ execGit "git checkout -b ${newTestBranch}"
- checkprocess "git am dev-tools/${patchFile.name}".execute(null, new File("../"))
+ execGit "git branch"
- println "Patch was applied successfully."
- }
- catch (Exception e) {
- println "Patch was not applied successfully. Aborting patch applying."
+ println "Trying to apply patch."
- tryGitAmAbort()
+ execGit "git am dev-tools/${patchFile.name}"
- throw e;
- }
+ println "Patch was applied successfully."
}
- finally {
- assert patchFile.delete(), 'Could not delete patch file.'
+ catch (Throwable e) {
+ println "Patch was not applied successfully. Aborting patch applying."
+
+ tryGitAmAbort()
+
+ throw e;
}
}
@@ -375,6 +420,9 @@ def runAllTestBuilds = {builds, jiraNum ->
else {
postData = "<build>" +
" <buildType id='$it'/>" +
+ " <comment>" +
+ " <text>Auto triggered build to validate last attached patch file at $jiraNum.</text>" +
+ " </comment>" +
" <properties>" +
" <property name='env.JIRA_NUM' value='$jiraNum'/>" +
" </properties>" +
@@ -401,10 +449,17 @@ def runAllTestBuilds = {builds, jiraNum ->
}
}
+ // Format comment for jira.
def triggeredBuildsComment = "There was triggered next test builds for last attached patch-file:\\n"
+ def n = 1;
+
triggeredBuilds.each { name, url ->
- triggeredBuildsComment += "${name as String} - ${url as String}\\n"
+ def prefix = n < 10 ? "0" : ""
+
+ triggeredBuildsComment += "${prefix}${n}. ${url as String} - ${name as String}\\n"
+
+ n++
}
addJiraComment(jiraNum, triggeredBuildsComment)
@@ -445,6 +500,8 @@ args.each {
println "Triggering the test builds for: $k = $ATTACHMENT_URL/$v/"
runAllTestBuilds(builds, k)
+
+ addToHistory(k, v)
}
}
else if (parameters.length >= 1 && parameters[0] == "patchApply") {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/examples/pom.xml
----------------------------------------------------------------------
diff --git a/examples/pom.xml b/examples/pom.xml
index 6174cff..78c5852 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -28,7 +28,7 @@
</parent>
<artifactId>ignite-examples</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/aop/pom.xml
----------------------------------------------------------------------
diff --git a/modules/aop/pom.xml b/modules/aop/pom.xml
index df97c68..85e9608 100644
--- a/modules/aop/pom.xml
+++ b/modules/aop/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-aop</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/aws/pom.xml
----------------------------------------------------------------------
diff --git a/modules/aws/pom.xml b/modules/aws/pom.xml
index 5020437..e5cdae7 100644
--- a/modules/aws/pom.xml
+++ b/modules/aws/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-aws</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/clients/pom.xml
----------------------------------------------------------------------
diff --git a/modules/clients/pom.xml b/modules/clients/pom.xml
index 3ea4d52..2132f24 100644
--- a/modules/clients/pom.xml
+++ b/modules/clients/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-clients</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/cloud/pom.xml
----------------------------------------------------------------------
diff --git a/modules/cloud/pom.xml b/modules/cloud/pom.xml
index 6f39cad..e27dc2a 100644
--- a/modules/cloud/pom.xml
+++ b/modules/cloud/pom.xml
@@ -29,7 +29,7 @@
</parent>
<artifactId>ignite-cloud</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<properties>
<jcloud.version>1.9.0</jcloud.version>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/codegen/pom.xml
----------------------------------------------------------------------
diff --git a/modules/codegen/pom.xml b/modules/codegen/pom.xml
index 706b485..32bd7c2 100644
--- a/modules/codegen/pom.xml
+++ b/modules/codegen/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-codegen</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/pom.xml
----------------------------------------------------------------------
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index b74fb8d..0460b46 100644
--- a/modules/core/pom.xml
+++ b/modules/core/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-core</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/Ignite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java b/modules/core/src/main/java/org/apache/ignite/Ignite.java
index 40c9bbb..209946b 100644
--- a/modules/core/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java
@@ -103,9 +103,9 @@ public interface Ignite extends AutoCloseable {
public IgniteCluster cluster();
/**
- * Gets {@code compute} facade over all cluster nodes.
+ * Gets {@code compute} facade over all cluster nodes started in server mode.
*
- * @return Compute instance over all cluster nodes.
+ * @return Compute instance over all cluster nodes started in server mode.
*/
public IgniteCompute compute();
@@ -154,9 +154,9 @@ public interface Ignite extends AutoCloseable {
public IgniteEvents events(ClusterGroup grp);
/**
- * Gets {@code services} facade over all cluster nodes.
+ * Gets {@code services} facade over all cluster nodes started in server mode.
*
- * @return Services facade over all cluster nodes.
+ * @return Services facade over all cluster nodes started in server mode.
*/
public IgniteServices services();
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/IgniteServices.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteServices.java b/modules/core/src/main/java/org/apache/ignite/IgniteServices.java
index f800085..7d1ca7c 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteServices.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteServices.java
@@ -126,10 +126,7 @@ import java.util.*;
* ...
* GridServices svcs = grid.services();
*
- * GridFuture<?> fut = svcs.deployClusterSingleton("mySingleton", new MyGridService());
- *
- * // Wait for deployment to complete.
- * fut.get();
+ * svcs.deployClusterSingleton("mySingleton", new MyGridService());
* </pre>
*/
public interface IgniteServices extends IgniteAsyncSupport {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index ffd264d..c4b93b8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -221,7 +221,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
/** {@inheritDoc} */
@Override public IgniteCompute compute() {
- return ctx.cluster().get().compute();
+ return ((ClusterGroupAdapter)ctx.cluster().get().forServers()).compute();
}
/** {@inheritDoc} */
@@ -236,7 +236,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
/** {@inheritDoc} */
@Override public IgniteServices services() {
- return ctx.cluster().get().services();
+ return ((ClusterGroupAdapter)ctx.cluster().get().forServers()).services();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
index 2de5bf0..f840015 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxy.java
@@ -542,7 +542,8 @@ public class IgniteCacheProxy<K, V> extends AsyncSupportAdapter<IgniteCache<K, V
private void validate(Query qry) {
if (!GridQueryProcessor.isEnabled(ctx.config()) && !(qry instanceof ScanQuery) &&
!(qry instanceof ContinuousQuery))
- throw new CacheException("Indexing is disabled for cache: " + ctx.cache().name());
+ throw new CacheException("Indexing is disabled for cache: " + ctx.cache().name() +
+ ". Use setIndexedTypes or setTypeMetadata methods on CacheConfiguration to enable.");
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
index 8594853..ac5395d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java
@@ -633,15 +633,17 @@ public class GridDistributedTxRemoteAdapter extends IgniteTxAdapter
}
}
catch (Throwable ex) {
- uncommit();
-
- state(UNKNOWN);
-
// In case of error, we still make the best effort to commit,
// as there is no way to rollback at this point.
err = new IgniteTxHeuristicCheckedException("Commit produced a runtime exception " +
"(all transaction entries will be invalidated): " + CU.txString(this), ex);
+ U.error(log, "Commit failed.", err);
+
+ uncommit();
+
+ state(UNKNOWN);
+
if (ex instanceof Error)
throw (Error)ex;
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
index b1c3970..0bb820d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryIndexing.java
@@ -149,6 +149,22 @@ public interface GridQueryIndexing {
public void unregisterCache(CacheConfiguration<?, ?> ccfg) throws IgniteCheckedException;
/**
+ * Checks if the given class can be mapped to a simple SQL type.
+ *
+ * @param cls Class.
+ * @return {@code true} If can.
+ */
+ public boolean isSqlType(Class<?> cls);
+
+ /**
+ * Checks if the given class is GEOMETRY.
+ *
+ * @param cls Class.
+ * @return {@code true} If this is geometry.
+ */
+ public boolean isGeometryClass(Class<?> cls);
+
+ /**
* Registers type if it was not known before or updates it otherwise.
*
* @param spaceName Space name.
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
----------------------------------------------------------------------
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 7a3cb68..cd4d543 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
@@ -936,10 +936,19 @@ public class GridQueryProcessor extends GridProcessorAdapter {
* @param parent Parent in case of embeddable.
* @throws IgniteCheckedException In case of error.
*/
- static void processAnnotationsInClass(boolean key, Class<?> cls, TypeDescriptor type,
+ private void processAnnotationsInClass(boolean key, Class<?> cls, TypeDescriptor type,
@Nullable ClassProperty parent) throws IgniteCheckedException {
- if (U.isJdk(cls))
+ if (U.isJdk(cls) || idx.isGeometryClass(cls)) {
+ if (parent == null && !key && idx.isSqlType(cls) ) { // We have to index primitive _val.
+ String idxName = "_val_idx";
+
+ type.addIndex(idxName, idx.isGeometryClass(cls) ? GEO_SPATIAL : SORTED);
+
+ type.addFieldToIndex(idxName, "_VAL", 0, false);
+ }
+
return;
+ }
if (parent != null && parent.knowsClass(cls))
throw new IgniteCheckedException("Recursive reference found in type: " + cls.getName());
@@ -1011,7 +1020,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
* @param desc Class description.
* @throws IgniteCheckedException In case of error.
*/
- static void processAnnotation(boolean key, QuerySqlField sqlAnn, QueryTextField txtAnn,
+ private void processAnnotation(boolean key, QuerySqlField sqlAnn, QueryTextField txtAnn,
Class<?> cls, ClassProperty prop, TypeDescriptor desc) throws IgniteCheckedException {
if (sqlAnn != null) {
processAnnotationsInClass(key, cls, desc, prop);
@@ -1022,7 +1031,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
if (sqlAnn.index()) {
String idxName = prop.name() + "_idx";
- desc.addIndex(idxName, isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
+ desc.addIndex(idxName, idx.isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
desc.addFieldToIndex(idxName, prop.name(), 0, sqlAnn.descending());
}
@@ -1049,7 +1058,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
* @param d Type descriptor.
* @throws IgniteCheckedException If failed.
*/
- static void processClassMeta(CacheTypeMetadata meta, TypeDescriptor d)
+ private void processClassMeta(CacheTypeMetadata meta, TypeDescriptor d)
throws IgniteCheckedException {
Class<?> keyCls = d.keyClass();
Class<?> valCls = d.valueClass();
@@ -1064,7 +1073,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
String idxName = prop.name() + "_idx";
- d.addIndex(idxName, isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
+ d.addIndex(idxName, idx.isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
d.addFieldToIndex(idxName, prop.name(), 0, false);
}
@@ -1076,7 +1085,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
String idxName = prop.name() + "_idx";
- d.addIndex(idxName, isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
+ d.addIndex(idxName, idx.isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
d.addFieldToIndex(idxName, prop.name(), 0, true);
}
@@ -1136,7 +1145,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
String idxName = prop.name() + "_idx";
- d.addIndex(idxName, isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
+ d.addIndex(idxName, idx.isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
d.addFieldToIndex(idxName, prop.name(), 0, false);
}
@@ -1148,7 +1157,7 @@ public class GridQueryProcessor extends GridProcessorAdapter {
String idxName = prop.name() + "_idx";
- d.addIndex(idxName, isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
+ d.addIndex(idxName, idx.isGeometryClass(prop.type()) ? GEO_SPATIAL : SORTED);
d.addFieldToIndex(idxName, prop.name(), 0, true);
}
@@ -1321,31 +1330,6 @@ public class GridQueryProcessor extends GridProcessorAdapter {
}
/**
- * @param cls Field type.
- * @return {@code True} if given type is a spatial geometry type based on {@code com.vividsolutions.jts} library.
- * @throws IgniteCheckedException If failed.
- */
- private static boolean isGeometryClass(Class<?> cls) throws IgniteCheckedException { // TODO optimize
- Class<?> dataTypeCls;
-
- try {
- dataTypeCls = Class.forName("org.h2.value.DataType");
- }
- catch (ClassNotFoundException ignored) {
- return false; // H2 is not in classpath.
- }
-
- try {
- Method method = dataTypeCls.getMethod("isGeometryClass", Class.class);
-
- return (Boolean)method.invoke(null, cls);
- }
- catch (Exception e) {
- throw new IgniteCheckedException("Failed to invoke 'org.h2.value.DataType.isGeometryClass' method.", e);
- }
- }
-
- /**
*
*/
private abstract static class Property {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java b/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
index 86a0886..5185856 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/ipc/shmem/IpcSharedMemoryServerEndpoint.java
@@ -592,7 +592,7 @@ public class IpcSharedMemoryServerEndpoint implements IpcServerEndpoint {
if (log.isDebugEnabled())
log.debug("Token directory is being processed concurrently: " + workTokDir.getAbsolutePath());
}
- catch (InterruptedIOException ignored) {
+ catch (FileLockInterruptionException ignored) {
Thread.currentThread().interrupt();
}
catch (IOException e) {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/java/org/apache/ignite/services/Service.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/services/Service.java b/modules/core/src/main/java/org/apache/ignite/services/Service.java
index 2bd5649..4f927a3 100644
--- a/modules/core/src/main/java/org/apache/ignite/services/Service.java
+++ b/modules/core/src/main/java/org/apache/ignite/services/Service.java
@@ -55,10 +55,7 @@ import java.io.*;
* ...
* GridServices svcs = grid.services();
*
- * GridFuture<?> fut = svcs.deployClusterSingleton("mySingleton", new MyGridService());
- *
- * // Wait for deployment to complete.
- * fut.get();
+ * svcs.deployClusterSingleton("mySingleton", new MyGridService());
* </pre>
* Or from grid configuration on startup:
* <pre name="code" class="java">
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/main/resources/ignite.properties
----------------------------------------------------------------------
diff --git a/modules/core/src/main/resources/ignite.properties b/modules/core/src/main/resources/ignite.properties
index 3e6638f..78e294f 100644
--- a/modules/core/src/main/resources/ignite.properties
+++ b/modules/core/src/main/resources/ignite.properties
@@ -15,7 +15,7 @@
# limitations under the License.
#
-ignite.version=1.0.8-SNAPSHOT
+ignite.version=1.2.0-SNAPSHOT
ignite.build=0
ignite.revision=DEV
ignite.rel.date=01011970
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java
index 72b76d7..095221e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteDynamicCacheStartSelfTest.java
@@ -26,6 +26,9 @@ import org.apache.ignite.internal.*;
import org.apache.ignite.internal.managers.discovery.*;
import org.apache.ignite.internal.util.typedef.*;
import org.apache.ignite.lang.*;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
import org.apache.ignite.testframework.*;
import org.apache.ignite.testframework.junits.common.*;
@@ -40,6 +43,9 @@ import java.util.concurrent.atomic.*;
@SuppressWarnings("unchecked")
public class IgniteDynamicCacheStartSelfTest extends GridCommonAbstractTest {
/** */
+ private static TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+ /** */
private static final String DYNAMIC_CACHE_NAME = "TestDynamicCache";
/** */
@@ -51,8 +57,7 @@ public class IgniteDynamicCacheStartSelfTest extends GridCommonAbstractTest {
/** */
public static final IgnitePredicate<ClusterNode> NODE_FILTER = new IgnitePredicate<ClusterNode>() {
/** {@inheritDoc} */
- @Override
- public boolean apply(ClusterNode n) {
+ @Override public boolean apply(ClusterNode n) {
Boolean val = n.attribute(TEST_ATTRIBUTE_NAME);
return val != null && val;
@@ -78,6 +83,8 @@ public class IgniteDynamicCacheStartSelfTest extends GridCommonAbstractTest {
@Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(gridName);
+ ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(ipFinder);
+
cfg.setUserAttributes(F.asMap(TEST_ATTRIBUTE_NAME, testAttribute));
CacheConfiguration cacheCfg = new CacheConfiguration();
@@ -157,8 +164,7 @@ public class IgniteDynamicCacheStartSelfTest extends GridCommonAbstractTest {
futs.clear();
GridTestUtils.runMultiThreaded(new Callable<Object>() {
- @Override
- public Object call() throws Exception {
+ @Override public Object call() throws Exception {
futs.add(kernal.context().cache().dynamicStopCache(DYNAMIC_CACHE_NAME));
return null;
@@ -218,8 +224,7 @@ public class IgniteDynamicCacheStartSelfTest extends GridCommonAbstractTest {
futs.clear();
GridTestUtils.runMultiThreaded(new Callable<Object>() {
- @Override
- public Object call() throws Exception {
+ @Override public Object call() throws Exception {
IgniteEx kernal = grid(ThreadLocalRandom.current().nextInt(nodeCount()));
futs.add(kernal.context().cache().dynamicStopCache(DYNAMIC_CACHE_NAME));
@@ -940,8 +945,7 @@ public class IgniteDynamicCacheStartSelfTest extends GridCommonAbstractTest {
latches[i] = new CountDownLatch(1);
lsnrs[i] = new IgnitePredicate<CacheEvent>() {
- @Override
- public boolean apply(CacheEvent e) {
+ @Override public boolean apply(CacheEvent e) {
switch (e.type()) {
case EventType.EVT_CACHE_NODES_LEFT:
latches[idx].countDown();
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
new file mode 100644
index 0000000..761f00f
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/service/ClosureServiceClientsNodesTest.java
@@ -0,0 +1,245 @@
+/*
+ * 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.
+ */
+
+package org.apache.ignite.internal.processors.service;
+
+import org.apache.ignite.*;
+import org.apache.ignite.cluster.*;
+import org.apache.ignite.configuration.*;
+import org.apache.ignite.internal.util.typedef.*;
+import org.apache.ignite.lang.*;
+import org.apache.ignite.marshaller.optimized.*;
+import org.apache.ignite.resources.*;
+import org.apache.ignite.services.Service;
+import org.apache.ignite.services.ServiceContext;
+import org.apache.ignite.services.ServiceDescriptor;
+import org.apache.ignite.spi.discovery.tcp.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
+import org.apache.ignite.testframework.junits.common.*;
+
+import java.util.*;
+
+/**
+ * Test that compute and service run only on server nodes by default.
+ */
+public class ClosureServiceClientsNodesTest extends GridCommonAbstractTest {
+ /** Number of grids started for tests. */
+ private static final int NODES_CNT = 4;
+
+ /** Test singleton service name. */
+ private static final String SINGLETON_NAME = "testSingleton";
+
+ /** IP finder. */
+ private final TcpDiscoveryIpFinder ipFinder = new TcpDiscoveryVmIpFinder(true);
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String gridName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(gridName);
+
+ cfg.setMarshaller(new OptimizedMarshaller(false));
+
+ TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+
+ discoSpi.setIpFinder(ipFinder);
+
+ cfg.setDiscoverySpi(discoSpi);
+
+ cfg.setCacheConfiguration();
+
+ if (gridName.equals(getTestGridName(0)))
+ cfg.setClientMode(true);
+
+ return cfg;
+ }
+
+ /** {@inheritDoc} */
+ @SuppressWarnings({"ConstantConditions"})
+ @Override protected void beforeTestsStarted() throws Exception {
+ startGrids(NODES_CNT);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testDefaultClosure() throws Exception {
+ Set<String> srvNames = new HashSet<>(NODES_CNT - 1);
+
+ for (int i = 1; i < NODES_CNT; ++i)
+ srvNames.add(getTestGridName(i));
+
+ for (int i = 0 ; i < NODES_CNT; i++) {
+ Ignite ignite = grid(i);
+
+ Collection<String> res = ignite.compute().broadcast(new IgniteCallable<String>() {
+ @IgniteInstanceResource
+ Ignite ignite;
+
+ @Override public String call() throws Exception {
+ assertFalse(ignite.configuration().isClientMode());
+
+ return ignite.name();
+ }
+ });
+
+ assertEquals(res.size(), NODES_CNT - 1);
+
+ for (String name : res)
+ assertTrue(srvNames.contains(name));
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClientClosure() throws Exception {
+ for (int i = 0 ; i < NODES_CNT; i++) {
+ Ignite ignite = grid(i);
+
+ Collection<String> res = ignite.compute(ignite.cluster().forClients()).
+ broadcast(new IgniteCallable<String>() {
+ @IgniteInstanceResource
+ Ignite ignite;
+
+ @Override public String call() throws Exception {
+ assertTrue(ignite.configuration().isClientMode());
+
+ return ignite.name();
+ }
+ });
+
+ assertEquals(1, res.size());
+
+ assertEquals(getTestGridName(0), F.first(res));
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testCustomClosure() throws Exception {
+ for (int i = 0 ; i < NODES_CNT; i++) {
+ Ignite ignite = grid(i);
+
+ Collection<String> res = ignite.compute(ignite.cluster().forPredicate(F.<ClusterNode>alwaysTrue())).
+ broadcast(new IgniteCallable<String>() {
+ @IgniteInstanceResource
+ Ignite ignite;
+
+ @Override public String call() throws Exception {
+ return ignite.name();
+ }
+ });
+
+ assertEquals(NODES_CNT, res.size());
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testDefaultService() throws Exception {
+ UUID clientNodeId = grid(0).cluster().localNode().id();
+
+ for (int i = 0 ; i < NODES_CNT; i++) {
+ Ignite ignite = grid(i);
+
+ ignite.services().deployNodeSingleton(SINGLETON_NAME, new TestService());
+
+ ClusterGroup grp = ignite.cluster();
+
+ assertEquals(NODES_CNT, grp.nodes().size());
+
+ Collection<ServiceDescriptor> srvDscs = ignite.services(grp).serviceDescriptors();
+
+ assertEquals(1, srvDscs.size());
+
+ Map<UUID, Integer> nodesMap = F.first(srvDscs).topologySnapshot();
+
+ assertEquals(NODES_CNT - 1, nodesMap.size());
+
+ for (Map.Entry<UUID, Integer> nodeInfo : nodesMap.entrySet()) {
+ assertFalse(clientNodeId.equals(nodeInfo.getKey()));
+
+ assertEquals(1, nodeInfo.getValue().intValue());
+ }
+
+ ignite.services().cancelAll();
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ public void testClientService() throws Exception {
+ UUID clientNodeId = grid(0).cluster().localNode().id();
+
+ for (int i = 0 ; i < NODES_CNT; i++) {
+ Ignite ignite = grid(i);
+
+ ignite.services(ignite.cluster().forClients()).deployNodeSingleton(SINGLETON_NAME, new TestService());
+
+ ClusterGroup grp = ignite.cluster();
+
+ assertEquals(NODES_CNT, grp.nodes().size());
+
+ Collection<ServiceDescriptor> srvDscs = ignite.services(grp).serviceDescriptors();
+
+ assertEquals(1, srvDscs.size());
+
+ Map<UUID, Integer> nodesMap = F.first(srvDscs).topologySnapshot();
+
+ assertEquals(1, nodesMap.size());
+
+ for (Map.Entry<UUID, Integer> nodeInfo : nodesMap.entrySet()) {
+ assertEquals(clientNodeId, nodeInfo.getKey());
+
+ assertEquals(1, nodeInfo.getValue().intValue());
+ }
+
+ ignite.services().cancelAll();
+ }
+ }
+
+ /**
+ * Test service.
+ */
+ private static class TestService implements Service {
+ @LoggerResource
+ private IgniteLogger log;
+
+ /** {@inheritDoc} */
+ @Override public void cancel(ServiceContext ctx) {
+ //No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void init(ServiceContext ctx) throws Exception {
+ //No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void execute(ServiceContext ctx) throws Exception {
+ log.info("Executing test service.");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
index 56ff951..6382059 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
@@ -24,6 +24,7 @@ import org.apache.ignite.internal.processors.affinity.*;
import org.apache.ignite.internal.processors.cache.*;
import org.apache.ignite.internal.processors.closure.*;
import org.apache.ignite.internal.processors.continuous.*;
+import org.apache.ignite.internal.processors.service.*;
import org.apache.ignite.internal.product.*;
import org.apache.ignite.internal.util.typedef.internal.*;
import org.apache.ignite.messaging.*;
@@ -61,6 +62,7 @@ public class IgniteBasicTestSuite extends TestSuite {
suite.addTestSuite(GridProductVersionSelfTest.class);
suite.addTestSuite(GridAffinityProcessorRendezvousSelfTest.class);
suite.addTestSuite(GridClosureProcessorSelfTest.class);
+ suite.addTestSuite(ClosureServiceClientsNodesTest.class);
suite.addTestSuite(GridStartStopSelfTest.class);
suite.addTestSuite(GridProjectionForCachesSelfTest.class);
suite.addTestSuite(GridProjectionForCachesOnDaemonNodeSelfTest.class);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/extdata/p2p/pom.xml
----------------------------------------------------------------------
diff --git a/modules/extdata/p2p/pom.xml b/modules/extdata/p2p/pom.xml
index 786ffb5..b6a4a9e 100644
--- a/modules/extdata/p2p/pom.xml
+++ b/modules/extdata/p2p/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-extdata-p2p</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/extdata/uri/pom.xml
----------------------------------------------------------------------
diff --git a/modules/extdata/uri/pom.xml b/modules/extdata/uri/pom.xml
index 5533694..c81b2c1 100644
--- a/modules/extdata/uri/pom.xml
+++ b/modules/extdata/uri/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-extdata-uri</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/gce/pom.xml
----------------------------------------------------------------------
diff --git a/modules/gce/pom.xml b/modules/gce/pom.xml
index b8bdf61..471a98b 100644
--- a/modules/gce/pom.xml
+++ b/modules/gce/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-gce</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/geospatial/pom.xml
----------------------------------------------------------------------
diff --git a/modules/geospatial/pom.xml b/modules/geospatial/pom.xml
index dec24a1..0283930 100644
--- a/modules/geospatial/pom.xml
+++ b/modules/geospatial/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-geospatial</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java b/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
index 8566960..b80944c 100644
--- a/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
+++ b/modules/geospatial/src/test/java/org/apache/ignite/internal/processors/query/h2/GridH2IndexingGeoSelfTest.java
@@ -57,13 +57,31 @@ public class GridH2IndexingGeoSelfTest extends GridCacheAbstractSelfTest {
/** {@inheritDoc} */
@Override protected Class<?>[] indexedTypes() {
return new Class<?>[]{
- Integer.class, EnemyCamp.class
+ Integer.class, EnemyCamp.class,
+ Long.class, Geometry.class // Geometry must be indexed here.
};
}
/**
* @throws Exception If failed.
*/
+ public void testPrimitiveGeometry() throws Exception {
+ IgniteCache<Long, Geometry> cache = grid(0).cache(null);
+
+ WKTReader r = new WKTReader();
+
+ for (long i = 0; i < 100; i++)
+ cache.put(i, r.read("POINT(" + i + " " + i + ")"));
+
+ List<List<?>> res = cache.query(new SqlFieldsQuery("explain select _key from Geometry where _val && ?")
+ .setArgs(r.read("POLYGON((5 70, 5 80, 30 80, 30 70, 5 70))")).setLocal(true)).getAll();
+
+ assertTrue("__ explain: " + res, res.get(0).get(0).toString().contains("_val_idx"));
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
@SuppressWarnings("unchecked")
public void testGeo() throws Exception {
IgniteCache<Integer, EnemyCamp> cache = grid(0).cache(null);
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/hadoop/pom.xml
----------------------------------------------------------------------
diff --git a/modules/hadoop/pom.xml b/modules/hadoop/pom.xml
index 03f9430..6910093 100644
--- a/modules/hadoop/pom.xml
+++ b/modules/hadoop/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-hadoop</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/hibernate/pom.xml
----------------------------------------------------------------------
diff --git a/modules/hibernate/pom.xml b/modules/hibernate/pom.xml
index 95f18ea..8c2dcbb 100644
--- a/modules/hibernate/pom.xml
+++ b/modules/hibernate/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-hibernate</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/pom.xml
----------------------------------------------------------------------
diff --git a/modules/indexing/pom.xml b/modules/indexing/pom.xml
index 6cbcb72..7aab5e8 100644
--- a/modules/indexing/pom.xml
+++ b/modules/indexing/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-indexing</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
index 975378c..200da77 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/IgniteH2Indexing.java
@@ -1412,6 +1412,23 @@ public class IgniteH2Indexing implements GridQueryIndexing {
}
}
+ /** {@inheritDoc} */
+ @Override public boolean isSqlType(Class<?> cls) {
+ switch (DBTypeEnum.fromClass(cls)) {
+ case OTHER:
+ case ARRAY:
+ return false;
+
+ default:
+ return true;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isGeometryClass(Class<?> cls) {
+ return DataType.isGeometryClass(cls);
+ }
+
/**
* Enum that helps to map java types to database types.
*/
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
index 2ce91cf..6e95710 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2AbstractKeyValueRow.java
@@ -27,6 +27,7 @@ import org.jetbrains.annotations.*;
import java.lang.ref.*;
import java.sql.*;
+import java.util.concurrent.*;
/**
* Table row implementation based on {@link GridQueryTypeDescriptor}.
@@ -137,20 +138,27 @@ public abstract class GridH2AbstractKeyValueRow extends GridH2Row {
}
/**
- * @param attempt Attempt.
+ * @param waitTime Time to await for value unswap.
* @return Synchronized value.
*/
- protected synchronized Value syncValue(int attempt) {
+ protected synchronized Value syncValue(long waitTime) {
Value v = peekValue(VAL_COL);
- if (v == null && attempt != 0) {
+ while (v == null && waitTime > 0) {
+ long start = System.nanoTime(); // This call must be quite rare, so performance is not a concern.
+
try {
- wait(attempt);
+ wait(waitTime); // Wait for value arrival to allow other threads to make a progress.
}
catch (InterruptedException e) {
throw new IgniteInterruptedException(e);
}
+ long t = System.nanoTime() - start;
+
+ if (t > 0)
+ waitTime -= TimeUnit.NANOSECONDS.toMillis(t);
+
v = peekValue(VAL_COL);
}
@@ -211,7 +219,7 @@ public abstract class GridH2AbstractKeyValueRow extends GridH2Row {
if (start == 0)
start = U.currentTimeMillis();
- else if (U.currentTimeMillis() - start > 15_000) // Loop for at most 15 seconds.
+ else if (U.currentTimeMillis() - start > 60_000) // Loop for at most 60 seconds.
throw new IgniteException("Failed to get value for key: " + k +
". This can happen due to a long GC pause.");
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOffheap.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOffheap.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOffheap.java
index c47f122..f89591a 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOffheap.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/opt/GridH2KeyValueRowOffheap.java
@@ -272,8 +272,8 @@ public class GridH2KeyValueRowOffheap extends GridH2AbstractKeyValueRow {
}
/** {@inheritDoc} */
- @Override protected Value syncValue(int attempt) {
- Value v = super.syncValue(attempt);
+ @Override protected Value syncValue(long waitTime) {
+ Value v = super.syncValue(waitTime);
if (v != null)
return v;
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
index 7aefbec..a071e73 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlOperationType.java
@@ -131,7 +131,7 @@ public enum GridSqlOperationType {
@Override public String getSql(GridSqlOperation operation) {
assert operation.opType().childrenCnt == 2;
- return "(INTERSECTS(" + operation.child(0) + ", " + operation.child(1) + "))";
+ return "(INTERSECTS(" + operation.child(0).getSQL() + ", " + operation.child(1).getSQL() + "))";
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
index 6c7e2e2..b1d8913 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQuerySplitter.java
@@ -288,6 +288,10 @@ public class GridSqlQuerySplitter {
while (target.size() < idx)
target.add(null);
+ if (params.length <= idx)
+ throw new IgniteException("Invalid number of query parameters. " +
+ "Cannot find " + idx + " parameter.");
+
Object param = params[idx];
if (idx == target.size())
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
index 09a238f..50c30a5 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/twostep/GridReduceQueryExecutor.java
@@ -282,7 +282,7 @@ public class GridReduceQueryExecutor {
r.conn = (JdbcConnection)h2.connectionForSpace(space);
- // TODO Add topology version.
+ // TODO Add topology version.
ClusterGroup dataNodes = ctx.grid().cluster().forDataNodes(space);
if (cctx.isReplicated() || qry.explain()) {
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryMultiThreadedSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryMultiThreadedSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryMultiThreadedSelfTest.java
index 54bc814..23a97c9 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryMultiThreadedSelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCacheQueryMultiThreadedSelfTest.java
@@ -710,7 +710,7 @@ public class IgniteCacheQueryMultiThreadedSelfTest extends GridCommonAbstractTes
*/
private static class TestValue implements Serializable {
/** Value. */
- @QuerySqlField
+ @QuerySqlField(index = true)
private int val;
/**
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/local/IgniteCacheLocalQuerySelfTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/local/IgniteCacheLocalQuerySelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/local/IgniteCacheLocalQuerySelfTest.java
index c489d35..48dc6f2 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/local/IgniteCacheLocalQuerySelfTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/local/IgniteCacheLocalQuerySelfTest.java
@@ -78,5 +78,11 @@ public class IgniteCacheLocalQuerySelfTest extends IgniteCacheAbstractQuerySelfT
assert iter.next() != null;
assert iter.next() != null;
assert !iter.hasNext();
+
+ // Test explain for primitive index.
+ List<List<?>> res = cache.query(new SqlFieldsQuery(
+ "explain select _key from String where _val > 'value1'").setLocal(true)).getAll();
+
+ assertTrue("__ explain: \n" + res, ((String)res.get(0).get(0)).contains("_val_idx"));
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
----------------------------------------------------------------------
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
index 7cdf0bc..99366f0 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/BaseH2CompareQueryTest.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.processors.query.h2.sql;
+import org.apache.ignite.*;
import org.apache.ignite.cache.*;
import org.apache.ignite.cache.affinity.*;
import org.apache.ignite.cache.query.*;
@@ -180,6 +181,21 @@ public class BaseH2CompareQueryTest extends AbstractH2CompareQueryTest {
}
/**
+ * @throws Exception If failed.
+ */
+ public void testInvalidQuery() throws Exception {
+ final SqlFieldsQuery sql = new SqlFieldsQuery("SELECT firstName from Person where id <> ? and orgId <> ?");
+
+ GridTestUtils.assertThrows(log, new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ pCache.query(sql.setArgs(3));
+
+ return null;
+ }
+ }, IgniteException.class, "Invalid number of query parameters.");
+ }
+
+ /**
* @throws Exception
*/
// TODO: IGNITE-705
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/jcl/pom.xml
----------------------------------------------------------------------
diff --git a/modules/jcl/pom.xml b/modules/jcl/pom.xml
index d6f0f93..907844b 100644
--- a/modules/jcl/pom.xml
+++ b/modules/jcl/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-jcl</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/jta/pom.xml
----------------------------------------------------------------------
diff --git a/modules/jta/pom.xml b/modules/jta/pom.xml
index 38d6954..3b70ad3 100644
--- a/modules/jta/pom.xml
+++ b/modules/jta/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-jta</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/log4j/pom.xml
----------------------------------------------------------------------
diff --git a/modules/log4j/pom.xml b/modules/log4j/pom.xml
index 243d716..b0dd5f3 100644
--- a/modules/log4j/pom.xml
+++ b/modules/log4j/pom.xml
@@ -31,7 +31,7 @@
</parent>
<artifactId>ignite-log4j</artifactId>
- <version>1.0.8-SNAPSHOT</version>
+ <version>1.2.0-SNAPSHOT</version>
<dependencies>
<dependency>
http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/2bc8b253/modules/mesos/README.txt
----------------------------------------------------------------------
diff --git a/modules/mesos/README.txt b/modules/mesos/README.txt
new file mode 100644
index 0000000..75a62f8
--- /dev/null
+++ b/modules/mesos/README.txt
@@ -0,0 +1,28 @@
+Apache Ignite Mesos Module
+------------------------
+
+Apache Ignite Mesos module provides integration Apache Ignite with Apache Mesos.
+
+Importing Apache Ignite Mesos Module In Maven Project
+-------------------------------------
+
+If you are using Maven to manage dependencies of your project, you can add Cloud module
+dependency like this (replace '${ignite.version}' with actual Ignite version you are
+interested in):
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ ...
+ <dependencies>
+ ...
+ <dependency>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-mesos</artifactId>
+ <version>${ignite.version}</version>
+ </dependency>
+ ...
+ </dependencies>
+ ...
+</project>