~ubuntu-branches/ubuntu/saucy/slurm-llnl/saucy

« back to all changes in this revision

Viewing changes to src/database/mysql_common.c

  • Committer: Bazaar Package Importer
  • Author(s): Gennaro Oliva
  • Date: 2008-12-03 11:56:28 UTC
  • mfrom: (1.1.8 upstream) (3.1.4 sid)
  • Revision ID: james.westby@ubuntu.com-20081203115628-93t417da6wkazmo5
Tags: 1.3.11-1
New upstream release 

Show diffs side-by-side

added added

removed removed

Lines of Context:
185
185
{
186
186
        char create_line[50];
187
187
        MYSQL *mysql_db = NULL;
 
188
        int rc = SLURM_ERROR;
188
189
 
189
 
#ifdef MYSQL_NOT_THREAD_SAFE
190
 
        slurm_mutex_lock(&mysql_lock);
191
 
#endif
192
 
        if(!(mysql_db = mysql_init(mysql_db)))
193
 
                fatal("mysql_init failed: %s", mysql_error(mysql_db));
194
 
        
195
 
        if(mysql_real_connect(mysql_db, db_info->host, db_info->user,
196
 
                              db_info->pass, NULL, db_info->port, NULL, 0)) {
197
 
                snprintf(create_line, sizeof(create_line),
198
 
                         "create database %s", db_name);
199
 
                if(mysql_query(mysql_db, create_line)) {
200
 
                        fatal("mysql_real_query failed: %d %s\n%s",
 
190
        while(rc == SLURM_ERROR) {
 
191
                rc = SLURM_SUCCESS;
 
192
#ifdef MYSQL_NOT_THREAD_SAFE
 
193
                slurm_mutex_lock(&mysql_lock);
 
194
#endif
 
195
                if(!(mysql_db = mysql_init(mysql_db)))
 
196
                        fatal("mysql_init failed: %s", mysql_error(mysql_db));
 
197
                
 
198
                if(mysql_real_connect(mysql_db, 
 
199
                                      db_info->host, db_info->user,
 
200
                                      db_info->pass, NULL, 
 
201
                                      db_info->port, NULL, 0)) {
 
202
                        snprintf(create_line, sizeof(create_line),
 
203
                                 "create database %s", db_name);
 
204
                        if(mysql_query(mysql_db, create_line)) {
 
205
                                fatal("mysql_real_query failed: %d %s\n%s",
 
206
                                      mysql_errno(mysql_db),
 
207
                                      mysql_error(mysql_db), create_line);
 
208
                        }
 
209
                        mysql_close_db_connection(&mysql_db);
 
210
                } else {
 
211
                        info("Connection failed to host = %s "
 
212
                             "user = %s pass = %s port = %u",
 
213
                             db_info->host, db_info->user,
 
214
                             db_info->pass, db_info->port);
 
215
#ifdef MYSQL_NOT_THREAD_SAFE
 
216
                        slurm_mutex_unlock(&mysql_lock);
 
217
#endif
 
218
                        error("mysql_real_connect failed: %d %s\n",
201
219
                              mysql_errno(mysql_db),
202
 
                              mysql_error(mysql_db), create_line);
 
220
                              mysql_error(mysql_db));
 
221
                        rc = SLURM_ERROR;
203
222
                }
204
 
                mysql_close_db_connection(&mysql_db);
205
 
        } else {
206
 
                info("Connection failed to host = %s "
207
 
                     "user = %s pass = %s port = %u",
208
 
                     db_info->host, db_info->user,
209
 
                     db_info->pass, db_info->port);
210
223
#ifdef MYSQL_NOT_THREAD_SAFE
211
224
                slurm_mutex_unlock(&mysql_lock);
212
225
#endif
213
 
                fatal("mysql_real_connect failed: %d %s\n",
214
 
                      mysql_errno(mysql_db),
215
 
                      mysql_error(mysql_db));
 
226
                if(rc == SLURM_ERROR)
 
227
                        sleep(3);
216
228
        }
217
 
#ifdef MYSQL_NOT_THREAD_SAFE
218
 
        slurm_mutex_unlock(&mysql_lock);
219
 
#endif
220
 
        return SLURM_SUCCESS;
 
229
        return rc;
221
230
}
222
231
 
223
232
extern int *destroy_mysql_db_info(mysql_db_info_t *db_info)
255
264
                                if(mysql_errno(*mysql_db) == ER_BAD_DB_ERROR) {
256
265
                                        debug("Database %s not created.  "
257
266
                                              "Creating", db_name);
258
 
                                        _create_db(db_name, db_info);
 
267
                                        rc = _create_db(db_name, db_info);
259
268
                                } else {
260
 
                                        fatal("mysql_real_connect failed: "
 
269
                                        error("mysql_real_connect failed: "
261
270
                                              "%d %s",
262
271
                                              mysql_errno(*mysql_db),
263
272
                                              mysql_error(*mysql_db));
 
273
                                        rc = SLURM_ERROR;
 
274
                                        break;
264
275
                                }
265
276
                        } else {
266
277
                                storage_init = true;