Merge branch '2.2' into develop
This commit is contained in:
@ -204,7 +204,7 @@ const DEBUG_ARGUMENT debug_arguments[] =
|
||||
{
|
||||
"disable-module-unloading", disable_module_unloading,
|
||||
"disable module unloading at exit. Will produce better\n"
|
||||
SPACER "Valgring leak reports if leaked memory was allocated in\n"
|
||||
SPACER "Valgrind leak reports if leaked memory was allocated in\n"
|
||||
SPACER "a shared library"
|
||||
},
|
||||
{
|
||||
|
||||
@ -40,15 +40,6 @@ typedef struct simple_mutex_st
|
||||
skygw_chk_t sm_chk_tail;
|
||||
} simple_mutex_t;
|
||||
|
||||
typedef struct skygw_rwlock_st
|
||||
{
|
||||
skygw_chk_t srw_chk_top;
|
||||
pthread_rwlock_t* srw_rwlock;
|
||||
pthread_t srw_rwlock_thr;
|
||||
skygw_chk_t srw_chk_tail;
|
||||
} skygw_rwlock_t;
|
||||
|
||||
|
||||
typedef enum { THR_INIT, THR_RUNNING, THR_STOPPED, THR_DONE } skygw_thr_state_t;
|
||||
typedef enum { MES_RC_FAIL, MES_RC_SUCCESS, MES_RC_TIMEOUT } skygw_mes_rc_t;
|
||||
|
||||
@ -140,9 +131,6 @@ int skygw_file_write(skygw_file_t* file,
|
||||
bool flush);
|
||||
/** Skygw file routines */
|
||||
|
||||
void acquire_lock(int* l);
|
||||
void release_lock(int* l);
|
||||
|
||||
simple_mutex_t* simple_mutex_init(simple_mutex_t* mutexptr, const char* name);
|
||||
int simple_mutex_done(simple_mutex_t* sm);
|
||||
int simple_mutex_lock(simple_mutex_t* sm, bool block);
|
||||
@ -158,11 +146,6 @@ void skygw_message_reset(skygw_message_t* mes);
|
||||
|
||||
/** Skygw message routines */
|
||||
|
||||
int skygw_rwlock_wrlock(skygw_rwlock_t* rwlock);
|
||||
int skygw_rwlock_rdlock(skygw_rwlock_t* rwlock);
|
||||
int skygw_rwlock_unlock(skygw_rwlock_t* rwlock);
|
||||
int skygw_rwlock_init(skygw_rwlock_t** rwlock);
|
||||
|
||||
size_t get_decimal_len(size_t s);
|
||||
|
||||
MXS_END_DECLS
|
||||
|
||||
@ -23,6 +23,7 @@
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <dlfcn.h>
|
||||
#include <algorithm>
|
||||
|
||||
#include <maxscale/modinfo.h>
|
||||
#include <maxscale/log_manager.h>
|
||||
@ -139,9 +140,14 @@ void *load_module(const char *module, const char *type)
|
||||
|
||||
if ((mod = find_module(module)) == NULL)
|
||||
{
|
||||
size_t len = strlen(module);
|
||||
char lc_module[len + 1];
|
||||
lc_module[len] = 0;
|
||||
std::transform(module, module + len, lc_module, tolower);
|
||||
|
||||
/** The module is not already loaded, search for the shared object */
|
||||
char fname[MAXPATHLEN + 1];
|
||||
snprintf(fname, MAXPATHLEN + 1, "%s/lib%s.so", get_libdir(), module);
|
||||
snprintf(fname, MAXPATHLEN + 1, "%s/lib%s.so", get_libdir(), lc_module);
|
||||
|
||||
if (access(fname, F_OK) == -1)
|
||||
{
|
||||
@ -219,7 +225,7 @@ find_module(const char *module)
|
||||
{
|
||||
while (mod)
|
||||
{
|
||||
if (strcmp(mod->module, module) == 0)
|
||||
if (strcasecmp(mod->module, module) == 0)
|
||||
{
|
||||
return mod;
|
||||
}
|
||||
|
||||
@ -154,7 +154,7 @@ typedef struct logmanager logmanager_t;
|
||||
* Global log manager pointer and lock variable.
|
||||
* lmlock protects logmanager access.
|
||||
*/
|
||||
static int lmlock;
|
||||
static SPINLOCK lmlock = SPINLOCK_INIT;
|
||||
static logmanager_t* lm;
|
||||
static bool flushall_flag;
|
||||
static bool flushall_started_flag;
|
||||
@ -370,7 +370,7 @@ struct logfile
|
||||
size_t lf_buf_size;
|
||||
bool lf_flushflag;
|
||||
bool lf_rotateflag;
|
||||
int lf_spinlock; /**< lf_flushflag & lf_rotateflag */
|
||||
SPINLOCK lf_spinlock; /**< lf_flushflag & lf_rotateflag */
|
||||
#if defined(SS_DEBUG)
|
||||
skygw_chk_t lf_chk_tail;
|
||||
#endif
|
||||
@ -599,7 +599,7 @@ bool mxs_log_init(const char* ident, const char* logdir, mxs_log_target_t target
|
||||
{
|
||||
bool succ = false;
|
||||
|
||||
acquire_lock(&lmlock);
|
||||
spinlock_acquire(&lmlock);
|
||||
|
||||
if (!lm)
|
||||
{
|
||||
@ -634,7 +634,7 @@ bool mxs_log_init(const char* ident, const char* logdir, mxs_log_target_t target
|
||||
succ = true;
|
||||
}
|
||||
|
||||
release_lock(&lmlock);
|
||||
spinlock_release(&lmlock);
|
||||
|
||||
return succ;
|
||||
}
|
||||
@ -693,7 +693,7 @@ static void logmanager_done_nomutex(void)
|
||||
*/
|
||||
void mxs_log_finish(void)
|
||||
{
|
||||
acquire_lock(&lmlock);
|
||||
spinlock_acquire(&lmlock);
|
||||
|
||||
if (lm)
|
||||
{
|
||||
@ -706,9 +706,9 @@ void mxs_log_finish(void)
|
||||
*/
|
||||
while (lm != NULL && lm->lm_nlinks != 0)
|
||||
{
|
||||
release_lock(&lmlock);
|
||||
spinlock_release(&lmlock);
|
||||
sched_yield();
|
||||
acquire_lock(&lmlock);
|
||||
spinlock_acquire(&lmlock);
|
||||
}
|
||||
|
||||
/** Shut down if not already shutted down. */
|
||||
@ -719,7 +719,7 @@ void mxs_log_finish(void)
|
||||
}
|
||||
}
|
||||
|
||||
release_lock(&lmlock);
|
||||
spinlock_release(&lmlock);
|
||||
}
|
||||
|
||||
static logfile_t* logmanager_get_logfile(logmanager_t* lmgr)
|
||||
@ -1330,7 +1330,7 @@ static bool logmanager_register(bool writep)
|
||||
{
|
||||
bool succ = true;
|
||||
|
||||
acquire_lock(&lmlock);
|
||||
spinlock_acquire(&lmlock);
|
||||
|
||||
if (lm == NULL || !lm->lm_enabled)
|
||||
{
|
||||
@ -1355,9 +1355,9 @@ static bool logmanager_register(bool writep)
|
||||
*/
|
||||
while (lm != NULL && !lm->lm_enabled)
|
||||
{
|
||||
release_lock(&lmlock);
|
||||
spinlock_release(&lmlock);
|
||||
sched_yield();
|
||||
acquire_lock(&lmlock);
|
||||
spinlock_acquire(&lmlock);
|
||||
}
|
||||
|
||||
if (lm == NULL)
|
||||
@ -1380,7 +1380,7 @@ return_succ:
|
||||
{
|
||||
fatal_error = true;
|
||||
}
|
||||
release_lock(&lmlock);
|
||||
spinlock_release(&lmlock);
|
||||
return succ;
|
||||
}
|
||||
|
||||
@ -1399,12 +1399,12 @@ return_succ:
|
||||
*/
|
||||
static void logmanager_unregister(void)
|
||||
{
|
||||
acquire_lock(&lmlock);
|
||||
spinlock_acquire(&lmlock);
|
||||
|
||||
lm->lm_nlinks -= 1;
|
||||
ss_dassert(lm->lm_nlinks >= 0);
|
||||
|
||||
release_lock(&lmlock);
|
||||
spinlock_release(&lmlock);
|
||||
}
|
||||
|
||||
|
||||
@ -1461,9 +1461,9 @@ static bool fnames_conf_init(fnames_conf_t* fn, const char* logdir)
|
||||
static void logfile_flush(logfile_t* lf)
|
||||
{
|
||||
CHK_LOGFILE(lf);
|
||||
acquire_lock(&lf->lf_spinlock);
|
||||
spinlock_acquire(&lf->lf_spinlock);
|
||||
lf->lf_flushflag = true;
|
||||
release_lock(&lf->lf_spinlock);
|
||||
spinlock_release(&lf->lf_spinlock);
|
||||
skygw_message_send(lf->lf_logmes);
|
||||
}
|
||||
|
||||
@ -1476,9 +1476,9 @@ static void logfile_flush(logfile_t* lf)
|
||||
static void logfile_rotate(logfile_t* lf)
|
||||
{
|
||||
CHK_LOGFILE(lf);
|
||||
acquire_lock(&lf->lf_spinlock);
|
||||
spinlock_acquire(&lf->lf_spinlock);
|
||||
lf->lf_rotateflag = true;
|
||||
release_lock(&lf->lf_spinlock);
|
||||
spinlock_release(&lf->lf_spinlock);
|
||||
skygw_message_send(lf->lf_logmes);
|
||||
}
|
||||
|
||||
@ -1867,7 +1867,7 @@ static bool logfile_init(logfile_t* logfile,
|
||||
logfile->lf_lmgr = logmanager;
|
||||
logfile->lf_flushflag = false;
|
||||
logfile->lf_rotateflag = false;
|
||||
logfile->lf_spinlock = 0;
|
||||
logfile->lf_spinlock = SPINLOCK_INIT;
|
||||
logfile->lf_store_shmem = store_shmem;
|
||||
logfile->lf_buf_size = MAX_LOGSTRLEN;
|
||||
/**
|
||||
@ -2126,12 +2126,12 @@ static bool thr_flush_file(logmanager_t *lm, filewriter_t *fwr)
|
||||
/**
|
||||
* read and reset logfile's flush- and rotateflag
|
||||
*/
|
||||
acquire_lock(&lf->lf_spinlock);
|
||||
spinlock_acquire(&lf->lf_spinlock);
|
||||
bool flush_logfile = lf->lf_flushflag;
|
||||
bool rotate_logfile = lf->lf_rotateflag;
|
||||
lf->lf_flushflag = false;
|
||||
lf->lf_rotateflag = false;
|
||||
release_lock(&lf->lf_spinlock);
|
||||
spinlock_release(&lf->lf_spinlock);
|
||||
|
||||
// fwr->fwr_file may be NULL if an earlier log-rotation failed.
|
||||
if (rotate_logfile || !fwr->fwr_file)
|
||||
@ -2316,7 +2316,9 @@ static void* thr_filewriter_fun(void* data)
|
||||
|
||||
/** Inform log manager about the state. */
|
||||
skygw_message_send(fwr->fwr_clientmes);
|
||||
while (!skygw_thread_must_exit(thr))
|
||||
bool running = true;
|
||||
|
||||
do
|
||||
{
|
||||
/**
|
||||
* Wait until new log arrival message appears.
|
||||
@ -2342,14 +2344,23 @@ static void* thr_filewriter_fun(void* data)
|
||||
}
|
||||
}
|
||||
|
||||
bool send_message = false;
|
||||
|
||||
if (flushall_done_flag)
|
||||
{
|
||||
flushall_done_flag = false;
|
||||
flushall_logfiles(false);
|
||||
skygw_message_send(fwr->fwr_clientmes);
|
||||
send_message = true;
|
||||
}
|
||||
|
||||
} /* while (!skygw_thread_must_exit) */
|
||||
running = !skygw_thread_must_exit(thr);
|
||||
|
||||
if (running && send_message)
|
||||
{
|
||||
skygw_message_send(fwr->fwr_clientmes);
|
||||
}
|
||||
}
|
||||
while (running);
|
||||
|
||||
ss_debug(skygw_thread_set_state(thr, THR_STOPPED));
|
||||
/** Inform log manager that file writer thread has stopped. */
|
||||
|
||||
@ -143,18 +143,14 @@ void mxs_pcre2_print_error(int errorcode, const char *module_name, const char *f
|
||||
{
|
||||
ss_dassert(filename);
|
||||
ss_dassert(func_name);
|
||||
|
||||
char errorbuf[100];
|
||||
int err_msg_rval = pcre2_get_error_message(errorcode, (PCRE2_UCHAR*)errorbuf,
|
||||
sizeof(errorbuf));
|
||||
|
||||
mxs_log_message(LOG_ERR, module_name, filename, line_num, func_name,
|
||||
"PCRE2 Error message: '%s'.", errorbuf);
|
||||
if (err_msg_rval == PCRE2_ERROR_NOMEMORY)
|
||||
if (mxs_log_priority_is_enabled(LOG_ERR))
|
||||
{
|
||||
// 120 should be enough to contain any error message according to pcre2 manual.
|
||||
const PCRE2_SIZE errbuf_len = 120;
|
||||
PCRE2_UCHAR errorbuf[errbuf_len];
|
||||
pcre2_get_error_message(errorcode, errorbuf, errbuf_len);
|
||||
mxs_log_message(LOG_ERR, module_name, filename, line_num, func_name,
|
||||
"PCRE2 error buffer was too small to contain the complete"
|
||||
"message.");
|
||||
"PCRE2 Error message: '%s'.", errorbuf);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -323,7 +323,7 @@ static bool process_argument(const MODULECMD *cmd, modulecmd_arg_type_t *type, c
|
||||
if ((arg->value.monitor = monitor_find((char*)value)))
|
||||
{
|
||||
const char* eff_name = mxs_module_get_effective_name(arg->value.monitor->module_name);
|
||||
if (MODULECMD_ALLOW_NAME_MISMATCH(type) || strcmp(cmd->domain, eff_name) == 0)
|
||||
if (MODULECMD_ALLOW_NAME_MISMATCH(type) || strcasecmp(cmd->domain, eff_name) == 0)
|
||||
{
|
||||
arg->type.type = MODULECMD_ARG_MONITOR;
|
||||
rval = true;
|
||||
@ -343,7 +343,7 @@ static bool process_argument(const MODULECMD *cmd, modulecmd_arg_type_t *type, c
|
||||
if ((arg->value.filter = filter_def_find((char*)value)))
|
||||
{
|
||||
const char* eff_name = mxs_module_get_effective_name(arg->value.filter->module);
|
||||
if (MODULECMD_ALLOW_NAME_MISMATCH(type) || strcmp(cmd->domain, eff_name) == 0)
|
||||
if (MODULECMD_ALLOW_NAME_MISMATCH(type) || strcasecmp(cmd->domain, eff_name) == 0)
|
||||
{
|
||||
arg->type.type = MODULECMD_ARG_FILTER;
|
||||
rval = true;
|
||||
|
||||
@ -706,10 +706,6 @@ server_status(const SERVER *server)
|
||||
{
|
||||
strcat(status, "Slave of External Server, ");
|
||||
}
|
||||
if (server_status & SERVER_STALE_STATUS)
|
||||
{
|
||||
strcat(status, "Stale Status, ");
|
||||
}
|
||||
if (server_status & SERVER_MASTER_STICKINESS)
|
||||
{
|
||||
strcat(status, "Master Stickiness, ");
|
||||
|
||||
@ -1624,6 +1624,9 @@ int service_refresh_users(SERVICE *service)
|
||||
if ((service->capabilities & ACAP_TYPE_ASYNC) == 0)
|
||||
{
|
||||
spinlock_acquire(&service->spin);
|
||||
// Use only one rate limitation for synchronous authenticators to keep
|
||||
// rate limitations synchronous as well
|
||||
self = 0;
|
||||
}
|
||||
|
||||
/* Check if refresh rate limit has been exceeded */
|
||||
|
||||
@ -43,117 +43,6 @@ static void simple_mutex_free_memory(simple_mutex_t* sm);
|
||||
static void thread_free_memory(skygw_thread_t* th, char* name);
|
||||
/** End of static function declarations */
|
||||
|
||||
|
||||
int skygw_rwlock_rdlock(skygw_rwlock_t* rwlock)
|
||||
{
|
||||
int err = pthread_rwlock_rdlock(rwlock->srw_rwlock);
|
||||
|
||||
if (err == 0)
|
||||
{
|
||||
rwlock->srw_rwlock_thr = pthread_self();
|
||||
}
|
||||
else
|
||||
{
|
||||
rwlock->srw_rwlock_thr = 0;
|
||||
ss_dfprintf(stderr,
|
||||
"* pthread_rwlock_rdlock : %s\n",
|
||||
mxs_strerror(err));
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int skygw_rwlock_wrlock(skygw_rwlock_t* rwlock)
|
||||
{
|
||||
int err = pthread_rwlock_wrlock(rwlock->srw_rwlock);
|
||||
|
||||
if (err == 0)
|
||||
{
|
||||
rwlock->srw_rwlock_thr = pthread_self();
|
||||
}
|
||||
else
|
||||
{
|
||||
rwlock->srw_rwlock_thr = 0;
|
||||
ss_dfprintf(stderr,
|
||||
"* pthread_rwlock_wrlock : %s\n",
|
||||
mxs_strerror(err));
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int skygw_rwlock_unlock(skygw_rwlock_t* rwlock)
|
||||
{
|
||||
int err = pthread_rwlock_rdlock(rwlock->srw_rwlock);
|
||||
|
||||
if (err == 0)
|
||||
{
|
||||
rwlock->srw_rwlock_thr = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
ss_dfprintf(stderr, "* pthread_rwlock_unlock : %s\n",
|
||||
mxs_strerror(err));
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int skygw_rwlock_destroy(skygw_rwlock_t* rwlock)
|
||||
{
|
||||
int err;
|
||||
/** Lock */
|
||||
if ((err = pthread_rwlock_wrlock(rwlock->srw_rwlock)) != 0)
|
||||
{
|
||||
fprintf(stderr, "* Error : pthread_rwlock_wrlock failed due to %d, %s.\n",
|
||||
err, mxs_strerror(err));
|
||||
goto retblock;
|
||||
}
|
||||
/** Clean the struct */
|
||||
rwlock->srw_rwlock_thr = 0;
|
||||
/** Unlock */
|
||||
pthread_rwlock_unlock(rwlock->srw_rwlock);
|
||||
/** Destroy */
|
||||
if ((err = pthread_rwlock_destroy(rwlock->srw_rwlock)) != 0)
|
||||
{
|
||||
fprintf(stderr, "* Error : pthread_rwlock_destroy failed due to %d,%s\n",
|
||||
err, mxs_strerror(err));
|
||||
}
|
||||
else
|
||||
{
|
||||
rwlock->srw_rwlock = NULL;
|
||||
}
|
||||
retblock:
|
||||
return err;
|
||||
}
|
||||
|
||||
int skygw_rwlock_init(skygw_rwlock_t** rwlock)
|
||||
{
|
||||
skygw_rwlock_t* rwl;
|
||||
int err;
|
||||
|
||||
rwl = (skygw_rwlock_t *) calloc(1, sizeof (skygw_rwlock_t));
|
||||
|
||||
if (rwl == NULL)
|
||||
{
|
||||
err = 1;
|
||||
goto return_err;
|
||||
}
|
||||
rwl->srw_chk_top = CHK_NUM_RWLOCK;
|
||||
rwl->srw_chk_tail = CHK_NUM_RWLOCK;
|
||||
err = pthread_rwlock_init(rwl->srw_rwlock, NULL);
|
||||
ss_dassert(err == 0);
|
||||
|
||||
if (err != 0)
|
||||
{
|
||||
free(rwl);
|
||||
ss_dfprintf(stderr, "* Creating pthread_rwlock failed : %s\n",
|
||||
mxs_strerror(err));
|
||||
goto return_err;
|
||||
}
|
||||
*rwlock = rwl;
|
||||
|
||||
return_err:
|
||||
return err;
|
||||
}
|
||||
|
||||
size_t get_timestamp_len(void)
|
||||
{
|
||||
return timestamp_len;
|
||||
@ -429,7 +318,9 @@ bool skygw_thread_set_exitflag(skygw_thread_t* thr, skygw_message_t* sendmes,
|
||||
skygw_message_wait(recmes);
|
||||
}
|
||||
|
||||
ss_dassert(simple_mutex_lock(thr->sth_mutex, true) == 0);
|
||||
ss_dassert(thr->sth_state == THR_STOPPED);
|
||||
ss_dassert(simple_mutex_unlock(thr->sth_mutex) == 0);
|
||||
|
||||
return_succp:
|
||||
return succp;
|
||||
@ -447,29 +338,6 @@ bool skygw_thread_must_exit(skygw_thread_t* thr)
|
||||
return thr->sth_must_exit;
|
||||
}
|
||||
|
||||
void acquire_lock(int* l)
|
||||
{
|
||||
register int misscount = 0;
|
||||
struct timespec ts1;
|
||||
ts1.tv_sec = 0;
|
||||
|
||||
while (atomic_add(l, 1) != 0)
|
||||
{
|
||||
atomic_add(l, -1);
|
||||
misscount += 1;
|
||||
if (misscount > 10)
|
||||
{
|
||||
ts1.tv_nsec = misscount * 1000000;
|
||||
nanosleep(&ts1, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void release_lock(int* l)
|
||||
{
|
||||
atomic_add(l, -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @node Create a simple_mutex structure which encapsulates pthread_mutex.
|
||||
*
|
||||
|
||||
@ -221,8 +221,6 @@ int main(int argc, char* argv[])
|
||||
err = MXS_NOTICE("%s", logstr);
|
||||
ss_dassert(err == 0);
|
||||
|
||||
succp = mxs_log_init(NULL, "/tmp", MXS_LOG_TARGET_FS);
|
||||
ss_dassert(succp);
|
||||
skygw_log_enable(LOG_INFO);
|
||||
logstr = ("6.\tWrite to ERROR and thus also to MESSAGE and TRACE logs.");
|
||||
err = MXS_ERROR("%s", logstr);
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(CDCPlainAuth SHARED cdc_plain_auth.c)
|
||||
target_link_libraries(CDCPlainAuth maxscale-common)
|
||||
set_target_properties(CDCPlainAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(CDCPlainAuth core)
|
||||
add_library(cdcplainauth SHARED cdc_plain_auth.c)
|
||||
target_link_libraries(cdcplainauth maxscale-common)
|
||||
set_target_properties(cdcplainauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(cdcplainauth core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(GSSAPIAuth SHARED gssapi_auth.c ../gssapi_auth_common.c)
|
||||
target_link_libraries(GSSAPIAuth maxscale-common ${GSSAPI_LIBS} ${SQLITE_LIBRARIES} MySQLCommon)
|
||||
set_target_properties(GSSAPIAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(GSSAPIAuth core)
|
||||
add_library(gssapiauth SHARED gssapi_auth.c ../gssapi_auth_common.c)
|
||||
target_link_libraries(gssapiauth maxscale-common ${GSSAPI_LIBS} ${SQLITE_LIBRARIES} mysqlcommon)
|
||||
set_target_properties(gssapiauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(gssapiauth core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(GSSAPIBackendAuth SHARED gssapi_backend_auth.c ../gssapi_auth_common.c)
|
||||
target_link_libraries(GSSAPIBackendAuth maxscale-common ${GSSAPI_LIBS} MySQLCommon)
|
||||
set_target_properties(GSSAPIBackendAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(GSSAPIBackendAuth core)
|
||||
add_library(gssapibackendauth SHARED gssapi_backend_auth.c ../gssapi_auth_common.c)
|
||||
target_link_libraries(gssapibackendauth maxscale-common ${GSSAPI_LIBS} mysqlcommon)
|
||||
set_target_properties(gssapibackendauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(gssapibackendauth core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(HTTPAuth SHARED http_auth.c)
|
||||
target_link_libraries(HTTPAuth maxscale-common)
|
||||
set_target_properties(HTTPAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(HTTPAuth core)
|
||||
add_library(httpauth SHARED http_auth.c)
|
||||
target_link_libraries(httpauth maxscale-common)
|
||||
set_target_properties(httpauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(httpauth core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(MaxAdminAuth SHARED max_admin_auth.c)
|
||||
target_link_libraries(MaxAdminAuth maxscale-common)
|
||||
set_target_properties(MaxAdminAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(MaxAdminAuth core)
|
||||
add_library(maxadminauth SHARED max_admin_auth.c)
|
||||
target_link_libraries(maxadminauth maxscale-common)
|
||||
set_target_properties(maxadminauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(maxadminauth core)
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
if(SQLITE_VERSION VERSION_LESS 3.3)
|
||||
message(FATAL_ERROR "SQLite version 3.3 or higher is required")
|
||||
else()
|
||||
add_library(MySQLAuth SHARED mysql_auth.c dbusers.c)
|
||||
target_link_libraries(MySQLAuth maxscale-common MySQLCommon sqlite3)
|
||||
set_target_properties(MySQLAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(MySQLAuth core)
|
||||
add_library(mysqlauth SHARED mysql_auth.c dbusers.c)
|
||||
target_link_libraries(mysqlauth maxscale-common mysqlcommon sqlite3)
|
||||
set_target_properties(mysqlauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(mysqlauth core)
|
||||
endif()
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(MySQLBackendAuth SHARED mysql_backend_auth.c)
|
||||
target_link_libraries(MySQLBackendAuth maxscale-common MySQLCommon)
|
||||
set_target_properties(MySQLBackendAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(MySQLBackendAuth core)
|
||||
add_library(mysqlbackendauth SHARED mysql_backend_auth.c)
|
||||
target_link_libraries(mysqlbackendauth maxscale-common mysqlcommon)
|
||||
set_target_properties(mysqlbackendauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(mysqlbackendauth core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(NullAuthAllow SHARED null_auth_allow.c)
|
||||
target_link_libraries(NullAuthAllow maxscale-common MySQLCommon)
|
||||
set_target_properties(NullAuthAllow PROPERTIES VERSION "1.0.0")
|
||||
install_module(NullAuthAllow core)
|
||||
add_library(nullauthallow SHARED null_auth_allow.c)
|
||||
target_link_libraries(nullauthallow maxscale-common mysqlcommon)
|
||||
set_target_properties(nullauthallow PROPERTIES VERSION "1.0.0")
|
||||
install_module(nullauthallow core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(NullAuthDeny SHARED null_auth_deny.c)
|
||||
target_link_libraries(NullAuthDeny maxscale-common)
|
||||
set_target_properties(NullAuthDeny PROPERTIES VERSION "1.0.0")
|
||||
install_module(NullAuthDeny core)
|
||||
add_library(nullauthdeny SHARED null_auth_deny.c)
|
||||
target_link_libraries(nullauthdeny maxscale-common)
|
||||
set_target_properties(nullauthdeny PROPERTIES VERSION "1.0.0")
|
||||
install_module(nullauthdeny core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(PAMAuth SHARED pam_auth.cc ../pam_auth_common.cc pam_client_session.cc pam_instance.cc)
|
||||
target_link_libraries(PAMAuth maxscale-common ${PAM_LIBRARIES} ${SQLITE_LIBRARIES} MySQLCommon)
|
||||
set_target_properties(PAMAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(PAMAuth core)
|
||||
add_library(pamauth SHARED pam_auth.cc ../pam_auth_common.cc pam_client_session.cc pam_instance.cc)
|
||||
target_link_libraries(pamauth maxscale-common ${PAM_LIBRARIES} ${SQLITE_LIBRARIES} mysqlcommon)
|
||||
set_target_properties(pamauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(pamauth core)
|
||||
|
||||
@ -203,9 +203,9 @@ PamClientSession:: ~PamClientSession()
|
||||
|
||||
PamClientSession* PamClientSession::create(const PamInstance& inst)
|
||||
{
|
||||
int db_flags = SQLITE_OPEN_READONLY | SQLITE_OPEN_SHAREDCACHE;
|
||||
// This handle is only used from one thread, can define no_mutex.
|
||||
sqlite3* dbhandle = NULL;
|
||||
// This handle is only used from one thread
|
||||
int db_flags = SQLITE_OPEN_READONLY | SQLITE_OPEN_SHAREDCACHE | SQLITE_OPEN_NOMUTEX;
|
||||
if (sqlite3_open_v2(inst.m_dbname.c_str(), &dbhandle, db_flags, NULL) == SQLITE_OK)
|
||||
{
|
||||
sqlite3_busy_timeout(dbhandle, 1000);
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(PAMBackendAuth SHARED pam_backend_auth.cc ../pam_auth_common.cc pam_backend_session.cc)
|
||||
target_link_libraries(PAMBackendAuth maxscale-common MySQLCommon ${SQLITE_LIBRARIES})
|
||||
set_target_properties(PAMBackendAuth PROPERTIES VERSION "1.0.0")
|
||||
install_module(PAMBackendAuth core)
|
||||
add_library(pambackendauth SHARED pam_backend_auth.cc ../pam_auth_common.cc pam_backend_session.cc)
|
||||
target_link_libraries(pambackendauth maxscale-common mysqlcommon ${SQLITE_LIBRARIES})
|
||||
set_target_properties(pambackendauth PROPERTIES VERSION "1.0.0")
|
||||
install_module(pambackendauth core)
|
||||
|
||||
2
server/modules/filter/cache/CMakeLists.txt
vendored
2
server/modules/filter/cache/CMakeLists.txt
vendored
@ -17,7 +17,7 @@ if (JANSSON_FOUND)
|
||||
storagefactory.cc
|
||||
storagereal.cc
|
||||
)
|
||||
target_link_libraries(cache maxscale-common ${JANSSON_LIBRARIES} MySQLCommon)
|
||||
target_link_libraries(cache maxscale-common ${JANSSON_LIBRARIES} mysqlcommon)
|
||||
set_target_properties(cache PROPERTIES VERSION "1.0.0")
|
||||
set_target_properties(cache PROPERTIES LINK_FLAGS -Wl,-z,defs)
|
||||
install_module(cache core)
|
||||
|
||||
@ -12,13 +12,13 @@ if(BISON_FOUND AND FLEX_FOUND)
|
||||
add_dependencies(dbfwfilter-core pcre2 connector-c)
|
||||
|
||||
add_library(dbfwfilter SHARED dbfwfilter.cc)
|
||||
target_link_libraries(dbfwfilter maxscale-common MySQLCommon dbfwfilter-core)
|
||||
target_link_libraries(dbfwfilter maxscale-common mysqlcommon dbfwfilter-core)
|
||||
set_target_properties(dbfwfilter PROPERTIES VERSION "1.0.0")
|
||||
install_module(dbfwfilter core)
|
||||
|
||||
# The offline rule check utility
|
||||
add_executable(dbfwchk dbfw_rule_check.cc)
|
||||
target_link_libraries(dbfwchk maxscale-common MySQLCommon dbfwfilter-core)
|
||||
target_link_libraries(dbfwchk maxscale-common mysqlcommon dbfwfilter-core)
|
||||
install_executable(dbfwchk core)
|
||||
|
||||
if(BUILD_TESTS)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(insertstream SHARED insertstream.c)
|
||||
target_link_libraries(insertstream maxscale-common MySQLCommon)
|
||||
target_link_libraries(insertstream maxscale-common mysqlcommon)
|
||||
set_target_properties(insertstream PROPERTIES VERSION "1.0.0")
|
||||
install_module(insertstream core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(tee SHARED tee.cc teesession.cc)
|
||||
target_link_libraries(tee maxscale-common MySQLCommon)
|
||||
target_link_libraries(tee maxscale-common mysqlcommon)
|
||||
set_target_properties(tee PROPERTIES VERSION "1.0.0")
|
||||
install_module(tee core)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_library(CDC SHARED cdc.c)
|
||||
target_link_libraries(CDC maxscale-common)
|
||||
set_target_properties(CDC PROPERTIES VERSION "1.0.1")
|
||||
install_module(CDC core)
|
||||
add_library(cdc SHARED cdc.c)
|
||||
target_link_libraries(cdc maxscale-common)
|
||||
set_target_properties(cdc PROPERTIES VERSION "1.0.1")
|
||||
install_module(cdc core)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
add_library(MySQLCommon SHARED mysql_common.cc mariadb_client.cc)
|
||||
target_link_libraries(MySQLCommon maxscale-common)
|
||||
set_target_properties(MySQLCommon PROPERTIES VERSION "2.0.0")
|
||||
install_module(MySQLCommon core)
|
||||
add_library(mysqlcommon SHARED mysql_common.cc mariadb_client.cc)
|
||||
target_link_libraries(mysqlcommon maxscale-common)
|
||||
set_target_properties(mysqlcommon PROPERTIES VERSION "2.0.0")
|
||||
install_module(mysqlcommon core)
|
||||
|
||||
add_subdirectory(MySQLBackend)
|
||||
add_subdirectory(MySQLClient)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
add_library(MySQLBackend SHARED mysql_backend.c)
|
||||
add_library(mysqlbackend SHARED mysql_backend.c)
|
||||
# TODO: Refactor MySQLBackend so that COM_CHANGE_USER processing is
|
||||
# transparent to the protocol module. After this change, we don't need to
|
||||
# link against MySQLAuth.
|
||||
target_link_libraries(MySQLBackend maxscale-common MySQLCommon MySQLAuth)
|
||||
set_target_properties(MySQLBackend PROPERTIES VERSION "2.0.0")
|
||||
install_module(MySQLBackend core)
|
||||
target_link_libraries(mysqlbackend maxscale-common mysqlcommon mysqlauth)
|
||||
set_target_properties(mysqlbackend PROPERTIES VERSION "2.0.0")
|
||||
install_module(mysqlbackend core)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
add_library(MySQLClient SHARED mysql_client.cc)
|
||||
target_link_libraries(MySQLClient maxscale-common MySQLCommon)
|
||||
set_target_properties(MySQLClient PROPERTIES VERSION "1.0.0")
|
||||
install_module(MySQLClient core)
|
||||
add_library(mysqlclient SHARED mysql_client.cc)
|
||||
target_link_libraries(mysqlclient maxscale-common mysqlcommon)
|
||||
set_target_properties(mysqlclient PROPERTIES VERSION "1.0.0")
|
||||
install_module(mysqlclient core)
|
||||
|
||||
if(BUILD_TESTS)
|
||||
add_subdirectory(test)
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
add_executable(test_parse_kill test_parse_kill.cc)
|
||||
target_link_libraries(test_parse_kill maxscale-common MySQLCommon)
|
||||
target_link_libraries(test_parse_kill maxscale-common mysqlcommon)
|
||||
add_test(test_parse_kill test_parse_kill)
|
||||
|
||||
|
||||
@ -7,6 +7,6 @@ rwsplit_select_backends.cc
|
||||
rwsplit_session_cmd.cc
|
||||
rwsplit_tmp_table_multi.cc
|
||||
rwsplit_ps.cc)
|
||||
target_link_libraries(readwritesplit maxscale-common MySQLCommon)
|
||||
target_link_libraries(readwritesplit maxscale-common mysqlcommon)
|
||||
set_target_properties(readwritesplit PROPERTIES VERSION "1.0.2")
|
||||
install_module(readwritesplit core)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
add_library(schemarouter SHARED schemarouter.cc schemarouterinstance.cc schemaroutersession.cc shard_map.cc)
|
||||
target_link_libraries(schemarouter maxscale-common MySQLCommon)
|
||||
target_link_libraries(schemarouter maxscale-common mysqlcommon)
|
||||
add_dependencies(schemarouter pcre2)
|
||||
set_target_properties(schemarouter PROPERTIES VERSION "1.0.0")
|
||||
install_module(schemarouter core)
|
||||
|
||||
Reference in New Issue
Block a user