[Fedora-directory-commits] ldapserver/ldap/servers/slapd/back-ldbm archive.c, 1.15, 1.16 back-ldbm.h, 1.12, 1.13 dblayer.c, 1.26, 1.27 import.c, 1.10, 1.11 ldif2ldbm.c, 1.15, 1.16

Nathan Kinder (nkinder) fedora-directory-commits at redhat.com
Thu Apr 3 16:52:49 UTC 2008


Author: nkinder

Update of /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18174/ldap/servers/slapd/back-ldbm

Modified Files:
	archive.c back-ldbm.h dblayer.c import.c ldif2ldbm.c 
Log Message:
Resolves: 439907
Summary: Enhanced SLAPI task API and ported existing tasks to use new API.



Index: archive.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/archive.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- archive.c	4 Dec 2007 17:52:56 -0000	1.15
+++ archive.c	3 Apr 2008 16:52:47 -0000	1.16
@@ -61,7 +61,7 @@
     slapi_pblock_get( pb, SLAPI_BACKEND_INSTANCE_NAME, &backendname);
     slapi_pblock_get( pb, SLAPI_BACKEND_TASK, &task );
     slapi_pblock_get( pb, SLAPI_TASK_FLAGS, &task_flags );
-    li->li_flags = run_from_cmdline = (task_flags & TASK_RUNNING_FROM_COMMANDLINE);
+    li->li_flags = run_from_cmdline = (task_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE);
 
     if ( !rawdirectory || !*rawdirectory ) {
         LDAPDebug( LDAP_DEBUG_ANY, "archive2db: no archive name\n",
@@ -273,7 +273,7 @@
     slapi_pblock_get( pb, SLAPI_PLUGIN_PRIVATE, &li );
     slapi_pblock_get( pb, SLAPI_SEQ_VAL, &rawdirectory );
     slapi_pblock_get( pb, SLAPI_TASK_FLAGS, &task_flags );
-    li->li_flags = run_from_cmdline = (task_flags & TASK_RUNNING_FROM_COMMANDLINE);
+    li->li_flags = run_from_cmdline = (task_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE);
 
     slapi_pblock_get( pb, SLAPI_BACKEND_TASK, &task );
 


Index: back-ldbm.h
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/back-ldbm.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- back-ldbm.h	19 Oct 2007 02:09:24 -0000	1.12
+++ back-ldbm.h	3 Apr 2008 16:52:47 -0000	1.13
@@ -513,10 +513,10 @@
     int li_legacy_errcode;   /* 615428 -- in case legacy err code is expected */
 };
 
-/* li_flags could store these bits defined in ../slap.h
+/* li_flags could store these bits defined in ../slapi-plugin.h
  * task flag (pb_task_flags) *
- * #define TASK_RUNNING_AS_TASK		0x0
- * #define TASK_RUNNING_FROM_COMMANDLINE	0x1
+ *   SLAPI_TASK_RUNNING_AS_TASK
+ *   SLAPI_TASK_RUNNING_FROM_COMMANDLINE
  */
 /* allow conf w/o CONFIG_FLAG_ALLOW_RUNNING_CHANGE to be updated */
 #define LI_FORCE_MOD_CONFIG     0x10 


Index: dblayer.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/dblayer.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- dblayer.c	4 Dec 2007 00:50:19 -0000	1.26
+++ dblayer.c	3 Apr 2008 16:52:47 -0000	1.27
@@ -1954,7 +1954,7 @@
                 oflags |= DB_PRIVATE;
             }
             PR_Lock(li->li_config_mutex);
-            if ((li->li_flags & TASK_RUNNING_FROM_COMMANDLINE) &&
+            if ((li->li_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE) &&
                 (li->li_import_cache_autosize)) /* Autosizing importCache
                                                  * Need to re-eval every time
                                                  * to guarantee the memory is
@@ -5678,7 +5678,7 @@
      * dse_conf_verify may need to have db started, as well. */
     /* If no logfiles were stored, then fatal recovery isn't required */
 
-    if (li->li_flags & TASK_RUNNING_FROM_COMMANDLINE)
+    if (li->li_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE)
     {
         /* command line mode; no need to run db threads */
         dbmode |= DBLAYER_NO_DBTHREADS_MODE;
@@ -5707,7 +5707,7 @@
                 "Warning: Unable to verify the index configuration\n", 0, 0, 0);
     }
 
-    if (li->li_flags & TASK_RUNNING_FROM_COMMANDLINE) {
+    if (li->li_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE) {
         /* command line: close the database down again */
         tmp_rval = dblayer_close(li, dbmode);
         if (0 != tmp_rval) {


Index: import.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/import.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- import.c	18 Oct 2007 00:08:34 -0000	1.10
+++ import.c	3 Apr 2008 16:52:47 -0000	1.11
@@ -197,29 +197,19 @@
           buffer, 0);
 }
 
-static int import_task_destroy(Slapi_Task *task)
+static void import_task_destroy(Slapi_Task *task)
 {
-    ImportJob *job = (ImportJob *)task->task_private;
-
-    if (task->task_log) {
-        slapi_ch_free((void **)&task->task_log);
-    }
-
-    if (task->task_status) {
-        slapi_ch_free((void **)&task->task_status);
-    }
-    
+    ImportJob *job = (ImportJob *)slapi_task_get_data(task);
 
     if (job && job->task_status) {
         slapi_ch_free((void **)&job->task_status);
         job->task_status = NULL;
     }
     FREE(job);
-    task->task_private = NULL;
-    return 0;
+    slapi_task_set_data(task, NULL);
 }
 
-static int import_task_abort(Slapi_Task *task)
+static void import_task_abort(Slapi_Task *task)
 {
     ImportJob *job;
 
@@ -227,9 +217,8 @@
      * DSE lock for modify...
      */
 
-    if (task->task_state == SLAPI_TASK_FINISHED) {
+    if (slapi_task_get_state(task) == SLAPI_TASK_FINISHED) {
         /* too late */
-        return 0;
     }
 
     /*
@@ -238,14 +227,12 @@
      * because it will free the job.
      */
 
-    job = (ImportJob *)task->task_private;
+    job = (ImportJob *)slapi_task_get_data(task);
 
     import_abort_all(job, 0); 
-    while (task->task_state != SLAPI_TASK_FINISHED)
+    while (slapi_task_get_state(task) != SLAPI_TASK_FINISHED)
          DS_Sleep(PR_MillisecondsToInterval(100));
 
-
-    return 0;
 }
 
 
@@ -1042,13 +1029,8 @@
             slapi_ch_free_string(&inst_dirp);
     }
 
-    if (job->task != NULL && 0 == job->task->task_refcount) {
-        /* exit code */
-        job->task->task_exitcode = ret;
-        job->task->task_state = SLAPI_TASK_FINISHED;
-        job->task->task_progress = job->task->task_work;
-        job->task->task_private = NULL;
-        slapi_task_status_changed(job->task);
+    if ((job->task != NULL) && (0 == slapi_task_get_refcount(job->task))) {
+        slapi_task_finish(job->task, ret);
     }
 
     if (job->flags & FLAG_ONLINE) {
@@ -1093,7 +1075,7 @@
     ImportWorkerInfo *producer = NULL;
 
     if (job->task)
-        job->task->task_refcount++;
+        slapi_task_inc_refcount(job->task);
 
     PR_ASSERT(inst != NULL);
     time(&beginning);
@@ -1364,13 +1346,11 @@
     if (0 != ret) {
         import_log_notice(job, "Import failed.");
         if (job->task != NULL) {
-            job->task->task_state = SLAPI_TASK_FINISHED;
-            job->task->task_exitcode = ret;
-            slapi_task_status_changed(job->task);
+            slapi_task_finish(job->task, ret);
         }
     } else {
         if (job->task)
-            job->task->task_refcount--;
+            slapi_task_dec_refcount(job->task);
 
         import_all_done(job, ret);
     }
@@ -1471,15 +1451,17 @@
         /* add 1 to account for post-import cleanup (which can take a
          * significant amount of time)
          */
+    /* NGK - This should eventually be cleaned up to use the public
+     * task API. */
     if (0 == total_files)    /* reindexing */
             job->task->task_work = 2;
     else
             job->task->task_work = total_files + 1;
         job->task->task_progress = 0;
         job->task->task_state = SLAPI_TASK_RUNNING;
-        job->task->task_private = job;
-        job->task->destructor = import_task_destroy;
-        job->task->cancel = import_task_abort;
+        slapi_task_set_data(job->task, job);
+        slapi_task_set_destructor_fn(job->task, import_task_destroy);
+        slapi_task_set_cancel_fn(job->task, import_task_abort);
         job->flags |= FLAG_ONLINE;
 
         /* create thread for import_main, so we can return */


Index: ldif2ldbm.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/servers/slapd/back-ldbm/ldif2ldbm.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ldif2ldbm.c	13 Oct 2007 01:49:32 -0000	1.15
+++ ldif2ldbm.c	3 Apr 2008 16:52:47 -0000	1.16
@@ -568,7 +568,7 @@
     /* hopefully this will go away once import is not run standalone... */
 
     slapi_pblock_get(pb, SLAPI_TASK_FLAGS, &task_flags);
-    if (task_flags & TASK_RUNNING_FROM_COMMANDLINE) {
+    if (task_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE) {
         /* initialize UniqueID generator - must be done once backends are started
            and event queue is initialized but before plugins are started */
         Slapi_DN *sdn = slapi_sdn_new_dn_byval ("cn=uniqueid generator,cn=config");
@@ -581,7 +581,7 @@
             return -1;
         }
 
-        li->li_flags |= TASK_RUNNING_FROM_COMMANDLINE;
+        li->li_flags |= SLAPI_TASK_RUNNING_FROM_COMMANDLINE;
         ldbm_config_load_dse_info(li);
         autosize_import_cache(li);
     }
@@ -604,7 +604,7 @@
 
     /***** prepare & init libdb and dblayer *****/
 
-    if (! (task_flags & TASK_RUNNING_FROM_COMMANDLINE)) {
+    if (! (task_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE)) {
         /* shutdown this instance of the db */
         LDAPDebug(LDAP_DEBUG_ANY, "Bringing %s offline...\n", 
                   instance_name, 0, 0);
@@ -778,11 +778,11 @@
     slapi_pblock_get( pb, SLAPI_TASK_FLAGS, &task_flags );
     slapi_pblock_get( pb, SLAPI_DB2LDIF_DECRYPT, &decrypt );
     slapi_pblock_get( pb, SLAPI_DB2LDIF_SERVER_RUNNING, &server_running );
-    run_from_cmdline = (task_flags & TASK_RUNNING_FROM_COMMANDLINE);
+    run_from_cmdline = (task_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE);
 
     dump_replica = pb->pb_ldif_dump_replica;
     if (run_from_cmdline) {
-        li->li_flags |= TASK_RUNNING_FROM_COMMANDLINE;
+        li->li_flags |= SLAPI_TASK_RUNNING_FROM_COMMANDLINE;
         if (!dump_replica) {
             we_start_the_backends = 1;
         }
@@ -1298,12 +1298,12 @@
     slapi_pblock_get(pb, SLAPI_BACKEND_INSTANCE_NAME, &instance_name);
     slapi_pblock_get(pb, SLAPI_PLUGIN_PRIVATE, &li);
     slapi_pblock_get(pb, SLAPI_TASK_FLAGS, &task_flags);
-    run_from_cmdline = (task_flags & TASK_RUNNING_FROM_COMMANDLINE);
+    run_from_cmdline = (task_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE);
     slapi_pblock_get(pb, SLAPI_BACKEND_TASK, &task);
 
     if (run_from_cmdline) {
         /* No ldbm backend exists until we process the config info. */
-        li->li_flags |= TASK_RUNNING_FROM_COMMANDLINE;
+        li->li_flags |= SLAPI_TASK_RUNNING_FROM_COMMANDLINE;
         ldbm_config_load_dse_info(li);
         txn.back_txn_txn = NULL;    /* no transaction */
     }
@@ -1764,6 +1764,8 @@
                 percent = (ep->ep_id*100 / (lastid ? lastid : 1));
             }
             if (task) {
+                /* NGK - This should eventually be cleaned up to use the
+                 * public task API */
                 task->task_progress = (idl ? idindex : ep->ep_id);
                 task->task_work = (idl ? idl->b_nids : lastid);
                 slapi_task_status_changed(task);
@@ -1970,7 +1972,7 @@
     slapi_pblock_get(pb, SLAPI_BACKEND_TASK, &task);
     slapi_pblock_get(pb, SLAPI_DB2LDIF_SERVER_RUNNING, &server_running);
 
-    run_from_cmdline = (task_flags & TASK_RUNNING_FROM_COMMANDLINE);
+    run_from_cmdline = (task_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE);
     slapi_pblock_get(pb, SLAPI_PLUGIN_PRIVATE, &li);
     if (run_from_cmdline)
     {
@@ -2435,7 +2437,7 @@
     int run_from_cmdline = 0;
 
     slapi_pblock_get(pb, SLAPI_TASK_FLAGS, &task_flags);
-    run_from_cmdline = (task_flags & TASK_RUNNING_FROM_COMMANDLINE);
+    run_from_cmdline = (task_flags & SLAPI_TASK_RUNNING_FROM_COMMANDLINE);
 
     be = inst->inst_be;
     slapi_log_error(SLAPI_LOG_FATAL, "upgrade DB",




More information about the Fedora-directory-commits mailing list