[ https://issues.apache.org/jira/browse/HDFS-573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14082430#comment-14082430 ]
Stephen Bovy commented on HDFS-573: ----------------------------------- Thanks Colin, That is good news. The new pure native client looks very interesting. Our app context is "c" although some parts of our app are also c++, so we would need "c" binder/wrappers if this was written in c++. On the topic of "threads" here is my thinking: The lib-hdfs is like a skin-graft (or virus). It must adapt to the context of its "host" without harming the host. If the "host" context is a "thread", then of course lib-hdfs must survive in that context. but if the "host" context, is not a thread, it should thrive with the host without unnecessary thread-logic over-head. If the "Java code" uses threads "under-the-covers" that is a black-box non-issue as far as the host is concerned and should not germane to this discussion. I have added some backwards compatible code based on a flag to bypass the thread-logic. The flag-default=threaded, that's why it is backwards compatible. I have regression tested this with the host-thread-test app. And it is working in my non-threaded app without any complaints. I have also added an optional backwards-compatible lib-init function that enables the usage of a static-global for the JVM pointer. This of course is another "optimization" :) I have also added a NEW function to hdfs.c to support "globs" :) I would be happy to share some code-slices ( as food for thought ) thanks > Porting libhdfs to Windows > -------------------------- > > Key: HDFS-573 > URL: https://issues.apache.org/jira/browse/HDFS-573 > Project: Hadoop HDFS > Issue Type: Improvement > Components: libhdfs > Environment: Windows, Visual Studio 2008 > Reporter: Ziliang Guo > Assignee: Chris Nauroth > Attachments: HDFS-573.1.patch > > Original Estimate: 336h > Remaining Estimate: 336h > > The current C code in libhdfs is written using C99 conventions and also uses > a few POSIX specific functions such as hcreate, hsearch, and pthread mutex > locks. To compile it using Visual Studio would require a conversion of the > code in hdfsJniHelper.c and hdfs.c to C89 and replacement/reimplementation of > the POSIX functions. The code also uses the stdint.h header, which is not > part of the original C89, but there exists what appears to be a BSD licensed > reimplementation written to be compatible with MSVC floating around. I have > already done the other necessary conversions, as well as created a simplistic > hash bucket for use with hcreate and hsearch and successfully built a DLL of > libhdfs. Further testing is needed to see if it is usable by other programs > to actually access hdfs, which will likely happen in the next few weeks as > the Condor Project continues with its file transfer work. > In the process, I've removed a few what I believe are extraneous consts and > also fixed an incorrect array initialization where someone was attempting to > initialize with something like this: JavaVMOption options[noArgs]; where > noArgs was being incremented in the code above. This was in the > hdfsJniHelper.c file, in the getJNIEnv function. -- This message was sent by Atlassian JIRA (v6.2#6252)