You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by be...@apache.org on 2012/11/08 20:47:58 UTC

svn commit: r1407241 - /incubator/mesos/trunk/src/java/jni/convert.cpp

Author: benh
Date: Thu Nov  8 19:47:57 2012
New Revision: 1407241

URL: http://svn.apache.org/viewvc?rev=1407241&view=rev
Log:
Changed compatibility checking between Mesos JAR and native library
versions to only fail when major versions differ.

From: Vinod Kone <vi...@gmail.com>
Review: https://reviews.apache.org/r/7971

Modified:
    incubator/mesos/trunk/src/java/jni/convert.cpp

Modified: incubator/mesos/trunk/src/java/jni/convert.cpp
URL: http://svn.apache.org/viewvc/incubator/mesos/trunk/src/java/jni/convert.cpp?rev=1407241&r1=1407240&r2=1407241&view=diff
==============================================================================
--- incubator/mesos/trunk/src/java/jni/convert.cpp (original)
+++ incubator/mesos/trunk/src/java/jni/convert.cpp Thu Nov  8 19:47:57 2012
@@ -146,13 +146,18 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM
   jobject jVERSION = env->GetStaticObjectField(
       clazz, env->GetStaticFieldID(clazz, "VERSION", "Ljava/lang/String;"));
 
-  const string& expected = construct<string>(env, jVERSION);
+  const string& jarVersion = construct<string>(env, jVERSION);
 
-  if (MESOS_VERSION != expected) {
+  const string jarMajorVersion = strings::split(jarVersion, ".")[0];
+  const string nativeMajorVersion = strings::split(MESOS_VERSION, ".")[0];
+
+  if (jarMajorVersion != nativeMajorVersion) {
     env->DeleteWeakGlobalRef(mesosClassLoader);
     mesosClassLoader = NULL;
     const string& error =
-      "Java expecting version " + expected + ", found version " + MESOS_VERSION;
+      "Mesos JAR version " + jarVersion +
+      " is not backwards compatible with Mesos native library version " +
+      MESOS_VERSION;
     clazz = env->FindClass("java/lang/UnsatisfiedLinkError");
     env->ThrowNew(clazz, error.c_str());
     return JNI_ERR;