Uploaded image for project: 'Hadoop HDFS'
  1. Hadoop HDFS
  2. HDFS-8707 Implement an async pure c++ HDFS client
  3. HDFS-12134

libhdfs++: Add a synchronization interface for the GSSAPI

    XMLWordPrintableJSON

Details

    • Sub-task
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • HDFS-8707
    • hdfs-client
    • None

    Description

      Bits of the GSSAPI that Cyrus Sasl uses aren't thread safe. There needs to be a way for a client application to share a lock with this library in order to prevent race conditions. It can be done using event callbacks through the C API but we can provide something more robust (RAII) in the C++ API.

      Proposed client supplied lock, pretty much the C++17 lockable concept. Use a default if one isn't provided. This would be scoped at the process level since it's unlikely that multiple instances of libgssapi unless someone puts some effort in with dlopen/dlsym.

      class LockProvider
      {
        virtual ~LockProvider() {}
        // allow client application to deny access to the lock
        virtual bool try_lock() = 0;
        virtual void unlock() = 0;
      }
      

      Attachments

        1. HDFS-12134.HDFS-8707.000.patch
          33 kB
          James Clampffer
        2. HDFS-12134.HDFS-8707.001.patch
          33 kB
          James Clampffer
        3. HDFS-12134.HDFS-8707.002.patch
          33 kB
          James Clampffer
        4. HDFS-12134.HDFS-8707.003.patch
          33 kB
          James Clampffer
        5. HDFS-12134.HDFS-8707.004.patch
          33 kB
          James Clampffer

        Activity

          People

            James C James Clampffer
            James C James Clampffer
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: