You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by me...@apache.org on 2015/03/27 23:51:02 UTC
[2/3] mesos git commit: Added concurrency protection within the SASL
auxprop plugin code.
Added concurrency protection within the SASL auxprop plugin code.
Review: https://reviews.apache.org/r/31960
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/17a06589
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/17a06589
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/17a06589
Branch: refs/heads/master
Commit: 17a06589e6e64d0fee38b7e45fa338af7547a8e5
Parents: 43abc21
Author: Till Toenshoff <to...@me.com>
Authored: Fri Mar 27 15:24:50 2015 -0700
Committer: Adam B <ad...@mesosphere.io>
Committed: Fri Mar 27 15:24:50 2015 -0700
----------------------------------------------------------------------
src/authentication/cram_md5/auxprop.cpp | 2 ++
src/authentication/cram_md5/auxprop.hpp | 12 ++++++++++++
2 files changed, 14 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/17a06589/src/authentication/cram_md5/auxprop.cpp
----------------------------------------------------------------------
diff --git a/src/authentication/cram_md5/auxprop.cpp b/src/authentication/cram_md5/auxprop.cpp
index cf503a2..4cabaa3 100644
--- a/src/authentication/cram_md5/auxprop.cpp
+++ b/src/authentication/cram_md5/auxprop.cpp
@@ -30,6 +30,8 @@ namespace cram_md5 {
// Storage for the static members.
Multimap<string, Property> InMemoryAuxiliaryPropertyPlugin::properties;
sasl_auxprop_plug_t InMemoryAuxiliaryPropertyPlugin::plugin;
+pthread_mutex_t InMemoryAuxiliaryPropertyPlugin::mutex =
+ PTHREAD_MUTEX_INITIALIZER;
int InMemoryAuxiliaryPropertyPlugin::initialize(
http://git-wip-us.apache.org/repos/asf/mesos/blob/17a06589/src/authentication/cram_md5/auxprop.hpp
----------------------------------------------------------------------
diff --git a/src/authentication/cram_md5/auxprop.hpp b/src/authentication/cram_md5/auxprop.hpp
index b894386..6aa3ce6 100644
--- a/src/authentication/cram_md5/auxprop.hpp
+++ b/src/authentication/cram_md5/auxprop.hpp
@@ -19,6 +19,8 @@
#ifndef __AUTHENTICATION_CRAM_MD5_AUXPROP_HPP__
#define __AUTHENTICATION_CRAM_MD5_AUXPROP_HPP__
+#include <pthread.h>
+
#include <string>
#include <sasl/sasl.h>
@@ -29,6 +31,8 @@
#include <stout/none.hpp>
#include <stout/option.hpp>
+#include "common/lock.hpp"
+
namespace mesos {
namespace internal {
namespace cram_md5 {
@@ -47,6 +51,7 @@ public:
static void load(const Multimap<std::string, Property>& _properties)
{
+ Lock lock(&mutex);
properties = _properties;
}
@@ -54,6 +59,7 @@ public:
const std::string& user,
const std::string& name)
{
+ Lock lock(&mutex);
if (properties.contains(user)) {
foreach (const Property& property, properties.get(user)) {
if (property.name == name) {
@@ -84,9 +90,15 @@ private:
const char* user,
unsigned length);
+ // TODO(tillt): For allowing multiple authenticators with differing
+ // credentials, consider using a non-static credential properties.
static Multimap<std::string, Property> properties;
static sasl_auxprop_plug_t plugin;
+
+ // Access to 'properties' has to be protected as multiple
+ // authenticator instances may be active concurrently.
+ static pthread_mutex_t mutex;
};
} // namespace cram_md5 {