static PyObject *_mysql_thread_safe( PyObject *self, PyObject *unused) { check_server_init(NULL); return PyInt_FromLong((long)mysql_thread_safe()); }
void mysql_poolinit(void) { pthread_t pthread[THREADS]; db_config dbc; int i; strlcpy(dbc.host, dbhost, strlen(dbhost) + 1); strlcpy(dbc.user, dbuser, strlen(dbuser) + 1); strlcpy(dbc.pass, dbpass, strlen(dbpass) + 1); strlcpy(dbc.name, dbname, strlen(dbname) + 1); dbc.port = 0; dbc.socket = NULL; if (!mysql_thread_safe()) { vbprintf("Using own threaded pool with %d mysql threads\n", THREADS); } else { vbprintf("Using threaded mysql connection pool of %d threads\n", THREADS); } vbprintf("DB Connections: %d, Threads: %d\n", CONPOOL, THREADS); //Pre - init for (i = 0; i < CONPOOL; i++) { dbm[i].db = mysql_conn(dbm[i].db, &dbc); pthread_mutex_init(&dbm[i].lock, NULL); } vbprintf("MySQL init done.\n"); }
/* NOTE: Insure that mysql_conn->lock is set on function entry */ static int _create_db(char *db_name, mysql_db_info_t *db_info) { char create_line[50]; MYSQL *mysql_db = NULL; int rc = SLURM_ERROR; MYSQL *db_ptr = NULL; char *db_host = NULL; while (rc == SLURM_ERROR) { rc = SLURM_SUCCESS; if (!(mysql_db = mysql_init(mysql_db))) fatal("mysql_init failed: %s", mysql_error(mysql_db)); db_host = db_info->host; db_ptr = mysql_real_connect(mysql_db, db_host, db_info->user, db_info->pass, NULL, db_info->port, NULL, 0); if (!db_ptr && db_info->backup) { info("Connection failed to host = %s " "user = %s port = %u", db_host, db_info->user, db_info->port); db_host = db_info->backup; db_ptr = mysql_real_connect(mysql_db, db_host, db_info->user, db_info->pass, NULL, db_info->port, NULL, 0); } if (db_ptr) { snprintf(create_line, sizeof(create_line), "create database %s", db_name); if (mysql_query(mysql_db, create_line)) { fatal("mysql_real_query failed: %d %s\n%s", mysql_errno(mysql_db), mysql_error(mysql_db), create_line); } if (mysql_thread_safe()) mysql_thread_end(); mysql_close(mysql_db); } else { info("Connection failed to host = %s " "user = %s port = %u", db_host, db_info->user, db_info->port); error("mysql_real_connect failed: %d %s", mysql_errno(mysql_db), mysql_error(mysql_db)); rc = SLURM_ERROR; } if (rc == SLURM_ERROR) sleep(3); } return rc; }
DatabaseWorkerPool<T>::DatabaseWorkerPool() : _queue(new ProducerConsumerQueue<SQLOperation*>()), _async_threads(0), _synch_threads(0) { WPFatal(mysql_thread_safe(), "Used MySQL library isn't thread-safe."); WPFatal(mysql_get_client_version() >= MIN_MYSQL_CLIENT_VERSION, "TrinityCore does not support MySQL versions below 5.1"); WPFatal(mysql_get_client_version() == MYSQL_VERSION_ID, "Used MySQL library version (%s) does not match the version used to compile TrinityCore (%s).", mysql_get_client_info(), MYSQL_SERVER_VERSION); }
DatabaseWorkerPool::DatabaseWorkerPool() : m_queue(new ACE_Activation_Queue(new ACE_Message_Queue<ACE_MT_SYNCH>)), m_connections(0) { m_infoString = ""; mysql_library_init(-1, NULL, NULL); WPFatal (mysql_thread_safe(), "Used MySQL library isn't thread-safe."); }
Thread () { // This whole implementation depends on // multiple threads hitting MySQL at the // same time, so if it's not thread safe // just bail out at once. if (!mysql_thread_safe()) throw std::runtime_error(not_thread_safe); if (mysql_thread_init()!=0) throw std::runtime_error(thread_init_failed); }
extern int mysql_db_close_db_connection(mysql_conn_t *mysql_conn) { slurm_mutex_lock(&mysql_conn->lock); if (mysql_conn && mysql_conn->db_conn) { if (mysql_thread_safe()) mysql_thread_end(); mysql_close(mysql_conn->db_conn); mysql_conn->db_conn = NULL; } slurm_mutex_unlock(&mysql_conn->lock); return SLURM_SUCCESS; }
DatabaseMysql::DatabaseMysql() { // before first connection if (db_count++ == 0) { // Mysql Library Init mysql_library_init(-1, nullptr, nullptr); if (!mysql_thread_safe()) poco_bugcheck_msg("FATAL ERROR: Used MySQL library isn't thread-safe."); } }
int sqlthreadinit(void) { if(!mysql_thread_safe()) { printf("mysql not thread safe\n"); return -1; } if(mysql_thread_init()) { printf("sqlthreadinit: out of memory\n"); return -1; } return 0; }
DatabaseMysql::DatabaseMysql() : Database(), mMysql(0) { // before first connection if (db_count++ == 0) { // Mysql Library Init mysql_library_init(-1, NULL, NULL); if (!mysql_thread_safe()) { sLog.outError("FATAL ERROR: Used MySQL library isn't thread-safe."); exit(1); } } }
DatabaseMysql::DatabaseMysql() { // before first connection if (db_count++ == 0) { // Mysql Library Init mysql_library_init(-1, nullptr, nullptr); if (!mysql_thread_safe()) { sLog.outError("FATAL ERROR: Used MySQL library isn't thread-safe."); Log::WaitBeforeContinueIfNeed(); exit(1); } } }
//------------------------------------------------------------------------------------- bool DBUtil::initThread(const std::string& dbinterfaceName) { DBInterfaceInfo* pDBInfo = g_kbeSrvConfig.dbInterface(dbinterfaceName); if (strcmp(pDBInfo->db_type, "mysql") == 0) { if (!mysql_thread_safe()) { KBE_ASSERT(false); } else { mysql_thread_init(); } } return true; }
//------------------------------------------------------------------------------------- bool DBUtil::initThread() { ENGINE_COMPONENT_INFO& dbcfg = g_kbeSrvConfig.getDBMgr(); if(strcmp(dbcfg.db_type, "mysql") == 0) { if (!mysql_thread_safe()) { KBE_ASSERT(false); } else { mysql_thread_init(); } } return true; }
MySqlThreadResPool::MySqlThreadResPool( FvWorkerThreadManager& threadMgr, FvNetNub& nub, int numConnections, int maxSpaceDataSize, const FvDBConfigConnection& connInfo, const FvEntityDefs& entityDefs, bool shouldLockDB ) : m_kThreadPool( threadMgr, numConnections - 1 ), m_kThreadDataPool(), m_kFreeThreadData(), m_kMainThreadData( connInfo, maxSpaceDataSize, entityDefs ), m_kDBLock( m_kMainThreadData.m_kConnection, connInfo.GenerateLockName(), shouldLockDB ), m_kNub( nub ), m_uiOPCount( 0 ), m_uiOPDurationTotal( 0 ), m_uiResetTimeStamp( Timestamp() ) { int numThreads = m_kThreadPool.GetNumFreeThreads(); FV_ASSERT( (numThreads == 0) || ((numThreads > 0) && mysql_thread_safe()) ); struct InitMySqlTask : public FvWorkerThread::ITask { virtual void Run() { mysql_thread_init(); } virtual void OnRunComplete() {} } initMySqlTask; while ( m_kThreadPool.DoTask( initMySqlTask ) ) {} m_kThreadPool.WaitForAllTasks(); m_kThreadDataPool.container.reserve( numThreads ); for ( int i = 0; i < numThreads; ++i ) { m_kThreadDataPool.container.push_back( new MySqlThreadData( connInfo, maxSpaceDataSize, entityDefs ) ); } m_kFreeThreadData = m_kThreadDataPool.container; m_kKeepAliveTimerID = m_kNub.RegisterTimer( 1800000000, this ); }
int main(int argc, const char *argv[]) { MYSQL *dbc=NULL; long i=0,err=0; srand48((unsigned long)1); time_t timestart=0,timenow=0; unsigned int counter=0; counter=0; char shortquery[1024]={0}; char *longquery=NULL; longquery=NULL; char *c=NULL; /* my_init(); */ if (!(dbc = mysql_init(NULL))) { printf("mysql_init\n"); dbc=NULL; goto threadexit; } else { if (!mysql_real_connect(dbc,host,username,password,database,port, NULL, CLIENT_FOUND_ROWS|CLIENT_MULTI_STATEMENTS|CLIENT_MULTI_RESULTS)) { printf("mysql_real_connect failed: %s (%d)", mysql_error(dbc),mysql_errno(dbc)); dbc=NULL; goto threadexit; } } printf("running initializations..\n"); client_version=mysql_get_client_version(); server_version=mysql_get_server_version(dbc); printf("client version=%lu\n",client_version); printf("server version=%lu\n",server_version); if((client_version/10000) < (server_version/10000)) { printf("incompatible client and server version! please upgrade client library!\n"); goto threadexit; } if (!mysql_thread_safe()) { printf("non-threadsafe client detected! please rebuild and link with libmysql_r!\n"); } c=shortquery; c+=sprintf(c,"%s","drop table if exists t1"); db_query(dbc,shortquery,1); c=shortquery; c+=sprintf(c,"%s","create table t1(id int)"); db_query(dbc,shortquery,1); mysql_close(dbc); printf("about to spawn %d threads\n",NUMTHREADS); for (i=0;i<NUMTHREADS;i++) { err=pthread_create(&pthreads[i], NULL, worker_thread, (void *)i); if(err!=0) { printf("error spawning thread %lu, pthread_create returned %lu\n",(unsigned long)i,(unsigned long)err); } printf("."); } printf("\n"); printf("completed spawning new database worker threads\n"); printf("testcase is now running, so watch for server crash\n"); timestart=time(NULL); timenow=time(NULL); for(i=0;(timenow-timestart) < TESTTIME;timenow=time(NULL)) { usleep(1000*1000); printf("queries: %09lu\n",num_queries); } threaddone=1; printf("waiting for worker threads to finish...\n"); for (i=0;i<NUMTHREADS;i++) { pthread_join(pthreads[i], NULL); } exit(0); threadexit: exit(-1); }
bool libraryThreadSafe() { return mysql_thread_safe() == 1; }
bool BackupRestore::init() { if (!m_restore && !m_restore_meta) return true; m_ndb = new Ndb(); if (m_ndb == NULL) return false; // Turn off table name completion m_ndb->useFullyQualifiedNames(false); m_ndb->init(1024); if (m_ndb->waitUntilReady(30) != 0) { ndbout << "Failed to connect to ndb!!" << endl; return false; } ndbout << "Connected to ndb!!" << endl; #if USE_MYSQL if(use_mysql) { if ( mysql_thread_safe() == 0 ) { ndbout << "Not thread safe mysql library..." << endl; exit(-1); } ndbout << "Connecting to MySQL..." <<endl; /** * nwe param: * port * host * user */ bool returnValue = true; mysql_init(&mysql); { int portNo = 3306; if ( mysql_real_connect(&mysql, ga_host, ga_user, ga_password, ga_database, ga_port, :: ga_socket, 0) == NULL ) { ndbout_c("Connect failed: %s", mysql_error(&mysql)); returnValue = false; } mysql.reconnect= 1; ndbout << "Connected to MySQL!!!" <<endl; } /* if(returnValue){ mysql_set_server_option(&mysql, MYSQL_OPTION_MULTI_STATEMENTS_ON); } */ return returnValue; } #endif if (m_callback) { delete [] m_callback; m_callback = 0; } m_callback = new restore_callback_t[m_parallelism]; if (m_callback == 0) { ndbout << "Failed to allocate callback structs" << endl; return false; } m_free_callback = m_callback; for (int i= 0; i < m_parallelism; i++) { m_callback[i].restore = this; m_callback[i].connection = 0; m_callback[i].retries = 0; if (i > 0) m_callback[i-1].next = &(m_callback[i]); } m_callback[m_parallelism-1].next = 0; return true; }
int processDB(char *db_file,char *user,char *passwd,char *database) { MYSQL *pMySQL = NULL; sqlite3 *pSqlite = NULL; tableName tableNameArray[60]; threadFunctionParameter tfp; int num_table = 0; int i = 0; int ret = 0; memset(tableNameArray,0,sizeof(tableNameArray)); memset(&tfp,0,sizeof(threadFunctionParameter)); if(strlen(db_file) <= 0 || strlen(user) <= 0 || strlen(passwd) <= 0 || strlen(database) <= 0) { printf("function processDB parameter error.\n"); ret = -1; goto END; } printf("version = %s\n", sqlite3_libversion()); printf("sqlite3_threadsafe = %d \n", sqlite3_threadsafe()); printf("mysql_thread_safe() = %d\n",mysql_thread_safe()); pMySQL = mysql_init(NULL); if (pMySQL == NULL) { printf("call mysql_init error.error = %s\n",mysql_error(pMySQL)); ret = -1; goto END; } if (!mysql_real_connect(pMySQL,"localhost",user,passwd,database,0,NULL,0)) { printf("call mysql_real_connect error.error = %s\n",mysql_error(pMySQL)); ret = -2; goto END; } mysql_set_character_set(pMySQL, "utf8"); ret = sqlite3_open(db_file, &pSqlite); if(ret != SQLITE_OK) { printf("call sqlite3_open error.error = %s\n",sqlite3_errmsg(pSqlite)); ret = -3; goto END; } ret = getListTables(pMySQL,tableNameArray); if(ret < 0) { printf("call getListTables error.\n"); ret = -4; goto END; } num_table = ret; tfp.first = pMySQL; tfp.second = pSqlite; for(i = 0; i < num_table; i++) { memcpy(&tfp.table,&(tableNameArray[i]),sizeof(tableName)); ret = processOneTable(&tfp); if(ret < 0) { printf("call getListTables error.\n"); ret = -4; goto END; } } END: if(pSqlite != NULL) { sqlite3_close(pSqlite); pSqlite = NULL; } if(pMySQL != NULL) { mysql_close(pMySQL); pMySQL = NULL; } return ret; }
int main(int argc, char *argv[]) { struct IdDocIDmapFormat *IdDocIDmap; time_t now = time(NULL); char query[512]; char url[201]; //selecter fra db char mysql_query [2048]; static MYSQL demo_db; int i, pages; unsigned int DocID; int total; MYSQL_RES *mysqlres; /* To be used to fetch information into */ MYSQL_ROW mysqlrow; if (argc < 3) { // printf("Dette programet slår opp ekte DocID for pi. \n\n\tUsage: ./PiToWWWDocID UrlToDocID_folder sql_table"); printf("Dette programet slår opp ekte DocID for pi. \n\n\tUsage: ./PiToWWWDocID UrlToDocID_db sql_table\n"); printf("\nMerk: Navn på index-fil er det samme som UrlToDocID_db + '.index'\n"); exit(0); } char *UrlToDocIDdb = argv[1]; char *table = argv[2]; #ifdef WITH_THREAD my_init(); if (mysql_thread_safe() == 0) { printf("The MYSQL client is'en compiled at thread safe! This will broboble crash.\n"); } #endif mysql_init(&demo_db); if(!mysql_real_connect(&demo_db, "web1.jayde.boitho.com", "boitho", "G7J7v5L5Y7", "boithoweb", 3306, NULL, 0)){ printf(mysql_error(&demo_db)); exit(1); } char db_index[strlen(UrlToDocIDdb)+7]; sprintf(db_index, "%s.index", UrlToDocIDdb); urldocid_data *data = urldocid_search_init(db_index, UrlToDocIDdb); sprintf(mysql_query, "select id,url from %s WHERE WWWDocID is NULL OR WWWDocID='0' limit 10",table); total = 0; while (1) { if(mysql_real_query(&demo_db, mysql_query, strlen(mysql_query))){ /* Make query */ printf(mysql_error(&demo_db)); //return(1); pthread_exit((void *)1); /* exit with status */ } mysqlres=mysql_store_result(&demo_db); /* Download result from server */ _configdatanr = (int)mysql_num_rows(mysqlres); if (_configdatanr == 0) { break; } #ifdef DEBUG printf("nrofrows %i\n",_configdatanr); #endif if ((IdDocIDmap = malloc(sizeof(struct IdDocIDmapFormat) * _configdatanr)) == NULL) { perror("malloc IdDocIDmap"); exit(1); } pages=0; while ((mysqlrow=mysql_fetch_row(mysqlres)) != NULL) { /* Get a row from the results */ strscpy(url,mysqlrow[1],sizeof(url)); url_normalization(url,sizeof(url)); #ifdef DEBUG printf("url \"%s\"\n",url); #endif if (!getDocIDFromUrl(data, url, &DocID)) { printf("Unable to find docId.\n\tMain \"%s\"\n\tIndex \"%s\"\n",UrlToDocIDdb, db_index); //DocID = 0; DocID = PIStartDOCID + atou(mysqlrow[0]); } else { //look up rank for docid } IdDocIDmap[pages].id = atou(mysqlrow[0]); IdDocIDmap[pages].DocID = DocID; #ifdef DEBUG printf("\tid %s, WWWDocID %u,url \"%s\"\n",mysqlrow[0],DocID,url); #endif if ((total % 1000) == 0) { printf("total %i\n",total); } ++pages; ++total; } for (i=0;i<pages;i++) { #ifdef DEBUG printf("id %u => DocID %u\n",IdDocIDmap[i].id,IdDocIDmap[i].DocID); #endif snprintf(query,sizeof(query),"update LOW_PRIORITY %s set WWWDocID=%u where id=%u",table,IdDocIDmap[i].DocID,IdDocIDmap[i].id); #ifdef DEBUG printf("query \"%s\"\n",query); #endif mysql_real_query(&demo_db, query, strlen(query)); } free(IdDocIDmap); mysql_free_result(mysqlres); } mysql_close(&demo_db); urldocid_search_exit(data); printf("did lookup %i\n",total); }
bool MyDriver::IsThreadSafe() { return (mysql_thread_safe() != 0); }
static PyObject* wsql_thread_safe(PyObject *self) { CHECK_SERVER(NULL); return PyLong_FromLong((long)mysql_thread_safe()); }
int main (int argc, char *argv[]) { int sockfd, newsockfd; socklen_t clilen; struct sockaddr_in cli_addr, serv_addr; printf("struct SiderFormat %i\n",sizeof(struct SiderFormat)); #ifdef WITH_THREAD pthread_t chld_thr; #endif int searchport = TCP_PORT; extern char *optarg; extern int optind, opterr, optopt; char c; while ((c=getopt(argc,argv,"p:"))!=-1) { switch (c) { case 'p': searchport = atoi(optarg); printf("will use port %i\n",searchport); break; default: exit(1); } } --optind; #ifdef WITH_THREAD printf("starting whth thread\n"); my_init(); if (mysql_thread_safe() == 0) { printf("The MYSQL client is'en compiled at thread safe! This will broboble crash.\n"); } #else printf("starting single thread version\n"); #endif //setter opp socket if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) fprintf(stderr,"server: can't open stream socket\n"), exit(0); memset((char *) &serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(searchport); //seter at sokket kan rebrukes int yes=1; if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) == -1) { perror("setsockopt"); exit(1); } if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) fprintf(stderr,"server: can't bind local address\n"), exit(0); /* set the level of thread concurrency we desire */ //thr_setconcurrency(5); listen(sockfd, 5); for(;;) { clilen = sizeof(cli_addr); newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if(newsockfd < 0) { //fprintf(stderr,"server: accept error\n"), exit(0); fprintf(stderr,"server: accept error\n"); } else { #ifdef WITH_THREAD /* create a new thread to process the incomming request */ //thr_create(NULL, 0, do_chld, (void *) newsockfd, THR_DETACHED, &chld_thr); printf("creating thread\n"); pthread_create(&chld_thr, NULL, issueAdd, (void *) newsockfd); /* the server is now free to accept another socket request */ #else //do_chld((void *) newsockfd); issueAdd((void *) newsockfd); #endif } } return(0); }