Skip to content

Conversation

@sahilTakiar
Copy link
Contributor

@sahilTakiar sahilTakiar commented Mar 12, 2019

HDFS-14304 describes the issue. The TL;DR is that libhdfs caches JNI jclass objects (which is a recommended practice, see https://www.ibm.com/developerworks/library/j-jni/index.html#notc). However, the issue is that the current implementation caches all the jclass objects in a global hash table. Since libhdfs is designed to be used by multiple threads concurrently, the hash table is protected by a single mutex to avoid concurrency issues. The issue is that for short lived Java method, acquiring the lock contributes to significant performance overhead.

I first considered using a RW Lock (pthread_rwlock_t) to fix this issue, but after some prototyping I found that it didn't fix the actual issue. Acquiring a read lock still requires going through lock acquisition, so the performance issue is still present.

Instead, after some digging, I landed on an approach similar to https://stackoverflow.com/questions/10617735/in-jni-how-do-i-cache-the-class-methodid-and-fieldids-per-ibms-performance-r

Instead of using a hash table to lazily-load and store all the jclass objects. This patch allocates all necessary jclass objects upon JVM load (the classes are loaded in getGlobalJNIEnv). This removes the need for the hash table and the associated locking completely.

One could argue that lazily-loading the jclasss (which is what the current code does) is preferable to eagerly-loading the jclasss (which is what this patch does). However, after doing some analysis I don't think that holds. Consider the following:

  • There are only 19 jclasss that need to be used throughout libhdfs
  • This is done only once per process, and is done during JVM load time (loading 19 jclasss should not significantly contribute to startup costs)

Another concern is the space required to store all the jclass objects compared to storing them in the htable.

Consider that the current htable used by jni_helper is initially allocated with 4096 htable_pairs where each htable_pair consists of two pointers. So the total size of the htable should be about 64 kilobytes.

On the other hand, a single jclass object should conservatively take up ~248 bytes:

  • JOL shows that a single Class object takes up to 104 bytes (it depends on various system settings / JVM settings)
  • Some runtime analysis shows that a Class object has to store the name of the Class itself, which is of course variable, but is conservatively estimated to be 100 bytes
    • The longest class name we store is 50 characters, which should equate to about 100 bytes in Java
  • Add 48 bytes for any additional overhead required for a jclass object to reference the Java Class object (I'm assuming there are some additional pointers somewhere, but I don't know enough about the JNI implementation to know what they are).

With 19 jclass objects that is about 4.5 kilobytes; significantly less that the size of an empty htable. So overall, this patch should actually decrease the memory requirement for libhdfs.

Some more details about the actual implementation:

  • jclasses.h contains all the jclass objects that are used throughout libhdfs
  • I changed invokeMethod in jni_helper to take in an existing jclass and deleted all the hash table lookup code
  • findClassAndInvokeMethod is equivalent to the old implementation of invokeMethod - it is currently just used in test code
  • Deleted htable and all associated code: test classes, mutexes, etc.
  • Fixed a few other checkstyle issues

While this patch looks long, most of the changes are refactoring, since every call to invokeMethod had to be changed. The main files to look at are: jclasses.h, jclasses.c, jni_helper.h, and jni_helper.c.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here's an idea that may simplify the diff and the code a bit:

Instead of defining a jclass and a const char* for each class, you did something like this in the header:

enum CachedJavaClass {
  JC_CONFIGURATION,
  JC_PATH,
  ...
  JC_NUM_CACHED_CLASSES
};

extern jclass g_cached_classes[JC_NUM_CACHED_CLASSES];

and then in jclasses.c:

jclass g_cached_classes[JC_NUM_CACHED_CLASSES];

typedef struct idx_with_class {
  int idx;
  const char* clazz;
};
static idx_with_class IDS_WITH_CLASSES[] = {
  {JC_CONFIGURATION, "org/apache/hadoop/conf/Configuration"},
  {JC_PATH, "org/apache/hadoop/Path"},
  {-1, NULL}
};

static void init_cached_class(int index, const char* class) {
  ... find java class and init g_cached_classes[index];
}

void init_cached_classes(JNIEnv* env) {
  for (int i = 0; IDS_WITH_CLASSES[i].idx >= 0; i++) {
    int idx = IDS_WITH_CLASSES[i].idx;
    if (!init_cached_class(IDS_WITH_CLASSES[i].clazz, &g_cached_classes[idx])) {
      FATAL("failed to init class %s', ...);
    }
  }
  for (int i = 0; i < JC_NUM_CACHED_CLASSES; i++) {
    if (!g_cached_classes[i]) {
      // this would be a bug if we missed one in the IDS_WITH_CLASSES list, but cheap enough to just
      // validate at runtime anyway
      FATAL("missing initialization for class index %d", i);
    }
  }
}

Then in the various other call sites you can just pass the class 'ID' and look it up from this array? Might simplify the code a bit and make it a bit more "declarative" vs the repeated copy-pasting in the init sequence.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense. I ended up implementing something similar to what you suggested, although some of the data structure layout is a bit different.

All of the logic is encapsulated in jclasses.h / jclasses.c. Essentially, there is a single array cachedJavaClasses that contains NUM_CACHED_CLASSES javaClassAndName structs (jclass and const char *className). jclasses.h exposes two methods: getJclass that returns a *jclass from a CachedJavaClass and getClassName that returns the class name of the CachedJavaClass.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

whitespace:tabs in line

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 20 Docker mode activated.
_ Prechecks _
+1 @author 0 The patch does not contain any @author tags.
-1 test4tests 0 The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+1 mvninstall 1098 trunk passed
+1 compile 123 trunk passed
+1 mvnsite 20 trunk passed
+1 shadedclient 1923 branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 mvninstall 14 the patch passed
+1 compile 100 the patch passed
-1 cc 100 hadoop-hdfs-project_hadoop-hdfs-native-client generated 8 new + 2 unchanged - 0 fixed = 10 total (was 2)
+1 javac 100 the patch passed
+1 mvnsite 16 the patch passed
-1 whitespace 0 The patch 1 line(s) with tabs.
+1 shadedclient 784 patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 unit 358 hadoop-hdfs-native-client in the patch passed.
+1 asflicense 25 The patch does not generate ASF License warnings.
3370
Subsystem Report/Notes
Docker Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-595/1/artifact/out/Dockerfile
GITHUB PR #595
JIRA Issue HDFS-14304
Optional Tests dupname asflicense compile cc mvnsite javac unit
uname Linux 2d673d55175a 4.4.0-139-generic #165~14.04.1-Ubuntu SMP Wed Oct 31 10:55:11 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality personality/hadoop.sh
git revision trunk / c0427c8
maven version: Apache Maven 3.3.9
Default Java 1.8.0_191
cc https://builds.apache.org/job/hadoop-multibranch/job/PR-595/1/artifact/out/diff-compile-cc-hadoop-hdfs-project_hadoop-hdfs-native-client.txt
whitespace https://builds.apache.org/job/hadoop-multibranch/job/PR-595/1/artifact/out/whitespace-tabs.txt
Test Results https://builds.apache.org/job/hadoop-multibranch/job/PR-595/1/testReport/
Max. process+thread count 340 (vs. ulimit of 5500)
modules C: hadoop-hdfs-project/hadoop-hdfs-native-client U: hadoop-hdfs-project/hadoop-hdfs-native-client
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-595/1/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

@sahilTakiar
Copy link
Contributor Author

@toddlipcon addressed your comments.

Perhaps I should not be force pushing my changes, because you comments seem to have disappeared from the PR landing page, but you can still seem them (and my responses) here: 05a31ca

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 27 Docker mode activated.
_ Prechecks _
+1 @author 0 The patch does not contain any @author tags.
-1 test4tests 0 The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+1 mvninstall 1129 trunk passed
+1 compile 95 trunk passed
+1 mvnsite 21 trunk passed
+1 shadedclient 1896 branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 mvninstall 15 the patch passed
+1 compile 93 the patch passed
+1 cc 93 the patch passed
+1 javac 93 the patch passed
+1 mvnsite 15 the patch passed
+1 whitespace 0 The patch has no whitespace issues.
+1 shadedclient 725 patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 unit 339 hadoop-hdfs-native-client in the patch passed.
+1 asflicense 30 The patch does not generate ASF License warnings.
3272
Subsystem Report/Notes
Docker Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-595/2/artifact/out/Dockerfile
GITHUB PR #595
JIRA Issue HDFS-14304
Optional Tests dupname asflicense compile cc mvnsite javac unit
uname Linux ffbd0e20f536 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality personality/hadoop.sh
git revision trunk / 992489c
maven version: Apache Maven 3.3.9
Default Java 1.8.0_191
Test Results https://builds.apache.org/job/hadoop-multibranch/job/PR-595/2/testReport/
Max. process+thread count 445 (vs. ulimit of 5500)
modules C: hadoop-hdfs-project/hadoop-hdfs-native-client U: hadoop-hdfs-project/hadoop-hdfs-native-client
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-595/2/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of exposing this externally from jclasses.h I think it'd be better to just unconditionally call initCachedClasses() and make it internally decide whether to no-op it. That's a cold code path (only once per thread) so avoiding the non-inlined function call isn't important

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved jclassesInitialized to jclasses.c and changed it to static instead of extern. initCachedClasses acquires a lock, checks if jclassesInitialized is true or not, and conditionally loads the jclasses

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

per above, I think we should document that this is idempotent and threadsafe (safe to call multiple times)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this double-checked locking idiom isn't safe unless you insert a memory barrier before the store to jclassesInitialized. (it has to be a store with "release" semantics)

Otherwise, the compiler (and/or CPU) is free to decide to reorder the store to 'jclassesInitialized = 1' up earlier within the critical section.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that said, this isn't a hot path so I don't think it's worth trying to be fancy, and I think we can just acquire the mutex unconditionally

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed. Removed the first if statement, so initCachedClasses always acquires the lock.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see a corresponding unlock for this

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this return (and the one above) miss some cleanup that should happen in the 'goto fail' label? (ugh I hate programming in C...)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, fixed. I think the one above is okay; the cleanup is dependent on ThreadLocalState being created.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: can you sort these includes?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 0 Docker mode activated.
-1 patch 11 #595 does not apply to trunk. Rebase required? Wrong Branch? See https://wiki.apache.org/hadoop/HowToContribute for help.
Subsystem Report/Notes
GITHUB PR #595
JIRA Issue HDFS-14304
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-595/3/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 26 Docker mode activated.
_ Prechecks _
+1 @author 0 The patch does not contain any @author tags.
-1 test4tests 0 The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+1 mvninstall 983 trunk passed
+1 compile 96 trunk passed
+1 mvnsite 23 trunk passed
+1 shadedclient 1761 branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 mvninstall 15 the patch passed
+1 compile 91 the patch passed
+1 cc 91 the patch passed
+1 javac 91 the patch passed
+1 mvnsite 15 the patch passed
+1 whitespace 0 The patch has no whitespace issues.
+1 shadedclient 680 patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 unit 339 hadoop-hdfs-native-client in the patch passed.
+1 asflicense 23 The patch does not generate ASF License warnings.
3092
Subsystem Report/Notes
Docker Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-595/4/artifact/out/Dockerfile
GITHUB PR #595
JIRA Issue HDFS-14304
Optional Tests dupname asflicense compile cc mvnsite javac unit
uname Linux 85f868aca893 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality personality/hadoop.sh
git revision trunk / 1639071
maven version: Apache Maven 3.3.9
Default Java 1.8.0_191
Test Results https://builds.apache.org/job/hadoop-multibranch/job/PR-595/4/testReport/
Max. process+thread count 410 (vs. ulimit of 5500)
modules C: hadoop-hdfs-project/hadoop-hdfs-native-client U: hadoop-hdfs-project/hadoop-hdfs-native-client
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-595/4/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with this 'goto done', you end up calling va_end without the va_start

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit, missing a space after the comma here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

missing the mutex unlock pair here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not your fault, but seems odd that 'ret' is assigned here but not used

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

again not your bug, but jthr isn't checked

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: can you use a typedef here to avoid having to use 'struct javaClassAndName' everywhere?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 26 Docker mode activated.
_ Prechecks _
+1 @author 0 The patch does not contain any @author tags.
-1 test4tests 0 The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+1 mvninstall 985 trunk passed
+1 compile 92 trunk passed
+1 mvnsite 24 trunk passed
+1 shadedclient 1768 branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 mvninstall 14 the patch passed
+1 compile 91 the patch passed
+1 cc 91 the patch passed
+1 javac 91 the patch passed
+1 mvnsite 18 the patch passed
+1 whitespace 0 The patch has no whitespace issues.
+1 shadedclient 729 patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 unit 334 hadoop-hdfs-native-client in the patch passed.
+1 asflicense 28 The patch does not generate ASF License warnings.
3142
Subsystem Report/Notes
Docker Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-595/5/artifact/out/Dockerfile
GITHUB PR #595
JIRA Issue HDFS-14304
Optional Tests dupname asflicense compile cc mvnsite javac unit
uname Linux 9acfaac08d71 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality personality/hadoop.sh
git revision trunk / a99eb80
maven version: Apache Maven 3.3.9
Default Java 1.8.0_191
Test Results https://builds.apache.org/job/hadoop-multibranch/job/PR-595/5/testReport/
Max. process+thread count 425 (vs. ulimit of 5500)
modules C: hadoop-hdfs-project/hadoop-hdfs-native-client U: hadoop-hdfs-project/hadoop-hdfs-native-client
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-595/5/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

Copy link
Contributor

@toddlipcon toddlipcon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks like this needs a rebase since I committed PR #600

Sahil Takiar added 2 commits March 26, 2019 19:34
* Fixed double-locking issue
* Internalize jclass initialization inside initCachedClasses
@sahilTakiar
Copy link
Contributor Author

Rebased on trunk. Only conflict was:

    } else {
        jclass clazz = (*env)->FindClass(env, READ_OPTION);
        if (!clazz) {
-           jthr = newRuntimeError(env, "failed "
-                   "to find class for %s", READ_OPTION);
+           jthr = getPendingExceptionAndClear(env);
            goto done;
        }
        jthr = invokeMethod(env, &jVal, STATIC, NULL,

This patch changed READ_OPTION to HADOOP_RO which caused a conflict.

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 29 Docker mode activated.
_ Prechecks _
+1 @author 0 The patch does not contain any @author tags.
-1 test4tests 0 The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+1 mvninstall 994 trunk passed
+1 compile 101 trunk passed
+1 mvnsite 16 trunk passed
+1 shadedclient 1717 branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 mvninstall 14 the patch passed
-1 compile 34 hadoop-hdfs-native-client in the patch failed.
-1 cc 34 hadoop-hdfs-native-client in the patch failed.
-1 javac 34 hadoop-hdfs-native-client in the patch failed.
+1 mvnsite 16 the patch passed
+1 whitespace 0 The patch has no whitespace issues.
+1 shadedclient 678 patch has no errors when building and testing our client artifacts.
_ Other Tests _
-1 unit 35 hadoop-hdfs-native-client in the patch failed.
+1 asflicense 24 The patch does not generate ASF License warnings.
2671
Subsystem Report/Notes
Docker Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-595/6/artifact/out/Dockerfile
GITHUB PR #595
JIRA Issue HDFS-14304
Optional Tests dupname asflicense compile cc mvnsite javac unit
uname Linux fc6e44fb6578 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality personality/hadoop.sh
git revision trunk / fe29b39
maven version: Apache Maven 3.3.9
Default Java 1.8.0_191
compile https://builds.apache.org/job/hadoop-multibranch/job/PR-595/6/artifact/out/patch-compile-hadoop-hdfs-project_hadoop-hdfs-native-client.txt
cc https://builds.apache.org/job/hadoop-multibranch/job/PR-595/6/artifact/out/patch-compile-hadoop-hdfs-project_hadoop-hdfs-native-client.txt
javac https://builds.apache.org/job/hadoop-multibranch/job/PR-595/6/artifact/out/patch-compile-hadoop-hdfs-project_hadoop-hdfs-native-client.txt
unit https://builds.apache.org/job/hadoop-multibranch/job/PR-595/6/artifact/out/patch-unit-hadoop-hdfs-project_hadoop-hdfs-native-client.txt
Test Results https://builds.apache.org/job/hadoop-multibranch/job/PR-595/6/testReport/
Max. process+thread count 411 (vs. ulimit of 5500)
modules C: hadoop-hdfs-project/hadoop-hdfs-native-client U: hadoop-hdfs-project/hadoop-hdfs-native-client
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-595/6/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

@sahilTakiar
Copy link
Contributor Author

Fixing compilation issues. thread_local_storage.c compilation was failing because it was using the old version of invokeMethod. Changed it to findClassAndInvokeMethod since the code is not on the hot path + it is possible this code is called before the cached Java classes are created.

@asfgit asfgit closed this in 18c57cf Mar 27, 2019
@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Comment
0 reexec 29 Docker mode activated.
_ Prechecks _
+1 @author 0 The patch does not contain any @author tags.
-1 test4tests 0 The patch doesn't appear to include any new or modified tests. Please justify why no new tests are needed for this patch. Also please list what manual steps were performed to verify this patch.
_ trunk Compile Tests _
+1 mvninstall 1098 trunk passed
+1 compile 99 trunk passed
+1 mvnsite 23 trunk passed
+1 shadedclient 1878 branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 mvninstall 18 the patch passed
+1 compile 112 the patch passed
+1 cc 112 the patch passed
+1 javac 112 the patch passed
+1 mvnsite 17 the patch passed
+1 whitespace 0 The patch has no whitespace issues.
-1 shadedclient 150 patch has errors when building and testing our client artifacts.
_ Other Tests _
+1 unit 351 hadoop-hdfs-native-client in the patch passed.
+1 asflicense 24 The patch does not generate ASF License warnings.
2723
Subsystem Report/Notes
Docker Client=17.05.0-ce Server=17.05.0-ce base: https://builds.apache.org/job/hadoop-multibranch/job/PR-595/7/artifact/out/Dockerfile
GITHUB PR #595
JIRA Issue HDFS-14304
Optional Tests dupname asflicense compile cc mvnsite javac unit
uname Linux 77c238b5cbc6 4.4.0-138-generic #164-Ubuntu SMP Tue Oct 2 17:16:02 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality personality/hadoop.sh
git revision trunk / f426b7c
maven version: Apache Maven 3.3.9
Default Java 1.8.0_191
Test Results https://builds.apache.org/job/hadoop-multibranch/job/PR-595/7/testReport/
Max. process+thread count 412 (vs. ulimit of 5500)
modules C: hadoop-hdfs-project/hadoop-hdfs-native-client U: hadoop-hdfs-project/hadoop-hdfs-native-client
Console output https://builds.apache.org/job/hadoop-multibranch/job/PR-595/7/console
Powered by Apache Yetus 0.9.0 http://yetus.apache.org

This message was automatically generated.

smengcl pushed a commit to smengcl/hadoop that referenced this pull request Oct 8, 2019
This closes apache#595

Signed-off-by: Todd Lipcon <[email protected]>

(cherry picked from commit 18c57cf)
(cherry picked from commit 72d425c)

Conflicts:
	hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.c
	hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs/exception.c
	hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs/jni_helper.h

Change-Id: I9d6fb410cae3311e384df2008a3f2a6645355574
shanthoosh pushed a commit to shanthoosh/hadoop that referenced this pull request Oct 15, 2019
Currently only the ClusterBasedJobCoordinator and ZkJobCoordinator are creating changelog streams. The Passthrough one should also do it.

Author: xinyuiscool <[email protected]>

Reviewers: Bharath K <[email protected]>

Closes apache#595 from xinyuiscool/SAMZA-1796
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Oct 28, 2024
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Nov 20, 2024
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Nov 27, 2024
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Nov 28, 2024
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Dec 2, 2024
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Dec 2, 2024
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Dec 2, 2024
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Dec 2, 2024
deepakdamri pushed a commit to acceldata-io/hadoop that referenced this pull request Dec 3, 2024
basic02 pushed a commit to basic02/hadoop that referenced this pull request Jan 12, 2025
This closes apache#595

Signed-off-by: Todd Lipcon <[email protected]>

(cherry picked from commit 18c57cf)

Conflicts:
	hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs-tests/native_mini_dfs.c
	hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs/exception.c
	hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/libhdfs/jni_helper.h

Change-Id: I9d6fb410cae3311e384df2008a3f2a6645355574
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants