[prev in list] [next in list] [prev in thread] [next in thread]
List: opensuse-commit
Subject: commit booth for openSUSE:Factory
From: root () hilbert ! suse ! de (h_root)
Date: 2015-08-31 20:59:51
Message-ID: 20150831205951.B8498AE037 () hilbert ! suse ! de
[Download RAW message or body]
Hello community,
here is the log from the commit of package booth for openSUSE:Factory checked in at \
2015-08-31 22:59:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/booth (Old)
and /work/SRC/openSUSE:Factory/.booth.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "booth"
Changes:
--------
--- /work/SRC/openSUSE:Factory/booth/booth.changes 2015-08-05 06:51:53.000000000 \
+0200
+++ /work/SRC/openSUSE:Factory/.booth.new/booth.changes 2015-08-31 22:59:50.000000000 \
+0200 @@ -1,0 +2,10 @@
+Mon Aug 31 12:55:06 UTC 2015 - dmuhamedagic@suse.com
+
+- Update to version v0.2.0_107_g3e73b68:
+ + booth-keygen: older dd don't have status=none option
+ + ticket: move election start out of the signal handler (bsc#942346)
+ + extprog: handle better multiple children signal delivery
+ + client: prevent garbage characters at the end of the list
+ + service-runnable: improve error checking
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.UIg6sO/_old 2015-08-31 22:59:51.000000000 +0200
+++ /var/tmp/diff_new_pack.UIg6sO/_new 2015-08-31 22:59:51.000000000 +0200
@@ -1,4 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://github.com/ClusterLabs/booth.git</param>
- <param name="changesrevision">f79df7bd441a797da5fde8a7949334209bc7befe</param></service></servicedata>
\ No newline at end of file
+ <param name="changesrevision">3e73b683b36c38650d1d2ff4c9393cb1bb2056e6</param></service></servicedata>
\ No newline at end of file
++++++ booth.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/.git_info new/booth/.git_info
--- old/booth/.git_info 2015-08-03 17:38:16.000000000 +0200
+++ new/booth/.git_info 2015-08-31 14:53:31.000000000 +0200
@@ -1 +1 @@
-v0.2.0-97-gda68360
+v0.2.0-107-g3e73b68
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/script/booth-keygen \
new/booth/script/booth-keygen
--- old/booth/script/booth-keygen 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/script/booth-keygen 2015-08-28 20:03:37.000000000 +0200
@@ -54,9 +54,10 @@
fi
umask 077
-dd if=$RND_SRC of=$keyf bs=$KEYSIZE count=1 status=none
+errout=`dd if=$RND_SRC of=$keyf bs=$KEYSIZE count=1 2>&1`
rc=$?
if [ $rc -ne 0 ]; then
+ echo "$errout" >&2
exit $rc
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/script/service-runnable \
new/booth/script/service-runnable
--- old/booth/script/service-runnable 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/script/service-runnable 2015-08-28 20:03:37.000000000 +0200
@@ -5,14 +5,30 @@
# acquire the ticket here.
service="${1:?Need a resource name as first argument.}"
+if [ -z "$service" ]; then
+ ha_logger "$0: bad usage: no resource name"
+ exit 1
+fi
tmpshadow=`mktemp booth-check.XXXXXX`
+if [ $? -ne 0 -o ! -f "$tmpshadow" ]; then
+ ha_logger "$0: mktemp failed"
+ exit 1
+fi
+
trap "rm -f $tmpshadow" EXIT
# We expect an output like
# p_dummy (ocf::pacemaker:Dummy): Started geo-rz2-a
-if crm_simulate -O $tmpshadow --ticket-grant "$BOOTH_TICKET" --simulate --live-check \
| +status=`crm_simulate -O $tmpshadow --ticket-grant "$BOOTH_TICKET" --simulate \
--live-check 2>&1` +if [ $? -ne 0 ]; then
+ ha_logger "$0: crm_simulate failed"
+ ha_logger "$0: crm_simulate: $status"
+ exit 1
+fi
+
+if echo "$status" |
sed -n '/^Revised cluster status:/,$p' |
egrep "^[[:space:]]+$service[[:space:]]+\(.*\):[[:space:]]+Started ([^[:space:]]+) \
*$" >/dev/null then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/src/config.c new/booth/src/config.c
--- old/booth/src/config.c 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/src/config.c 2015-08-28 20:03:37.000000000 +0200
@@ -337,8 +337,8 @@
}
/* make arguments for execv(2)
- * tk->clu_test.prog points to the path
- * tk->clu_test.argv is argument vector (starts with the prog)
+ * tk_test.prog points to the path
+ * tk_test.argv is argument vector (starts with the prog)
* (strtok pokes holes in the configuration parameter value, i.e.
* we don't need to allocate memory for arguments)
*/
@@ -347,24 +347,24 @@
char *p;
int i = 0;
- if (tk->clu_test.prog) {
- free(tk->clu_test.prog);
+ if (tk_test.prog) {
+ free(tk_test.prog);
}
- if (!(tk->clu_test.prog = strdup(val))) {
+ if (!(tk_test.prog = strdup(val))) {
log_error("out of memory");
return -1;
}
- p = strtok(tk->clu_test.prog, " \t");
- tk->clu_test.argv[i++] = p;
+ p = strtok(tk_test.prog, " \t");
+ tk_test.argv[i++] = p;
do {
p = strtok(NULL, " \t");
if (i >= MAX_ARGS) {
log_error("too many arguments for the acquire-handler");
- free(tk->clu_test.prog);
+ free(tk_test.prog);
return -1;
}
- tk->clu_test.argv[i++] = p;
+ tk_test.argv[i++] = p;
} while (p);
return 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/src/config.h new/booth/src/config.h
--- old/booth/src/config.h 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/src/config.h 2015-08-28 20:03:37.000000000 +0200
@@ -44,6 +44,8 @@
EXTPROG_IGNORE,
} extprog_state_e;
+#define tk_test tk->clu_test
+
struct ticket_config {
/** \name Configuration items.
* @{ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/src/handler.c \
new/booth/src/handler.c
--- old/booth/src/handler.c 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/src/handler.c 2015-08-28 20:03:37.000000000 +0200
@@ -71,7 +71,7 @@
int rv = 0;
pid_t pid;
- if (!tk->clu_test.prog)
+ if (!tk_test.prog)
return 0;
switch(pid=fork()) {
@@ -83,12 +83,12 @@
exit(1);
}
closefiles(); /* don't leak open files */
- execv(tk->clu_test.prog, tk->clu_test.argv);
- tk_log_error("%s: execv failed (%s)", tk->clu_test.prog, strerror(errno));
+ execv(tk_test.prog, tk_test.argv);
+ tk_log_error("%s: execv failed (%s)", tk_test.prog, strerror(errno));
exit(1);
default: /* parent */
- tk->clu_test.pid = pid;
- tk->clu_test.progstate = EXTPROG_RUNNING;
+ tk_test.pid = pid;
+ tk_test.progstate = EXTPROG_RUNNING;
rv = RUNCMD_MORE; /* program runs */
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/src/main.c new/booth/src/main.c
--- old/booth/src/main.c 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/src/main.c 2015-08-28 20:03:37.000000000 +0200
@@ -717,7 +717,7 @@
goto out_close;
}
- data = malloc(data_len);
+ data = malloc(data_len+1);
if (!data) {
rv = -ENOMEM;
goto out_free;
@@ -726,7 +726,8 @@
if (rv < 0)
goto out_free;
- (void)fwrite(data, data_len, 1, stdout);
+ *(data + data_len) = '\0';
+ (void)fputs(data, stdout);
fflush(stdout);
rv = 0;
@@ -1407,31 +1408,24 @@
static void wait_child(int sig)
{
- int i, status, rv;
+ int i, status;
struct ticket_config *tk;
/* use waitpid(2) and not wait(2) in order not to interfear
* with popen(2)/pclose(2) and system(2) used in pacemaker.c
*/
foreach_ticket(i, tk) {
- if (tk->clu_test.prog && tk->clu_test.pid >= 0 &&
- (tk->clu_test.progstate == EXTPROG_RUNNING ||
- tk->clu_test.progstate == EXTPROG_IGNORE) &&
- waitpid(tk->clu_test.pid, &status, WNOHANG) == tk->clu_test.pid) {
- if (tk->clu_test.progstate == EXTPROG_IGNORE) {
+ if (tk_test.prog && tk_test.pid >= 0 &&
+ (tk_test.progstate == EXTPROG_RUNNING ||
+ tk_test.progstate == EXTPROG_IGNORE) &&
+ waitpid(tk_test.pid, &status, WNOHANG) == tk_test.pid) {
+ if (tk_test.progstate == EXTPROG_IGNORE) {
/* not interested in the outcome */
- tk->clu_test.pid = 0;
- tk->clu_test.progstate = EXTPROG_IDLE;
- return;
- }
- tk->clu_test.status = status;
- tk->clu_test.progstate = EXTPROG_EXITED;
- if (tk->state != ST_LEADER) {
- rv = acquire_ticket(tk, OR_ADMIN);
- if (rv != 0) { /* external program failed */
- tk->outcome = rv;
- foreach_tkt_req(tk, notify_client);
- }
+ tk_test.pid = 0;
+ tk_test.progstate = EXTPROG_IDLE;
+ } else {
+ tk_test.status = status;
+ tk_test.progstate = EXTPROG_EXITED;
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/src/pacemaker.c \
new/booth/src/pacemaker.c
--- old/booth/src/pacemaker.c 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/src/pacemaker.c 2015-08-28 20:03:37.000000000 +0200
@@ -281,7 +281,7 @@
rv = pclose(p);
if (!rv) {
log_debug("command \"%s\" value %" PRIi64, cmd, v);
- } else if (rv == 6) {
+ } else if (WEXITSTATUS(rv) == 6) {
log_info("command \"%s\", ticket not found", cmd);
} else {
log_error("command \"%s\" %s, value %" PRIi64, cmd, interpret_rv(rv), v);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/src/raft.c new/booth/src/raft.c
--- old/booth/src/raft.c 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/src/raft.c 2015-08-28 20:03:37.000000000 +0200
@@ -97,7 +97,7 @@
{
int duration;
- tk_log_debug("updating from %s (%d/%d)",
+ tk_log_info("updating from %s (%d/%d)",
site_string(sender),
ntohl(msg->ticket.term), msg_term_time(msg));
duration = min(tk->term_duration, msg_term_time(msg));
@@ -222,8 +222,8 @@
tk->in_election = 0;
new_leader = majority_votes(tk);
if (new_leader == local) {
- tk_log_info("granted successfully here");
won_elections(tk);
+ tk_log_info("granted successfully here");
} else if (new_leader) {
tk_log_info("ticket granted at %s",
site_string(new_leader));
@@ -507,7 +507,7 @@
if (tk->state != ST_CANDIDATE) {
/* lost candidate status, somebody rejected our proposal */
- tk_log_debug("candidate status lost, ignoring vote_for from %s",
+ tk_log_info("candidate status lost, ignoring VtFr from %s",
site_string(sender));
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/src/ticket.c new/booth/src/ticket.c
--- old/booth/src/ticket.c 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/src/ticket.c 2015-08-28 20:03:37.000000000 +0200
@@ -196,7 +196,7 @@
/* immediately returned with success */
break;
case RUNCMD_MORE:
- tk_log_debug("forked %s", tk->clu_test.prog);
+ tk_log_debug("forked %s", tk_test.prog);
break;
default:
break;
@@ -210,7 +210,7 @@
{
int rv = -1, status;
- status = tk->clu_test.status;
+ status = tk_test.status;
if (WIFEXITED(status)) {
rv = WEXITSTATUS(status);
} else if (WIFSIGNALED(status)) {
@@ -218,15 +218,15 @@
}
if (rv) {
tk_log_warn("handler \"%s\" failed: %s",
- tk->clu_test.prog, interpret_rv(status));
+ tk_test.prog, interpret_rv(status));
tk_log_warn("we are not allowed to acquire ticket");
ext_prog_failed(tk, start_election);
} else {
tk_log_debug("handler \"%s\" exited with success",
- tk->clu_test.prog);
+ tk_test.prog);
}
- tk->clu_test.pid = 0;
- tk->clu_test.progstate = EXTPROG_IDLE;
+ tk_test.pid = 0;
+ tk_test.progstate = EXTPROG_IDLE;
return rv;
}
@@ -244,10 +244,10 @@
{
int rv = 0;
- if (!tk->clu_test.prog)
+ if (!tk_test.prog)
return 0;
- switch(tk->clu_test.progstate) {
+ switch(tk_test.progstate) {
case EXTPROG_IDLE:
rv = run_external_prog(tk, start_election);
break;
@@ -327,10 +327,10 @@
static void ignore_extprog(struct ticket_config *tk)
{
- if (tk->clu_test.prog && tk->clu_test.pid >= 0 &&
- tk->clu_test.progstate == EXTPROG_RUNNING) {
- tk->clu_test.progstate = EXTPROG_IGNORE;
- (void)kill(tk->clu_test.pid, SIGTERM);
+ if (tk_test.prog && tk_test.pid >= 0 &&
+ tk_test.progstate == EXTPROG_RUNNING) {
+ tk_test.progstate = EXTPROG_IGNORE;
+ (void)kill(tk_test.pid, SIGTERM);
}
}
@@ -528,7 +528,7 @@
if (sender)
tk_log_info("ticket granted to %s (says %s)",
site_string(tk->leader),
- site_string(sender));
+ tk->leader == sender ? "they" : site_string(sender));
else
tk_log_info("ticket granted to %s (from CIB)",
site_string(tk->leader));
@@ -615,9 +615,8 @@
}
if ((cmd == CMD_REVOKE) && tk->leader != local) {
- log_info("the ticket %s is not granted here, "
- "redirect to %s",
- msg->ticket.id, ticket_leader_string(tk));
+ tk_log_info("not granted here, redirect to %s",
+ ticket_leader_string(tk));
rv = RLT_REDIRECT;
goto reply_now;
}
@@ -804,7 +803,7 @@
int ack_cnt;
if (++tk->retry_number > tk->retries) {
- tk_log_debug("giving up on sending retries");
+ tk_log_info("giving up on sending retries");
no_resends(tk);
set_ticket_wakeup(tk);
return;
@@ -812,7 +811,7 @@
/* try to reach some sites again if we just stepped down */
if (tk->last_request == OP_VOTE_FOR) {
- tk_log_warn("no answers to our request (try #%d), "
+ tk_log_warn("no answers to our VtFr request to step down (try #%d), "
"we are alone",
tk->retry_number);
goto just_resend;
@@ -850,10 +849,22 @@
static void process_next_state(struct ticket_config *tk)
{
+ int rv;
+
switch(tk->next_state) {
case ST_LEADER:
- log_reacquire_reason(tk);
- acquire_ticket(tk, OR_REACQUIRE);
+ if (has_extprog_exited(tk)) {
+ if (tk->state != ST_LEADER) {
+ rv = acquire_ticket(tk, OR_ADMIN);
+ if (rv != 0) { /* external program failed */
+ tk->outcome = rv;
+ foreach_tkt_req(tk, notify_client);
+ }
+ }
+ } else {
+ log_reacquire_reason(tk);
+ acquire_ticket(tk, OR_REACQUIRE);
+ }
break;
case ST_INIT:
no_resends(tk);
@@ -892,12 +903,23 @@
static void next_action(struct ticket_config *tk)
{
+ int rv;
+
switch(tk->state) {
case ST_INIT:
/* init state, handle resends for ticket revoke */
/* and rebroadcast if stepping down */
- if (tk->acks_expected) {
- handle_resends(tk);
+ /* try to acquire ticket on grant */
+ if (has_extprog_exited(tk)) {
+ rv = acquire_ticket(tk, OR_ADMIN);
+ if (rv != 0) { /* external program failed */
+ tk->outcome = rv;
+ foreach_tkt_req(tk, notify_client);
+ }
+ } else {
+ if (tk->acks_expected) {
+ handle_resends(tk);
+ }
}
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' \
'--exclude=.svnignore' old/booth/test/live_test.sh \
new/booth/test/live_test.sh
--- old/booth/test/live_test.sh 2015-08-03 17:01:03.000000000 +0200
+++ new/booth/test/live_test.sh 2015-08-28 20:03:37.000000000 +0200
@@ -172,7 +172,7 @@
stop_site_clean() {
manage_site $1 stop &&
#sleep 1 &&
- runcmd $1 crm_ticket --force -t $tkt -r
+ runcmd $1 crm_ticket --force -t $tkt --cleanup > /dev/null
}
stop_site() {
manage_site $1 stop
@@ -271,6 +271,13 @@
done
return 1
}
+is_pacemaker_running() {
+ local h
+ for h in $sites; do
+ crmadmin -D >/dev/null || return 1
+ done
+ return 0
+}
sync_conf() {
local h rc=0
for h in $sites $arbitrators; do
@@ -342,6 +349,12 @@
runcmd $h $@
}
+# need to get logs from _all_ clusters' nodes
+get_all_nodes() {
+ for h in $sites; do
+ runcmd $h crm_node -l | awk '{print $2}'
+ done
+}
get_port() {
grep "^port" |
sed -n 's/.*="//;s/"//p'
@@ -603,7 +616,7 @@
fi
hb_report $hb_report_opts $quick_opt -f "`date -d @$((start_ts-5))`" \
-t "`date -d @$((end_ts+60))`" \
- -n "$sites $arbitrators" $name 2>&1 | logmsg
+ -n "$all_nodes $arbitrators" $name 2>&1 | logmsg
}
runtest() {
local start_ts end_ts
@@ -1076,9 +1089,14 @@
echo "ERROR: configuration file $cnf doesn't exist"
usage 1
}
+is_pacemaker_running || {
+ echo "ERROR: sites must run pacemaker"
+ exit 1
+}
sites=`get_servers site < $cnf`
arbitrators=`get_servers arbitrator < $cnf`
+all_nodes=`get_all_nodes`
port=`get_port < $cnf`
: ${port:=9929}
site_cnt=`echo $sites | wc -w`
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic