Skip to content

Commit

Permalink
Added some mutex locks to the save function
Browse files Browse the repository at this point in the history
  • Loading branch information
toddtreece committed Oct 26, 2011
1 parent 75b9475 commit 9272bcd
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 3 deletions.
1 change: 1 addition & 0 deletions common.h
Expand Up @@ -20,6 +20,7 @@ typedef long long longlong;
#define VERSION_STRING_LENGTH 3 #define VERSION_STRING_LENGTH 3
#define ERRMSG_SIZE 1000 #define ERRMSG_SIZE 1000


extern pthread_mutex_t mongodb_mutex;
extern mongo mongodb_connection[1]; extern mongo mongodb_connection[1];


#endif /* MYSQLUDF_COMMON_H */ #endif /* MYSQLUDF_COMMON_H */
13 changes: 11 additions & 2 deletions io.c
Expand Up @@ -20,13 +20,19 @@ my_bool mongodb_save_init(UDF_INIT *initid, UDF_ARGS *args, char *message) {
} }


long long mongodb_save(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error) { long long mongodb_save(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error) {


pthread_mutex_lock(&mongodb_mutex);


if(!mongodb_connection->connected) { if(!mongodb_connection->connected) {

// Attempt to reconnect // Attempt to reconnect
mongo_reconnect(mongodb_connection); mongo_reconnect(mongodb_connection);


} }

pthread_mutex_unlock(&mongodb_mutex);



bson b[1]; bson b[1];


Expand Down Expand Up @@ -63,15 +69,18 @@ long long mongodb_save(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned


bson_finish(b); bson_finish(b);


pthread_mutex_lock(&mongodb_mutex);

if(mongo_insert(mongodb_connection, args->args[0], b) == MONGO_ERROR && mongodb_connection->err == MONGO_IO_ERROR) { if(mongo_insert(mongodb_connection, args->args[0], b) == MONGO_ERROR && mongodb_connection->err == MONGO_IO_ERROR) {


fprintf(stderr, "saving data to mongodb failed.\n"); fprintf(stderr, "saving data to mongodb failed.\n");


*error = 1; *error = 1;
return 0;


} }


pthread_mutex_unlock(&mongodb_mutex);

bson_destroy(b); bson_destroy(b);


*is_null = 1; *is_null = 1;
Expand Down
6 changes: 5 additions & 1 deletion server.c
@@ -1,6 +1,6 @@
#include "common.h" #include "common.h"


pthread_mutex_t mongodb_mutex = PTHREAD_MUTEX_INITIALIZER; pthread_mutex_t mongodb_mutex;


mongo mongodb_connection[1]; mongo mongodb_connection[1];


Expand Down Expand Up @@ -32,6 +32,8 @@ my_bool mongodb_connect_init(UDF_INIT *initid, UDF_ARGS *args, char *message) {
long long mongodb_connect(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error) { long long mongodb_connect(UDF_INIT *initid, UDF_ARGS *args, char *result, unsigned long *length, char *is_null, char *error) {


int rc; int rc;

pthread_mutex_init(&mongodb_mutex, NULL);


pthread_mutex_lock(&mongodb_mutex); pthread_mutex_lock(&mongodb_mutex);


Expand Down Expand Up @@ -96,6 +98,8 @@ long long mongodb_disconnect(UDF_INIT *initid, UDF_ARGS *args, char *result, uns


pthread_mutex_unlock(&mongodb_mutex); pthread_mutex_unlock(&mongodb_mutex);


pthread_mutex_destroy(&mongodb_mutex);

*is_null = 1; *is_null = 1;
return 0; return 0;


Expand Down

0 comments on commit 9272bcd

Please sign in to comment.