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

    • Type: Sub-task
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: HDFS-8707
    • Component/s: hdfs-client
    • Labels:
      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

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

              Dates

              • Created:
                Updated:
                Resolved: