On Thu, 2008-11-27 at 11:20 -0500, Daniel Gruner wrote:
> The latest version (739) does not work properly. For example, any
> time I tried to run something it would just hang, irrespective of
> whether I did "xrx -a date", or "xrx -l n0000 /sbin/reboot".
I tested r739 before committing and it works fine for me. Can you
provide some more details? Possibly a trace. And what hangs?
> I had to
> hard-reboot the nodes and go back to the reasonably stable version
> 724. Also the problem with the infinite loop in xuserset, for which
> Abhishek sent me a patch, did not make it into the repository.
>
> May I suggest that versions get checked into the repository only after
> some more stringent testing?
>
One of the motivating reasons for moving the base to sourceforge was
that we could have a more traditional development model with incremental
tagged repository versions and periodic file releases so that
third-party vendors using XCPU know when to pull.
I had recently posted a 'caveat emptor' on the mailing list about the
recent changes to merge sxcpu spfs/npfs with the sourceforge spfs/npfs.
This, and the changes to libxcpu over the last few days, were necessary
to ease out the integration of xcpu with other tools.
I have not been able to reproduce any obvious errors with the recent SVN
revision. I would appreciate any further details you could provide.
-- Abhishek
> Daniel
>
> On 11/26/08, Abhishek Kulkarni <[EMAIL PROTECTED]> wrote:
> >
> > xk and xps use the xp_defaultuser() function of libxcpu to get the admin
> > user and key.
> >
> > for xk, it first tries as xcpu-admin and if that fails as the user
> > itself. xps works for all.
> >
> > Signed-off-by: Abhishek Kulkarni <[EMAIL PROTECTED]>
> >
> > Index: utils/xk.c
> > ===================================================================
> > --- utils/xk.c (revision 739)
> > +++ utils/xk.c (working copy)
> > @@ -50,54 +50,9 @@
> >
> > extern int spc_chatty;
> >
> > -static Spuser *user;
> > -static Xkey *ukey;
> > -static char *afname;
> > -
> > -static int
> > -init_user(void)
> > -{
> > - char *homepath, keypath[128];
> > - int xcpu_uid;
> > - struct passwd *xcpu_admin;
> > - Spuserpool *upool;
> > -
> > -
> > - if (!afname)
> > - ukey = xauth_privkey_create("/etc/xcpu/admin_key");
> > - else
> > - ukey = xauth_privkey_create(afname);
> > -
> > - if (ukey) {
> > - upool = sp_priv_userpool_create();
> > - xcpu_admin = getpwnam("xcpu-admin");
> > - if (xcpu_admin)
> > - xcpu_uid = xcpu_admin->pw_uid;
> > - else
> > - xcpu_uid = 65530;
> > -
> > - user = sp_priv_user_add(upool, "xcpu-admin", xcpu_uid,
> > ukey);
> > - if (!user)
> > - return -1;
> > - }
> > -
> > - else {
> > - user = sp_unix_users->uid2user(sp_unix_users, geteuid());
> > - if (!user)
> > - return -1;
> > - homepath = getenv("HOME");
> > - snprintf(keypath, sizeof(keypath), "%s/.ssh/id_rsa",
> > homepath);
> > - ukey = xauth_privkey_create(keypath);
> > - if (!ukey)
> > - return -1;
> > - }
> > -
> > - return 0;
> > -}
> > -
> > void
> > usage(char *argv) {
> > - fprintf(stderr, "usage: %s [-dhjm] [-a adminkey] sig host:<pid|jid>
> > [host:<pid|jid> ...]\n", argv);
> > + fprintf(stderr, "usage: %s [-dhjm] [-A adminkey] sig host:<pid|jid>
> > [host:<pid|jid> ...]\n", argv);
> > exit(1);
> > }
> >
> > @@ -112,9 +67,11 @@
> > Xpproc *procs, *xp;
> > char *s;
> > char statserver[32];
> > + static Spuser *auser;
> > + static Xkey *akey;
> > + static char *adminkey = NULL;
> >
> > - afname = 0;
> > - while ((c = getopt(argc, argv, "+dhja:m")) != -1) {
> > + while ((c = getopt(argc, argv, "+dhjA:m")) != -1) {
> > switch (c) {
> > case 'd':
> > spc_chatty = 1;
> > @@ -122,8 +79,8 @@
> > case 'j':
> > killjob++;
> > break;
> > - case 'a':
> > - afname = optarg;
> > + case 'A':
> > + adminkey = strdup(optarg);
> > break;
> > case 'm':
> > match = 1;
> > @@ -142,11 +99,19 @@
> > fprintf(stderr, "bad signal argument %s: expected int",
> > argv[optind-1]);
> > usage(argv[0]);
> > }
> > -
> > -
> > - if (init_user() < 0)
> > - goto error;
> >
> > + if (adminkey) {
> > + akey = xauth_privkey_create(adminkey);
> > + if (!akey)
> > + goto error;
> > + }
> > +
> > + if (xp_defaultuser(&auser, &akey) < 0) {
> > + if (akey)
> > + xauth_destroy(akey);
> > + goto error;
> > + }
> > +
> > for(;optind < argc; optind++) {
> > int isjid = 0;
> > int pid = -1;
> > @@ -178,7 +143,7 @@
> > }
> > }
> >
> > - n = xp_proc_list(ns, user, ukey, &procs);
> > + n = xp_proc_list(ns, auser, akey, &procs);
> > if (n < 0) {
> > fprintf(stderr, "can not obtain process list for
> > nodeset %s;
> > skipping\n", argv[optind]);
> > continue;
> > @@ -191,20 +156,20 @@
> > if(isjid || match) {
> > if (xp->xcpujid) {
> > if(!match && !strcmp(xp->xcpujid,
> > id))
> > - xp_proc_kill(xp, user,
> > ukey, signal);
> > + xp_proc_kill(xp, auser,
> > akey, signal);
> > else if(match) {
> > tmpjid =
> > malloc(strlen(xp->xcpujid) + 1);
> > strcpy(tmpjid, xp->xcpujid);
> > slash = strchr(tmpjid, '/');
> > *slash = '\0';
> > if (!strcmp(tmpjid, id))
> > - xp_proc_kill(xp,
> > user, ukey, signal);
> > + xp_proc_kill(xp,
> > auser, akey, signal);
> > free(tmpjid);
> > }
> > }
> > } else {
> > if(xp->pid == pid)
> > - xp_proc_kill(xp, user, ukey,
> > signal);
> > + xp_proc_kill(xp, auser, akey,
> > signal);
> > }
> > }
> > }
> > Index: utils/xps.c
> > ===================================================================
> > --- utils/xps.c (revision 739)
> > +++ utils/xps.c (working copy)
> > @@ -48,29 +48,9 @@
> > static void printpinfo(Xpproc *xp, char *stat);
> >
> > extern int spc_chatty;
> > -static Spuser *user;
> > -static Xkey *ukey;
> >
> > -static int
> > -init_user(void)
> > -{
> > - char *homepath, keypath[128];
> > -
> > - user = sp_unix_users->uid2user(sp_unix_users, geteuid());
> > - if (!user)
> > - return -1;
> > -
> > - homepath = getenv("HOME");
> > - snprintf(keypath, sizeof(keypath), "%s/.ssh/id_rsa", homepath);
> > - ukey = xauth_privkey_create(keypath);
> > - if (!ukey)
> > - return -1;
> > -
> > - return 0;
> > -}
> > -
> > void usage() {
> > - fprintf(stderr, "usage: xps [-dax] [-J JobId] host,...\n");
> > + fprintf(stderr, "usage: xps [-dax] [-p port] [-J JobId]
> > host,...\n");
> > exit(1);
> > }
> >
> > @@ -80,16 +60,18 @@
> > int i, n, c, jlen, ecode;
> > int min, sec, allflag = 0;
> > long long int t;
> > - int xonly = 0;
> > - char *ename, buf[256], *jobid;
> > + int xonly = 0, port = STAT_PORT;
> > + char *ename, buf[256], *jobid, *end;
> > Xpnodeset *nds, *nds2;
> > Xpproc *procs, *xp;
> > char stat[32];
> > char tim[64];
> > + static Spuser *auser;
> > + static Xkey *akey;
> >
> > jlen = 0;
> > jobid = NULL;
> > - while ((c = getopt(argc, argv, "+daxJ:")) != -1) {
> > + while ((c = getopt(argc, argv, "+daxp:J:h")) != -1) {
> > switch (c) {
> > case 'd':
> > spc_chatty = 1;
> > @@ -113,6 +95,12 @@
> > xonly = 1;
> > break;
> >
> > + case 'p':
> > + port = strtol(optarg, &end, 10);
> > + if (*end != '\0')
> > + usage(argv[0]);
> > + break;
> > + case 'h':
> > default:
> > usage();
> > }
> > @@ -120,7 +108,7 @@
> >
> > if (allflag) {
> > char statserver[32];
> > - sprintf(statserver, "localhost!%d", STAT_PORT);
> > + sprintf(statserver, "localhost!%d", port);
> > nds = xp_nodeset_list(NULL);
> > if(nds == NULL)
> > nds = xp_nodeset_list(statserver);
> > @@ -145,13 +133,12 @@
> > if (!nds)
> > goto error;
> >
> > - if (init_user() < 0)
> > + if (xp_defaultuser(&auser, &akey) < 0)
> > goto error;
> >
> > - n = xp_proc_list(nds, user, ukey, &procs);
> > + n = xp_proc_list(nds, auser, akey, &procs);
> > if (n < 0)
> > goto error;
> > -
> >
> > printf("NODE\tPID\tTTY\tSTAT\tTIME\tJOBID\tCOMMAND\n");
> > for(i = 0; i < n; i++) {
> >
> >
> >