[globus-rls-server/el4] Fix RLI updates for bloomfilters

Mattias Ellert ellert at fedoraproject.org
Sun Jan 29 10:27:34 UTC 2012


commit 9b4a9539be50b8c7c3b7fe9c365f58ede2e9c806
Author: Mattias Ellert <mattias.ellert at fysast.uu.se>
Date:   Sun Jan 29 11:26:42 2012 +0100

    Fix RLI updates for bloomfilters

 globus-rls-server-bloomfilter.patch |  187 ++++++++++++++++++++
 globus-rls-server-mutex.patch       |   20 ---
 globus-rls-server-pthreads.patch    |  323 ++++++++++++++++++++++++++++++++++-
 globus-rls-server.spec              |   13 +-
 4 files changed, 513 insertions(+), 30 deletions(-)
---
diff --git a/globus-rls-server-bloomfilter.patch b/globus-rls-server-bloomfilter.patch
new file mode 100644
index 0000000..e6df4e1
--- /dev/null
+++ b/globus-rls-server-bloomfilter.patch
@@ -0,0 +1,187 @@
+diff -ur --exclude CVS globus_rls_server-4.9/server.c globus-rls-server-B5.0/server.c
+--- globus_rls_server-4.9/server.c	2009-11-13 19:17:29.000000000 +0100
++++ globus-rls-server-B5.0/server.c	2012-01-27 01:02:01.000000000 +0100
+@@ -166,6 +166,7 @@
+ static int		listresult(void *cv, char *s1, char *s2, char *s3,
+ 				   char *s4, int irc);
+ static int		getreslimit(char *areslimit);
++static void		bfresize(DBH *dbh);
+ 
+ METHOD			methods[] = {
+   { "admin", rls_admin, 1, 0, 0 },
+@@ -207,7 +208,7 @@
+   { "lrc_rli_get_part", lrc_rli_get_part, 2, P_LRCREAD, MF_NEEDLRC },
+   { "lrc_rli_info", lrc_rli_info, 1, P_LRCREAD, MF_NEEDLRC },
+   { "lrc_rli_list", lrc_rli_list, 0, P_LRCREAD, MF_NEEDLRC },
+-  { "rli_exists", rli_exists, 2, P_RLIREAD, MF_NEEDLRC },
++  { "rli_exists", rli_exists, 2, P_RLIREAD, MF_NEEDRLI },
+   { "rli_exists_bulk", rli_exists_bulk, 0, P_RLIREAD, MF_NEEDRLI },
+   { "rli_get_lrc", rli_get_lrc, 3, P_RLIREAD, MF_NEEDRLI },
+   { "rli_get_lrc_bulk", rli_get_lrc_bulk, 0, P_RLIREAD, MF_NEEDRLI },
+@@ -1885,7 +1886,7 @@
+ 			  c->errmsg)) != GLOBUS_RLS_SUCCESS) {
+     rrpc_error(c, rc, "%s", c->errmsg);
+     return;
+-  } else if (rc == GLOBUS_RLS_SUCCESS) {
++  } else {
+       if (bloomfilter.bfsize) {
+         globus_mutex_lock(&bloomfilter.mtx);
+         bf_addlfn(&bloomfilter, arglist[0]);
+@@ -1894,21 +1895,11 @@
+   }
+   rrpc_success(c);
+ 
+-  if (update_immediate)
+-    doimmediate(rliop_add, lrc_rlilist, &lrc_rlilistlock, arglist[0], NULL);
+-  /*
+-   * If we're using bloom filters to update, and the number of lfns has
+-   * doubled in the db, then resize the bloom filter.
+-   */
+-  if (bloomfilter.bfsize &&
+-      (table[T_LRCLFN].count >= bloomfilter.startlfns * 2) &&
+-      (table[T_LRCLFN].count * lrc_bloomfilter_ratio > bloomfilter.bfsize)) {
+-    if (loglevel)
+-      logit(LOG_DEBUG, "lrc_create: Resizing bloom filter, current %d new %d",
+-	    bloomfilter.bfsize, table[T_LRCLFN].count * lrc_bloomfilter_ratio);
+-    bf_free(&bloomfilter);
+-    bloomfilter.startlfns = table[T_LRCLFN].count;
+-    lrc_getbf(dbh->lrc);
++  if (rc == GLOBUS_RLS_SUCCESS) {
++    if (update_immediate)
++      doimmediate(rliop_add, lrc_rlilist, &lrc_rlilistlock, arglist[0], NULL);
++
++	bfresize(dbh);
+   }
+ }
+ 
+@@ -1935,10 +1926,21 @@
+     }
+     if ((rc = db_lrc_create(dbh->lrc,lfn,pfn,c->errmsg)) != GLOBUS_RLS_SUCCESS)
+       listresult(c, lfn, pfn, NULL, NULL, rc);
+-    else if (update_immediate)
+-      doimmediate(rliop_add, lrc_rlilist, &lrc_rlilistlock, lfn, NULL);
++	else {
++      if (bloomfilter.bfsize) {
++        globus_mutex_lock(&bloomfilter.mtx);
++        bf_addlfn(&bloomfilter, lfn);
++        globus_mutex_unlock(&bloomfilter.mtx);
++      }
++      if (update_immediate)
++        doimmediate(rliop_add, lrc_rlilist, &lrc_rlilistlock, lfn, NULL);
++    }
+   }
+   endstrcb(c, 0);
++
++  /* Resize bf, if needed */
++  bfresize(dbh);
++
+   if (loglevel > 1)
+     logit(LOG_DEBUG, "lrc_create_bulk: end");
+ }
+@@ -1948,7 +1950,7 @@
+ 
+ {
+   int	rc;
+-  int	lfndeleted;
++  int	lfndeleted		= 0;
+ 
+   if (!arglist[0] || !arglist[1]) {
+     rrpc_error(c, GLOBUS_RLS_BADARG, "");
+@@ -1958,7 +1960,7 @@
+ 			  &lfndeleted, c->errmsg)) != GLOBUS_RLS_SUCCESS) {
+     rrpc_error(c, rc, "%s", c->errmsg);
+     return;
+-  } else if (lfndeleted && rc == GLOBUS_RLS_SUCCESS) {
++  } else if (lfndeleted) {
+       if (bloomfilter.bfsize) {
+         globus_mutex_lock(&bloomfilter.mtx);
+         bf_deletelfn(&bloomfilter, arglist[0]);
+@@ -1978,7 +1980,7 @@
+   int	rc;
+   char	lfn[BUFLEN];
+   char	pfn[BUFLEN];
+-  int	lfndeleted;
++  int	lfndeleted		= 0;
+ 
+   if (loglevel > 1)
+     logit(LOG_DEBUG, "lrc_delete_bulk:");
+@@ -1996,8 +1998,15 @@
+     if ((rc = db_lrc_delete(dbh->lrc, lfn, pfn, &lfndeleted,
+ 			    c->errmsg)) != GLOBUS_RLS_SUCCESS)
+       listresult(c, lfn, pfn, NULL, NULL, rc);
+-    else if (update_immediate && lfndeleted)
+-      doimmediate(rliop_delete, lrc_rlilist, &lrc_rlilistlock, lfn, NULL);
++	else if (lfndeleted) {
++      if (bloomfilter.bfsize) {
++        globus_mutex_lock(&bloomfilter.mtx);
++        bf_deletelfn(&bloomfilter, lfn);
++        globus_mutex_unlock(&bloomfilter.mtx);
++      }
++      if (update_immediate)
++        doimmediate(rliop_delete, lrc_rlilist, &lrc_rlilistlock, lfn, NULL);
++    }
+   }
+   endstrcb(c, 0);
+   if (loglevel > 1)
+@@ -2298,10 +2307,18 @@
+     }
+     if ((rc = db_lrc_renamelfn(dbh->lrc,oldname,newname,c->errmsg)) != GLOBUS_RLS_SUCCESS)
+       listresult(c, oldname, newname, NULL, NULL, rc);
+-    else if (update_immediate) {
+-      doimmediate(rliop_delete, lrc_rlilist, &lrc_rlilistlock, oldname, NULL);
+-      doimmediate(rliop_add, lrc_rlilist, &lrc_rlilistlock, newname, NULL);
+-    }
++    else {
++	  if (bloomfilter.bfsize) {
++        globus_mutex_lock(&bloomfilter.mtx);
++        bf_deletelfn(&bloomfilter, oldname);
++        bf_addlfn(&bloomfilter, newname);
++        globus_mutex_unlock(&bloomfilter.mtx);
++      }
++	  if (update_immediate) {
++        doimmediate(rliop_delete, lrc_rlilist, &lrc_rlilistlock, oldname, NULL);
++        doimmediate(rliop_add, lrc_rlilist, &lrc_rlilistlock, newname, NULL);
++      }
++	}
+   }
+   endstrcb(c, 0);
+   if (loglevel > 1)
+@@ -2527,8 +2544,10 @@
+ 	  break;
+       }
+     rls_lock_release(&senderlistlock, readlock);
+-    if (!sender)
++    if (!sender) {
+       rrpc_error(c, nferr, "%s", arglist[0]);
++      return;
++    }
+   } else {
+     if ((rc = db_exists(dbh->rli, arglist[0], objtype,
+ 			c->errmsg)) != GLOBUS_RLS_SUCCESS) {
+@@ -3513,6 +3532,26 @@
+ }
+ 
+ /*
++ * If we're using bloom filters to update, and the number of lfns has
++ * doubled in the db, then resize the bloom filter.
++ */
++static void
++bfresize(DBH *dbh)
++{
++  if (bloomfilter.bfsize &&
++      (table[T_LRCLFN].count >= bloomfilter.startlfns * 2) &&
++      (table[T_LRCLFN].count * lrc_bloomfilter_ratio > bloomfilter.bfsize)) {
++    if (loglevel)
++      logit(LOG_DEBUG, "bfresize: Resizing bloom filter, current %d new %d",
++	    bloomfilter.bfsize, table[T_LRCLFN].count * lrc_bloomfilter_ratio);
++    bf_free(&bloomfilter);
++    bloomfilter.startlfns = table[T_LRCLFN].count;
++    lrc_getbf(dbh->lrc);
++  }
++  return;
++}
++
++/*
+  * Start up thread to process requests.
+  */
+ static int
diff --git a/globus-rls-server-pthreads.patch b/globus-rls-server-pthreads.patch
index fd6597e..87374a2 100644
--- a/globus-rls-server-pthreads.patch
+++ b/globus-rls-server-pthreads.patch
@@ -1,11 +1,324 @@
-diff -ur globus_rls_server-4.9.orig/server.c globus_rls_server-4.9/server.c
---- globus_rls_server-4.9.orig/server.c	2009-11-13 19:17:29.000000000 +0100
-+++ globus_rls_server-4.9/server.c	2012-01-17 19:16:54.776646992 +0100
-@@ -461,6 +461,7 @@
+diff -ur --exclude CVS globus_rls_server-4.9/event.c globus-rls-server-HEAD/event.c
+--- globus_rls_server-4.9/event.c	2007-06-13 20:34:32.000000000 +0200
++++ globus-rls-server-HEAD/event.c	2011-01-31 22:00:42.000000000 +0100
+@@ -65,7 +65,7 @@
+   EVENT		*p;
+   EVENT		*q;
+   time_t	now;
+-  pthread_t	thr;
++  globus_thread_t	thr;
+   int		rc;
+ 
+   if ((e = (EVENT *) globus_libc_malloc(sizeof(EVENT))) == NULL) {
+@@ -80,11 +80,8 @@
+   globus_cond_init(&e->ec.cond, GLOBUS_NULL);
+   e->ec.flags = EF_RUNNING;
+ 
+-  if ((rc = pthread_create(&thr, GLOBUS_NULL, e->fun, &e->ec)) != 0)
+-    logit(LOG_WARNING, "event_process: pthread_create: %s",
+-	  globus_libc_system_error_string(rc));
+-  if ((rc = pthread_detach(thr)) != 0)
+-    logit(LOG_WARNING, "event_process: pthread_detach: %s",
++  if ((rc = globus_thread_create(&thr, GLOBUS_NULL, e->fun, &e->ec)) != 0)
++    logit(LOG_WARNING, "event_process: globus_thread_create: %s",
+ 	  globus_libc_system_error_string(rc));
+ 
+   globus_mutex_lock(&eventmtx);
+diff -ur --exclude CVS globus_rls_server-4.9/lrc.c globus-rls-server-HEAD/lrc.c
+--- globus_rls_server-4.9/lrc.c	2010-05-26 02:36:53.000000000 +0200
++++ globus-rls-server-HEAD/lrc.c	2011-01-28 22:05:44.000000000 +0100
+@@ -68,7 +68,15 @@
+   globus_bool_t lrc_init_done;
+ } lrc_init_monitor_t;
+ 
+-static lrc_init_monitor_t lrc_init_monitor = { PTHREAD_MUTEX_INITIALIZER, GLOBUS_FALSE };
++static lrc_init_monitor_t lrc_init_monitor = {
++#ifdef HAVE_PTHREAD
++  { .pthread = PTHREAD_MUTEX_INITIALIZER },
++#elif HAVE_WINDOWS_THREADS
++  { .windows = 0 },
++#else
++  { .none = 0 },
++#endif
++  GLOBUS_FALSE };
+ 
+ #ifdef COUNTUPDATE
+ extern int		updatebytes;
+@@ -265,7 +269,7 @@
+       ec->flags &= ~EF_RUNNING;
+       globus_cond_signal(&ec->cond);
+       globus_mutex_unlock(&ec->mtx);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     } else {
+       ec->flags &= ~EF_RUN;
+       globus_mutex_unlock(&ec->mtx);
+@@ -320,7 +324,7 @@
+       ec->flags &= ~EF_RUNNING;
+       globus_cond_signal(&ec->cond);
+       globus_mutex_unlock(&ec->mtx);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     } else {
+       ec->flags &= ~EF_RUN;
+       globus_mutex_unlock(&ec->mtx);
+@@ -425,7 +429,7 @@
+       globus_mutex_unlock(&ec->mtx);
+       if (lrch)
+ 	db_close(lrch);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     } else {
+       ec->flags &= ~EF_RUN;
+       globus_mutex_unlock(&ec->mtx);
+diff -ur --exclude CVS globus_rls_server-4.9/misc.c globus-rls-server-HEAD/misc.c
+--- globus_rls_server-4.9/misc.c	2008-12-12 23:52:59.000000000 +0100
++++ globus-rls-server-HEAD/misc.c	2011-01-28 22:05:44.000000000 +0100
+@@ -134,11 +134,12 @@
+   va_list	ap;
+   char		buf[BUFLEN];
+   char		tbuf[100];
++  globus_thread_t self = globus_thread_self();
+ 
+   va_start(ap, fmt);
+   vsnprintf(buf, BUFLEN, fmt, ap);
+   globus_logging_write(log_handle, level,
+-          "T%lu: %s%s", (unsigned long int) pthread_self(), buf,
++          "T%lu: %s%s", (unsigned long int) self.dummy, buf,
+           (detached)?"":"\n");
+   va_end(ap);
+ }
+diff -ur --exclude CVS globus_rls_server-4.9/rli.c globus-rls-server-HEAD/rli.c
+--- globus_rls_server-4.9/rli.c	2010-05-26 02:36:53.000000000 +0200
++++ globus-rls-server-HEAD/rli.c	2011-01-28 22:05:44.000000000 +0100
+@@ -259,7 +259,7 @@
+       if (!rli_bloomfilter)
+ 	if (rlih)
+ 	  db_close(rlih);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     } else {
+       ec->flags &= ~EF_RUN;
+       globus_mutex_unlock(&ec->mtx);
+@@ -525,7 +525,7 @@
+       ec->flags &= ~EF_RUNNING;
+       globus_cond_signal(&ec->cond);
+       globus_mutex_unlock(&ec->mtx);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     } else {
+       ec->flags &= ~EF_RUN;
+       globus_mutex_unlock(&ec->mtx);
+@@ -584,7 +584,7 @@
+       ec->flags &= ~EF_RUNNING;
+       globus_cond_signal(&ec->cond);
+       globus_mutex_unlock(&ec->mtx);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     } else {
+       ec->flags &= ~EF_RUN;
+       globus_mutex_unlock(&ec->mtx);
+@@ -689,7 +689,7 @@
+       globus_mutex_unlock(&ec->mtx);
+       if (rlih)
+ 	db_close(rlih);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     } else {
+       ec->flags &= ~EF_RUN;
+       globus_mutex_unlock(&ec->mtx);
+diff -ur --exclude CVS globus_rls_server-4.9/server.c globus-rls-server-HEAD/server.c
+--- globus_rls_server-4.9/server.c	2009-11-13 19:17:29.000000000 +0100
++++ globus-rls-server-HEAD/server.c	2011-01-31 22:00:42.000000000 +0100
+@@ -266,8 +266,8 @@
+ static int		rrpc_success(CONNECTION *c);
+ static void		rrpc_flushio(CONNECTION *c);
+ static int		rrpc_readstr(CONNECTION *c, char *rbuf, int rbuflen);
+-static void		hexitsig(int s);
+-static void		hhupsig(int s);
++static void		hexitsig(void *s);
++static void		hhupsig(void *s);
+ static void		cleanexit(int s);
+ static void		usage(char *prog);
+ static void     usage_send_wrapper();
+@@ -359,6 +359,7 @@
+   extern int		optind;
+   char			*prog;
+   int			i;
++  int			rc;
+   globus_result_t	r;
+   globus_io_handle_t	handle;
+   char			*s;
+@@ -369,7 +370,6 @@
+   int			eventwaiting = 0;
+   time_t		now;
+   static int		backoff = 1;
+-  struct        sigaction	sa;
+ 
+   /* use this structure to pass the db_name, db_user and db_passwd to the
+    lrc_init function through the pthread_create() function call. */
+@@ -377,7 +377,7 @@
+   lrc_init_args_t lrc_init_params;
+ 
+   /* the thread to create the lrc; */
+-  pthread_t lrc_thread;
++  globus_thread_t lrc_thread;
+ 
+   /* the return value from the pthread_create call. This indicates if the
+    thread was created successfully or not. However, it does not indicate if
+@@ -461,6 +461,12 @@
     * If we detach after activating globus modules we get mysterious hangs
     * in globus_libc, so delay activation until after detaching.
     */
-+  globus_thread_set_model("pthread");
++  rc = globus_thread_set_model("pthread");
++  if (rc != GLOBUS_SUCCESS)
++  {
++      fprintf(stderr, "main: Unable to load pthread module\n");
++      cleanexit(1);
++  }
    for (i = 0; i < NMODS; i++)
      if ((n = globus_module_activate(modules[i])) != GLOBUS_SUCCESS) {
        fprintf(stderr, "main: Unable to activate module %d error %d", i, n);
+@@ -477,15 +483,20 @@
+   if (!rlsdebug)
+     writepid(prog);
+ 
+-  sigemptyset(&sa.sa_mask);
+-  sa.sa_flags = SA_RESTART;
+-  sa.sa_handler = hexitsig;
+-
+   for (i = 0; exitsigs[i]; i++)
+-    sigaction(exitsigs[i], &sa, NULL);
++  {
++     globus_callback_register_signal_handler(
++            exitsigs[i],
++            GLOBUS_TRUE,
++            hexitsig,
++            &exitsigs[i]);
++  }
+ 
+-  sa.sa_handler = hhupsig;
+-  sigaction(SIGHUP, &sa, NULL);
++ globus_callback_register_signal_handler(
++        exitsigs[i],
++        GLOBUS_TRUE,
++        hhupsig,
++        NULL);
+ 
+   init();
+   if ((r = startlistener((u_short) port, &handle)) != GLOBUS_SUCCESS)
+@@ -509,7 +520,7 @@
+         lrc_init_params.db_pwd = db_pwd;
+ 
+         /* create the lrc server in a separate thread. */
+-        lrc_thread_rv = pthread_create(&lrc_thread, NULL, lrc_init, (void *) & lrc_init_params);
++        lrc_thread_rv = globus_thread_create(&lrc_thread, NULL, lrc_init, (void *) & lrc_init_params);
+ 
+         /* note: only looks at return value of thread creation and not return value of lrc_init */
+         if (!lrc_thread_rv) {
+@@ -1008,7 +1019,7 @@
+   sigaddset(&ss, SIGHUP);
+   for (i = 0; exitsigs[i]; i++)
+     sigaddset(&ss, exitsigs[i]);
+-  pthread_sigmask(SIG_BLOCK, &ss, NULL);
++  globus_thread_sigmask(SIG_BLOCK, &ss, NULL);
+ 
+   while (1) {
+     globus_mutex_lock(&reqqueuemtx);
+@@ -1268,7 +1279,7 @@
+       ec->flags &= ~EF_RUNNING;
+       globus_cond_signal(&ec->cond);
+       globus_mutex_unlock(&ec->mtx);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     } else {
+       ec->flags &= ~EF_RUN;
+       globus_mutex_unlock(&ec->mtx);
+@@ -3520,16 +3531,13 @@
+ 
+ {
+   int		rc;
+-  pthread_t	thr;
++  globus_thread_t	thr;
+ 
+-  if ((rc = pthread_create(&thr, GLOBUS_NULL, procreq, NULL)) != 0) {
+-    logit(LOG_WARNING, "pthread_create: %s",
++  if ((rc = globus_thread_create(&thr, GLOBUS_NULL, procreq, NULL)) != 0) {
++	  logit(LOG_WARNING, "globus_thread_create: %s",
+ 	  globus_libc_system_error_string(rc));
+     return 0;
+   }
+-  if ((rc = pthread_detach(thr)) != 0)
+-    logit(LOG_WARNING, "pthread_detach: %s",
+-	  globus_libc_system_error_string(rc));
+   globus_mutex_lock(&commonmtx);
+   numthreads++;
+   if (loglevel)
+@@ -3553,16 +3561,16 @@
+   if (quitting && numthreads == 0)	/* If last thread let parent	*/
+     globus_cond_signal(&commoncond);	/* know they're all dead	*/
+   globus_mutex_unlock(&commonmtx);
+-  pthread_exit(0);
++  globus_thread_exit(0);
+ }
+ 
+ static void
+-hexitsig(int s)
++hexitsig(void * s)
+ 
+ {
+   if (quitting++)
+     return;
+-  logit(LOG_INFO, "hexitsig: Received signal %d", s);
++  logit(LOG_INFO, "hexitsig: Received signal %d", *(int *) s);
+   /*
+    * Would like to signal commoncond but can't call pthread_cond_signal
+    * safely from async signal handler on linux.  Main loop wakes up
+@@ -3571,7 +3579,7 @@
+ }
+ 
+ static void
+-hhupsig(int s)
++hhupsig(void * s)
+ 
+ {
+   if (needreadconf++)
+diff -ur --exclude CVS globus_rls_server-4.9/update.c globus-rls-server-HEAD/update.c
+--- globus_rls_server-4.9/update.c	2007-06-15 05:27:29.000000000 +0200
++++ globus-rls-server-HEAD/update.c	2011-01-31 22:00:42.000000000 +0100
+@@ -373,7 +373,7 @@
+   RLI		**rlilistp = (RLI **) a;
+   RLI		*rli = NULL;
+   UPDATEPAT	*p = NULL;
+-  pthread_t	thr;
++  globus_thread_t	thr;
+   int		rc;
+   int		dbflags;
+ 
+@@ -422,14 +422,11 @@
+   if (dbflags & FRLI_BLOOMFILTER)
+     rli->flags |= FR_BLOOMFILTER;
+   else {
+-    if ((rc = pthread_create(&thr, GLOBUS_NULL, process_update, rli)) != 0){
+-      logit(LOG_WARNING, "rlilistcb: pthread_create: %s",
++    if ((rc = globus_thread_create(&thr, GLOBUS_NULL, process_update, rli)) != 0){
++		logit(LOG_WARNING, "rlilistcb: globus_thread_create: %s",
+ 	    globus_libc_system_error_string(rc));
+-      goto error;
++		goto error;
+     }
+-    if ((rc = pthread_detach(thr)) != 0)
+-      logit(LOG_INFO, "rlilistcb: pthread_detach: %s",
+-	    globus_libc_system_error_string(rc));
+   }
+   rli->nxt = *rlilistp;
+   *rlilistp = rli;
+@@ -603,7 +600,7 @@
+       globus_mutex_unlock(&rli->mtx);
+       if (loglevel)
+         logit(LOG_DEBUG, "process_update(%s): End thread", rli->url);
+-      pthread_exit(0);
++      globus_thread_exit(0);
+     }
+   }
+ }
diff --git a/globus-rls-server.spec b/globus-rls-server.spec
index d097b2b..006b732 100644
--- a/globus-rls-server.spec
+++ b/globus-rls-server.spec
@@ -8,7 +8,7 @@ Name:		globus-rls-server
 %global _name %(tr - _ <<< %{name})
 Version:	4.9
 %global setupversion 4.5
-Release:	9%{?dist}
+Release:	10%{?dist}
 Summary:	Globus Toolkit - Replica Location Service Server
 
 Group:		Applications/Internet
@@ -42,9 +42,9 @@ Patch0:		%{name}-type-punned-pointer.patch
 Patch1:		%{name}-setup.patch
 #		Depend on GT 5.2.0 library versions
 Patch2:		%{name}-deps.patch
-#		Adapt to GT 5.2.0 mutex definition
-Patch3:		%{name}-mutex.patch
-#		Enable pthreads
+#		Fix RLI updates for bloomfilters (from upstream CVS)
+Patch3:		%{name}-bloomfilter.patch
+#		Enable new threading (from upstream CVS)
 Patch4:		%{name}-pthreads.patch
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -179,7 +179,7 @@ sed 's!/man1/\(.*\)\.1!/man8/\1.8!' \
 
 # Install start-up script
 mkdir -p $RPM_BUILD_ROOT%{_initrddir}
-install -p %{SOURCE2} $RPM_BUILD_ROOT%{_initrddir}
+install -p %{SOURCE2} $RPM_BUILD_ROOT%{_initrddir}/%{name}
 
 # Install license file
 mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
@@ -259,6 +259,9 @@ fi
 %doc %{_docdir}/%{name}-%{version}/README.Fedora
 
 %changelog
+* Sun Jan 29 2012 Mattias Ellert <mattias.ellert at fysast.uu.se> - 4.9-10
+- Fix RLI updates for bloomfilters
+
 * Tue Jan 17 2012 Mattias Ellert <mattias.ellert at fysast.uu.se> - 4.9-9
 - Enable pthreads
 - Fix broken links in README file


More information about the scm-commits mailing list