HDFS-4155. libhdfs implementation of hsync API. Contributed by Liang Xie.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1406373 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
cf4a167525
commit
01aee565e2
|
@ -17,6 +17,8 @@ Release 2.0.3-alpha - Unreleased
|
||||||
|
|
||||||
HDFS-4059. Add number of stale DataNodes to metrics. (Jing Zhao via suresh)
|
HDFS-4059. Add number of stale DataNodes to metrics. (Jing Zhao via suresh)
|
||||||
|
|
||||||
|
HDFS-4155. libhdfs implementation of hsync API (Liang Xie via todd)
|
||||||
|
|
||||||
IMPROVEMENTS
|
IMPROVEMENTS
|
||||||
|
|
||||||
HDFS-3925. Prettify PipelineAck#toString() for printing to a log
|
HDFS-3925. Prettify PipelineAck#toString() for printing to a log
|
||||||
|
|
|
@ -1388,6 +1388,32 @@ int hdfsHFlush(hdfsFS fs, hdfsFile f)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int hdfsHSync(hdfsFS fs, hdfsFile f)
|
||||||
|
{
|
||||||
|
//Get the JNIEnv* corresponding to current thread
|
||||||
|
JNIEnv* env = getJNIEnv();
|
||||||
|
if (env == NULL) {
|
||||||
|
errno = EINTERNAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Sanity check
|
||||||
|
if (!f || f->type != OUTPUT) {
|
||||||
|
errno = EBADF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
jobject jOutputStream = f->file;
|
||||||
|
jthrowable jthr = invokeMethod(env, NULL, INSTANCE, jOutputStream,
|
||||||
|
HADOOP_OSTRM, "hsync", "()V");
|
||||||
|
if (jthr) {
|
||||||
|
errno = printExceptionAndFree(env, jthr, PRINT_EXC_ALL,
|
||||||
|
"hdfsHSync: FSDataOutputStream#hsync");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int hdfsAvailable(hdfsFS fs, hdfsFile f)
|
int hdfsAvailable(hdfsFS fs, hdfsFile f)
|
||||||
{
|
{
|
||||||
// JAVA EQUIVALENT
|
// JAVA EQUIVALENT
|
||||||
|
|
|
@ -393,6 +393,17 @@ extern "C" {
|
||||||
int hdfsHFlush(hdfsFS fs, hdfsFile file);
|
int hdfsHFlush(hdfsFS fs, hdfsFile file);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hdfsHSync - Similar to posix fsync, Flush out the data in client's
|
||||||
|
* user buffer. all the way to the disk device (but the disk may have
|
||||||
|
* it in its cache).
|
||||||
|
* @param fs configured filesystem handle
|
||||||
|
* @param file file handle
|
||||||
|
* @return 0 on success, -1 on error and sets errno
|
||||||
|
*/
|
||||||
|
int hdfsHSync(hdfsFS fs, hdfsFile file);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hdfsAvailable - Number of bytes that can be read from this
|
* hdfsAvailable - Number of bytes that can be read from this
|
||||||
* input stream without blocking.
|
* input stream without blocking.
|
||||||
|
|
|
@ -150,6 +150,7 @@ static int doTestHdfsOperations(struct tlhThreadInfo *ti, hdfsFS fs)
|
||||||
return EIO;
|
return EIO;
|
||||||
}
|
}
|
||||||
EXPECT_ZERO(hdfsFlush(fs, file));
|
EXPECT_ZERO(hdfsFlush(fs, file));
|
||||||
|
EXPECT_ZERO(hdfsHSync(fs, file));
|
||||||
EXPECT_ZERO(hdfsCloseFile(fs, file));
|
EXPECT_ZERO(hdfsCloseFile(fs, file));
|
||||||
|
|
||||||
/* Let's re-open the file for reading */
|
/* Let's re-open the file for reading */
|
||||||
|
|
Loading…
Reference in New Issue