From nscott@redhat.com Sat Mar 1 03:20:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DEEDA7F3F for ; Sat, 1 Mar 2014 03:20:08 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id D43B58F8040 for ; Sat, 1 Mar 2014 01:20:08 -0800 (PST) X-ASG-Debug-ID: 1393665603-04cbb066e6152d50001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id tZht43QKgPr3oTeu for ; Sat, 01 Mar 2014 01:20:03 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s219JmfT022053; Sat, 1 Mar 2014 04:19:48 -0500 Date: Sat, 1 Mar 2014 04:19:46 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: "Frank Ch. Eigler" , pcp@oss.sgi.com Message-ID: <2038301382.19103090.1393665586915.JavaMail.zimbra@redhat.com> In-Reply-To: <531008D6.3040908@internode.on.net> References: <530F9B64.4080505@internode.on.net> <530FDAE6.5070308@internode.on.net> <506527158.18237145.1393551642685.JavaMail.zimbra@redhat.com> <530FF605.2000809@internode.on.net> <1180352175.18258965.1393556591992.JavaMail.zimbra@redhat.com> <1156485848.18262880.1393557855271.JavaMail.zimbra@redhat.com> <531008D6.3040908@internode.on.net> Subject: Re: pcp updates - last piece of debian packaging changes for this round MIME-Version: 1.0 X-ASG-Orig-Subj: Re: pcp updates - last piece of debian packaging changes for this round Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates - last piece of debian packaging changes for this round Thread-Index: TgNdQ3SyHx4+HqEiA2KNvn584JCc1A== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1393665603 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145632 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Ken, ----- Original Message ----- > On 28/02/14 14:24, Nathan Scott wrote: > > ----- Original Message ----- > >>> From looking in the header, we prefer > >>> MHD_create_response_from_buffer over MHD_create_response_from_data > >>> (which is still present, but marked as deprecated in the header). > >>> Could we possibly support either API? [...] > >> > >> I don't know, maybe. > >> > >> Or we could declare that debian oldstable is too old to build pmwebd, > >> and give that a separate .deb .dsc file, so it doesn't even try. > > > > *nod* - there are many possible ways to tackle this. Conditionally doing > > the packaging is what was being tried but its proving problematic (and it > > is obviously not ideal for people on older platforms), so alternatives > > are being sought. > > I was not looking to start a religious war ... Heh, no religious wars here - just keen to explore the solution space before we settle on one. > > I don't think there is disagreement here if Nathan is OK with my > half-reversion of the debian/control.master change to put back the build > dependency but without an open revision range. > It appears to work fine - I had some initial reservations, thinking the control file was being generated & so we'd have another chicken-and-egg situation, but thats not quite what it does. We'll need to take care that the control file we ship in the tarball matches what we want the buildd systems to build - which it does. Its slightly dodgey that we may modify a checked-in file during a build (which may accidentally be committed by someone, which we need to be vigilant about), but such is life. We could use this mechanism to bring the infiniband deb package back, btw, if you're keen; it proved too problematic to enable in the buildd builds, but we could build it locally with this control-file-append trick. So, yeah, its fine by me. cheers. -- Nathan From nscott@redhat.com Sat Mar 1 03:41:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C69CB7F3F for ; Sat, 1 Mar 2014 03:41:42 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id BE08F8F8059 for ; Sat, 1 Mar 2014 01:41:42 -0800 (PST) X-ASG-Debug-ID: 1393666897-04cb6c567714e6c0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id RKuv9dWRDq99Ak1o for ; Sat, 01 Mar 2014 01:41:37 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s219fa4H025237; Sat, 1 Mar 2014 04:41:36 -0500 Date: Sat, 1 Mar 2014 04:41:36 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Stan Cox Cc: PCP Message-ID: <1141611316.19105110.1393666896720.JavaMail.zimbra@redhat.com> In-Reply-To: <53111DD7.60405@redhat.com> References: <53042BF5.5070704@redhat.com> <2061040535.14512907.1393224703952.JavaMail.zimbra@redhat.com> <53111DD7.60405@redhat.com> Subject: Re: [pcp] datetime enhancements MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] datetime enhancements Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: datetime enhancements Thread-Index: hZBMTtZvpfjfHx6xOQiP6o5e9NCp/g== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1393666897 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145632 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > Made the suggested changes to commit 1ba3f1fcc98964b > Here is a summary of the changes: > > This code was imported so most of these changes are to bring the code > into the pcp family. Thanks Stan - sounds like its progressed nicely ... > If you do add in the new __pmParseTime (impl.h/exports), as discussed > below - and I think you probably should now - a new pmparsetime.3 man > page would be a welcome addition (see pmparsectime.3 for a template). > There seems to already be one Ah, I misunderstood what was happening here; I thought __pmParseTime was new with these changes, but thats not the case. So, all comments re exports and impl.h were not correct, and that part was fine as-is - sorry 'bout that! > +int __pmParseTime( > + const char *string, /* string to be parsed */ > + struct timeval *logStart, /* start of log or current time */ > + struct timeval *logEnd, /* end of log or tv_sec == INT_MAX */ > + /* assumes sizeof(t_time) == sizeof(int) */ > + struct timeval *rslt, /* if parsed ok, result filled in */ > + char **errMsg); /* error message, please free */ > > Er, wha? That's not going to fly; this symbol would need to be added > to the exports file in libpcp. Do we want this directly callable via > client tools? (maybe? dunno) If so, updates needed to exports and > to impl.h -- if not, this test needs to call the API that calls this > internal API. Aha - it was probably the above that caused me to misfire - there was not ever a need for this function prototype to be added to a .c file, as it was already in impl.h (and exports - of course, in hindsight, else build would've failed - silly of me to not realise). > I also found the build failed for me in the check-statics phase - > I had some > unexpected symbols - yyval_default.[0-9]* in getdate.o and also > some strange > C.[0-9][0-9].[0-9]* symbol that I could not trace. Do you know > what that > might be? A regex as wide-open as C.* in check-statics would not > be ideal, > so I'd really least like to find out what this symbol is. > > I will check this on a RHEL release (Ah, so this is a mystery - RHEL 6.3 here FWIW, I can check others too if its not reproducible on current Fedora). > + localtime and gmtime are not reentrant. */ > > Rest of libpcp uses the pcp lock to provide these guarantees - this > code will need to be audited to check interactions there, and whether > it is circumventing the existing locking. At first glance, it appears > to be broken in this regard. > > Switched to pmLocalTime and gmtime_r, which is in POSIX > POSIX sadly no good on Windows FWIW ... would recommend finding somewhere in libpcp doing something similar (hopefully something exists, not sure off the top of my head though), and do it that way. Nothing appears to use gmtime_r currently, I'd punt it wont work on Win32. /me looks - maybe __pmSquashTZ() is doing similar things...? > ... > So my understanding is pmParseTimeWindow is time zone agnostic and > the time zone activities are handled in pmTimeStateSetup. Since the TZ= The pmTime* APIs are for clients interacting with pmtime(1) and unrelated to these changes. The timezone APIs to look into are pmNewContextZone, pmNewZone, pmWhichZone and pmUseZone. Oh and pmLocaltime, pmCtime, etc - replacing localtime & ctime with PCP-tz-option aware variants. > handling is now stripped out of the extended datetime support, this > should be resolved *nod*, plus use of the PCP-tz-option aware APIs above. > We definitely leak errMsg though - in all newly added passing cases, > we leak the earlier error messages. An additional free right near the > end, before "return 0;" should do the trick. > That should be the caller's responsibility; right? Hmm I passed in an > allocated buffer in the test. Fixed that and freed on error. Yes and no, its tricky - if everything fails, then its the definitely the callers responsibility. But, if the first call fails (+ mallocs errmsg), and then the new code succeeds, we return success AND we malloc'd errmsg. In this case, we need to free the initial errmsg, don't we? cheers. -- Nathan From nscott@redhat.com Sat Mar 1 03:48:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 318EC7F3F for ; Sat, 1 Mar 2014 03:48:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C8F7BAC002 for ; Sat, 1 Mar 2014 01:48:18 -0800 (PST) X-ASG-Debug-ID: 1393667294-04bdf05da915cf90001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 2jg3t8kXoxGarMJY for ; Sat, 01 Mar 2014 01:48:14 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s219lx3W025981; Sat, 1 Mar 2014 04:47:59 -0500 Date: Sat, 1 Mar 2014 04:47:59 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: PCP Mailing List Message-ID: <1082118100.19105328.1393667279427.JavaMail.zimbra@redhat.com> In-Reply-To: <530FCCED.4000403@internode.on.net> References: <530FCCED.4000403@internode.on.net> Subject: Re: [pcp] Another build problem - python bits on Linux Mint 12 MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] Another build problem - python bits on Linux Mint 12 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Another build problem - python bits on Linux Mint 12 Thread-Index: vOBnvZGuULr5xLGNBANPhLPJ8veeiw== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1393667294 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145632 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > Platform - Linux Mint 12 Lisa > ... > On this platform, python-all-dev pulls in BOTH python 2.6 and 2.7 > ... > Can someone who understand how the python build and packaging works please > investigate? What does "pyversions -vr" say (needs to be run from top-level of the source tree, oddly enough)? This output is used to drive the build process (from debian/rules, line ~160) for V in $(shell pyversions -vr); do \ $(pkgpcp_python) $(MAKE) PYTHON=python$$V -C src/python install; \ done cheers. -- Nathan From nscott@redhat.com Sat Mar 1 03:57:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 45E487F3F for ; Sat, 1 Mar 2014 03:57:18 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 27CF08F8037 for ; Sat, 1 Mar 2014 01:57:18 -0800 (PST) X-ASG-Debug-ID: 1393667836-04bdf05da915da90001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id y6LiqzubDFRGP5FW for ; Sat, 01 Mar 2014 01:57:16 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s219vGXB008378 for ; Sat, 1 Mar 2014 04:57:16 -0500 Date: Sat, 1 Mar 2014 04:57:16 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <2037816778.19105579.1393667836076.JavaMail.zimbra@redhat.com> In-Reply-To: <1586629653.19105359.1393667367200.JavaMail.zimbra@redhat.com> Subject: Next PCP developers meeting MIME-Version: 1.0 X-ASG-Orig-Subj: Next PCP developers meeting Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Next PCP developers meeting Thread-Index: WLSfB3vEAW81/kdSJHSqI5GAtFQP8g== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1393667836 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145632 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi all, A week or two back the question of timing for the next devs meetup came up. These are meetings we have (semi-randomly) to chat about whatever topics are on peoples minds - open to anyone with an interest, usually go for a couple of hours & usually its around the 7am timeframe in Melbourne (UTC+11). So far nobody expressed interest in particular days that are suitable for them this time around. If you'd like to meetup (most people will be on phones, so not so much a face-to-face meetup), please let me know which weekdays suit. Also - send through any topics you wish to discuss too, and I'll send out an agenda beforehand. cheers. -- Nathan From nscott@redhat.com Sat Mar 1 04:13:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7F3927F3F for ; Sat, 1 Mar 2014 04:13:55 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 69892304048 for ; Sat, 1 Mar 2014 02:13:52 -0800 (PST) X-ASG-Debug-ID: 1393668830-04bdf05daa15f5c0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id P6ZMpTn2FQXxd8Xn for ; Sat, 01 Mar 2014 02:13:50 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s21ADnDa031327 for ; Sat, 1 Mar 2014 05:13:49 -0500 Date: Sat, 1 Mar 2014 05:13:49 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <1733342738.19106318.1393668829877.JavaMail.zimbra@redhat.com> In-Reply-To: <1787278879.19105675.1393667930409.JavaMail.zimbra@redhat.com> Subject: Release scheduling MIME-Version: 1.0 X-ASG-Orig-Subj: Release scheduling Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Release scheduling Thread-Index: cPaX8ZI55DYd78QIKp8f+RyPx7lxhg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1393668830 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145632 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi all, Just wanted to send a short note to point out that we have been releasing once a month fairly regularly for some time now, usually around the middle of the month. This seems to be about right (to me anyway) in terms of releasing new code & fixes promptly and regularly. If anyone would like to see something different, though, please ask - its certainly not set in stone. As of the last release, I've begun putting an expected release date for the *next* release with the changelog updates post-release (i.e. in the dev branch). We'll see how it goes, but it'd be nice to be able to stick to those if we can. If we can attempt to have less/no new code arrive in the week prior to release, that'd be extremely helpful too for those of us focussing on QA testing. On this schedule it wont be long till the following release, anyway! The next release is currently planned for March 14th, so lets aim for merges this week for new 3.9.1 code. Looks like most big things are close to done, although I really need to get cracking on the client getopt API code if its going to make it. cheers. -- Nathan From fche@redhat.com Sat Mar 1 21:01:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 697047F54 for ; Sat, 1 Mar 2014 21:01:40 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5531D304053 for ; Sat, 1 Mar 2014 19:01:36 -0800 (PST) X-ASG-Debug-ID: 1393729292-04cbb066e4186f00001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 9nugFKLOAJhcBP2z for ; Sat, 01 Mar 2014 19:01:32 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2231SNt020390 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sat, 1 Mar 2014 22:01:28 -0500 Received: from fche.csb (vpn-236-250.phx2.redhat.com [10.3.236.250]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2231SW0004602; Sat, 1 Mar 2014 22:01:28 -0500 Received: by fche.csb (Postfix, from userid 2569) id 953515853E; Sat, 1 Mar 2014 22:01:27 -0500 (EST) To: Nathan Scott Cc: PCP Mailing List Subject: Re: Next PCP developers meeting References: <1586629653.19105359.1393667367200.JavaMail.zimbra@redhat.com> <2037816778.19105579.1393667836076.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: Next PCP developers meeting From: fche@redhat.com (Frank Ch. Eigler) Date: Sat, 01 Mar 2014 22:01:27 -0500 In-Reply-To: <2037816778.19105579.1393667836076.JavaMail.zimbra@redhat.com> (Nathan Scott's message of "Sat, 1 Mar 2014 04:57:16 -0500 (EST)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393729292 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 nathans wrote: > [...] open to anyone with an interest, usually go for a couple of > hours & usually it's around the 7am timeframe in Melbourne (UTC+11). (= 3PM US/Eastern Standard, or after Mar. 9, = 4PM) > [...] Also - send through any topics you wish to discuss too, and > I'll send out an agenda beforehand. Great, here is a laundry list to start with: - release schedule - once-a-month useful? sustainable? - path toward grand-unified archive+live capability - intermediate steps? - virtually-glue-archives-together enough? would it require new context type? - tail -f on archives - acceptability of server/proxy process for full capability? - path toward data durability - do we really care? - whither the fche/fsync patches? - streamable archive format? - platforms - is windows status quo (mingw) going anywhere? - worth trying cygwin (posix) builds again? - which unixes/distros are of interest? release binaries for them? - how do we share build/testing load? - how to gather evidence about compatibility assumptions (sgi addons vs. multilib)? - how to entice distro reps into presence in pcp community? - FChE From tarrageros45234534@gmail.com Sun Mar 2 12:41:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,TVD_SPACE_RATIO autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 148A029DF7 for ; Sun, 2 Mar 2014 12:41:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 78A33AC002 for ; Sun, 2 Mar 2014 10:41:37 -0800 (PST) X-ASG-Debug-ID: 1393785695-04cbb066e519f880001-S8gJnT Received: from mail.incop.go.cr (mail.incop.go.cr [201.197.252.152]) by cuda.sgi.com with ESMTP id XeGUaMPIFMxYm5wA (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Sun, 02 Mar 2014 10:41:36 -0800 (PST) X-Barracuda-Envelope-From: tarrageros45234534@gmail.com X-Barracuda-Apparent-Source-IP: 201.197.252.152 Received: from mail.incop.go.cr (188.162.15.110) by METROPOLIS.net.incop.go.cr (192.168.0.224) with Microsoft SMTP Server id 14.1.270.1; Sun, 2 Mar 2014 12:40:36 -0600 From: To: Subject: Klientskie bazi Tel: +79133913837 MIME-Version: 1.0 X-ASG-Orig-Subj: Klientskie bazi Tel: +79133913837 Content-Type: text/plain Message-ID: Date: Sun, 2 Mar 2014 12:40:36 -0600 X-Brightmail-Tracker: H4sIAAAAAAAAC+NgFmpmVWLjYtmziD9PV6VaONhg3tWLLYwW06a/Y7bomLKKyWLC0lYmi54dM1ksvjYZW0z6doPRYkP7WiaLl29+sFhcn7eP2WL6uVZ2i8ZLR9gtevr7WCwevO9ksXi/sZfd4t6nbYwWhxdOYbTYeHIzi8WnPQvYLO5fO81ice7dW2aLA/38DqIBDFGsmXlJ+RUJrBk7X9cWKFesuHGaqYFRrouRk0NIYDWjxMeWVBCbTUBGYtHPdnYQW0RASqJj1WpmEFtYQEvi3cczbCA2r4CgxMmZT1hAbGYBCYmDL14wQ8R9JR7cvMUMMVNT4u6kd2A2i4CKxKFPr8BmSggESmz4vYIVwnaUmP1vAxuE7SSxetEXdpj4nWefGbsYOcDsA6f1IMI6Em8mzmaCsK0kWjpvsEKUREqc3SA7gVFwFpLjZiE5bgEj0ypGKV/XkCD/AH8fz2C9vNQSvcy85PwCvfR8veSiTYzAqDmwguHBDsarPQ6HGCU5mJREef+ePxckxJeUn1KZkVicEV9UmpNafIhRgoNHSYS3/AJQjre4IDG3ODMdJiXDwaEkwdsCkhIsSk1PrUjLzClJLYJIn2KUlBLnzQRJCoD0ZZTmweUuMcpKCfNOOwaU4ylILcrNLIGIw1LMLUZBjgNMQix5+XmpUlCxV4ziHIxKwrw9IBN5MvNK4A55BXQjE9CNomFgN5YkIqSkGhhXTzlbNG3rskvFnyJPVn58ZvliV+2EeHGriIPCQlvtejxnB+/eOXPZgdSv+s1W53fGfb67pvDiElvhIIMrW90k2uete6N4h7lexrbz0Xap+v6GnlST9vQ7xkn2C+6c+/yl/s2KyHn59U/fbP38SPAVN2Pay7tqOstuSyQ5qfB/MZLIjQpfuj1LiaU4I9FQi7moOBEA3uaGrRYDAAA= X-Barracuda-Connect: mail.incop.go.cr[201.197.252.152] X-Barracuda-Start-Time: 1393785696 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145670 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header Klientskie bazi Tel: +79133913837 From nscott@redhat.com Sun Mar 2 23:12:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7DF5B29DF7 for ; Sun, 2 Mar 2014 23:12:22 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 43555304043 for ; Sun, 2 Mar 2014 21:12:21 -0800 (PST) X-ASG-Debug-ID: 1393823536-04bdf05daa1cdff0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id APdVeur0tX22IRcQ for ; Sun, 02 Mar 2014 21:12:16 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s235CGSL019461 for ; Mon, 3 Mar 2014 00:12:16 -0500 Date: Mon, 3 Mar 2014 00:12:16 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <59530615.19409671.1393823536411.JavaMail.zimbra@redhat.com> In-Reply-To: <158296369.19409515.1393823444511.JavaMail.zimbra@redhat.com> Subject: pcp-gui updates: global-font & saved-host preferences MIME-Version: 1.0 X-ASG-Orig-Subj: pcp-gui updates: global-font & saved-host preferences Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp-gui updates: global-font & saved-host preferences Thread-Index: knueeJou65l4Rq/jz8qqQhigvf+wLA== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1393823536 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145684 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp-gui.git dev src/chart/chart.cpp | 32 +- src/chart/chart.h | 2 src/chart/gadget.h | 1 src/chart/hostdialog.cpp | 16 + src/chart/hostdialog.h | 3 src/chart/main.cpp | 115 ++++++++-- src/chart/main.h | 16 + src/chart/pmchart.cpp | 17 + src/chart/pmchart.h | 1 src/chart/settingsdialog.cpp | 483 +++++++++++++++++++++++++++++++++---------- src/chart/settingsdialog.h | 29 ++ src/chart/settingsdialog.ui | 445 +++++++++++++++++++++++++++++++++++++-- src/chart/statusbar.cpp | 15 - src/chart/statusbar.h | 1 src/chart/timeaxis.cpp | 5 src/chart/timeaxis.h | 1 16 files changed, 1011 insertions(+), 171 deletions(-) commit 7fdde427947c94ee51947eb25e96727adf6e98aa Author: Nathan Scott Date: Mon Mar 3 16:09:34 2014 +1100 Add support for a global font preference setting The Font preference tab is now fully functional - this tab allows one to modify font family, style and size on the fly and to remember that setting for future pmchart invocations. It has immediate effect. Some additional work is done in preference save/restore code to clear settings if the match the defaults. We should do this kind of thing for the other preferences also, but that is left as an exercise for another day. Resolves Red Hat bugzilla #1069943. commit 8268b91bee6d1b2e4f5c5539519b4190f06bfae0 Author: Nathan Scott Date: Sat Mar 1 08:05:44 2014 +1100 Add preference setting save/restore for saved hosts and fonts The concept of a "Saved Hosts" list is introduced into pmchart. This list is intended to be useful for remembering an oft-used set of hosts (perhaps a local cluster) such that the hostnames to not need to be added via command line or interaction every time pmchart is invoked. This list can be interactively modified (hosts added & culled) using the Hosts tab on the preference dialog. A new -H option (using pmstat convention) is added to allow the list to be set using the command line too. Some work for remembering the users prefered font setting is also included in this commit, bit too intertwined to extract. Resolves Red Hat bugzilla #1069947. From mould78@topeasy23.eicp.net Mon Mar 3 06:05:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_MESSAGE,MIME_HTML_ONLY autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 253C07F54 for ; Mon, 3 Mar 2014 06:05:12 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 092F88F804B for ; Mon, 3 Mar 2014 04:05:08 -0800 (PST) X-ASG-Debug-ID: 1393848294-04cbb066e71cd640001-S8gJnT Received: from topeasy23.eicp.net ([182.96.174.4]) by cuda.sgi.com with SMTP id V9eToweXn1AdglJH for ; Mon, 03 Mar 2014 04:04:59 -0800 (PST) X-Barracuda-Envelope-From: mould78@topeasy23.eicp.net X-Barracuda-Apparent-Source-IP: 182.96.174.4 Received: from 6PHZXEVNS4DKT4N[127.0.0.1] by 6PHZXEVNS4DKT4N[127.0.0.1] (SMTPD32); Mon, 3 Mar 2014 19:59:31 +0800 From: "mould78@topeasy23.eicp.net" Subject: RE: SUNMAS Health Care TENS/EMS Machine To: "pcp" X-ASG-Orig-Subj: RE: SUNMAS Health Care TENS/EMS Machine MIME-Version: 1.0 Sender: mould78@topeasy23.eicp.net Reply-To: sangmaisi3@163.com Date: Mon, 3 Mar 2014 19:59:31 +0800 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Barracuda-Connect: UNKNOWN[182.96.174.4] X-Barracuda-Start-Time: 1393848295 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.24 X-Barracuda-Spam-Status: No, SCORE=0.24 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, MIME_HTML_ONLY, MISSING_MID, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145693 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.14 MISSING_MID Missing Message-Id: header 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Message-Id: <20140303120508.38D51106C6A5@cuda.sgi.com>

Dear Purchasing Manager,


Hello, this is Sunmas (H.K) Trading Limited, our factory is located in China which is a professional manufacturer of Health and Beauty related massage products. We have stronge advantages in R&D and OEM service for nearly 10 years old. And the certificates approved are ISO13485, FDA, Medical CE and CMDCAS. So we want to avail ourselves of opportunity establishing business relation with you.

Pleas feel free to send email  to get more information.


Best regards

Sunmas (H.K) Trading Limited

From noreply@release.debian.org Mon Mar 3 10:39:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id DF5FD7F4E for ; Mon, 3 Mar 2014 10:39:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id B9581304032 for ; Mon, 3 Mar 2014 08:39:26 -0800 (PST) X-ASG-Debug-ID: 1393864760-04cbb066e71e4180001-S8gJnT Received: from picconi.debian.org (picconi.debian.org [5.153.231.3]) by cuda.sgi.com with ESMTP id hZcvu61Ihd9PseUG (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Mon, 03 Mar 2014 08:39:21 -0800 (PST) X-Barracuda-Envelope-From: noreply@release.debian.org X-Barracuda-Apparent-Source-IP: 5.153.231.3 Received: from franck.debian.org ([138.16.160.12]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by picconi.debian.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1WKVtf-0003WP-HL for pcp-gui@packages.debian.org; Mon, 03 Mar 2014 16:39:19 +0000 Received: from release by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WKVtc-0002Lx-7b; Mon, 03 Mar 2014 16:39:16 +0000 From: Debian testing watch Precedence: bulk X-Trille: 0.120315.1711 Subject: pcp-gui 1.5.12 MIGRATED to testing X-Testing-Watch-Package: pcp-gui X-ASG-Orig-Subj: pcp-gui 1.5.12 MIGRATED to testing X-Testing-Watch-Version: 1.5.12 To: pcp-gui@packages.debian.org Message-Id: Sender: Release Managers Date: Mon, 03 Mar 2014 16:39:16 +0000 Delivered-To: pcp-gui@packages.debian.org X-Barracuda-Connect: picconi.debian.org[5.153.231.3] X-Barracuda-Start-Time: 1393864761 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145699 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header FYI: The status of the pcp-gui source package in Debian's testing distribution has changed. Previous version: 1.5.11 Current version: 1.5.12 -- This email is automatically generated once a day. As the installation of new packages into testing happens multiple times a day you will receive later changes on the next day. See http://release.debian.org/testing-watch/ for more information. From minnus@buffalo.edu Mon Mar 3 14:59:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E0E277F50 for ; Mon, 3 Mar 2014 14:59:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 714FE304032 for ; Mon, 3 Mar 2014 12:59:17 -0800 (PST) X-ASG-Debug-ID: 1393880355-04bdf05dac210340001-S8gJnT Received: from mtareserve1.acsu.buffalo.edu (mtareserve6.acsu.buffalo.edu [128.205.6.4]) by cuda.sgi.com with ESMTP id 9oeRaRW8sJepgv6E for ; Mon, 03 Mar 2014 12:59:15 -0800 (PST) X-Barracuda-Envelope-From: minnus@buffalo.edu X-Barracuda-Apparent-Source-IP: 128.205.6.4 Received: from localmailD.acsu.buffalo.edu (localmaild.acsu.buffalo.edu [128.205.5.208]) by mtareserve1.acsu.buffalo.edu (Postfix) with ESMTP id 4269C1BD1; Mon, 3 Mar 2014 15:59:15 -0500 (EST) Received: from localmailD.acsu.buffalo.edu (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id 3896D102F6; Mon, 3 Mar 2014 15:59:15 -0500 (EST) Received: from localmailD.acsu.buffalo.edu (localhost [127.0.0.1]) by localmailD.acsu.buffalo.edu (Postfix) with ESMTP id 0F0D2102EE; Mon, 3 Mar 2014 15:59:14 -0500 (EST) Received: from smtp.buffalo.edu (smtp4.acsu.buffalo.edu [128.205.5.229]) by localmailD.acsu.buffalo.edu (Prefixe) with ESMTP id DC4B7102ED; Mon, 3 Mar 2014 15:59:13 -0500 (EST) Received: from gilmour.ccr.buffalo.edu (gilmour.ccr.buffalo.edu [128.205.40.13]) (Authenticated sender: minnus@buffalo.edu) by smtp.buffalo.edu (Postfix) with ESMTPSA id CBE57A81C; Mon, 3 Mar 2014 15:59:13 -0500 (EST) Message-ID: <5314ED21.4060309@buffalo.edu> Date: Mon, 03 Mar 2014 15:59:13 -0500 From: Martins Innus User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com, Ben Myers , Max Matveev Subject: Re: [pcp] nfsclient pmda References: <52F3A564.4060007@buffalo.edu> <1469416634.21700255.1391728771761.JavaMail.root@redhat.com> <742242243.21951337.1391769716120.JavaMail.root@redhat.com> <530D0904.2090804@buffalo.edu> <1661706871.16390260.1393364346293.JavaMail.zimbra@redhat.com> <5314EA02.9060906@buffalo.edu> X-ASG-Orig-Subj: Re: [pcp] nfsclient pmda In-Reply-To: <5314EA02.9060906@buffalo.edu> Content-Type: multipart/mixed; boundary="------------070502090204020807050500" X-PM-EL-Spam-Prob: : 8% X-Barracuda-Connect: mtareserve6.acsu.buffalo.edu[128.205.6.4] X-Barracuda-Start-Time: 1393880355 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145708 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. --------------070502090204020807050500 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Sorry if this duplicates, I got a rejection message due to the attachments. Trying again with a zip file. Martins On 3/3/14 3:45 PM, Martins Innus wrote: > Nathan, > >> Have a look at the src/pmdas/simple/pmdasimple.perl code - this PMDA has >> both styles. The $color_indom uses the array style and $now_indom >> uses a >> hash (under the covers, in PCP::PMDA, the latter translates to pmdaCache >> use). >> > OK. I think I got this working with a hash. I can't figure out how > to get confirmation that it actually is using pmdaCache though. > > I think I addressed most of the issues raised previously, but wanted > to get some feedback on a couple of items before finishing up. > > 1. Types should now match kernel types, let me know if you think I > missed any. > > 2. I dropped the tcp identifier under xprt, and just created a union > of all the possible types across tcp, udp and rdma. I have only > tested tcp. I hope to test udp shortly. I don't think I'll be able > to test rdma in the near future as we don't use it in production > currently. > > 3. Used mountpoints in the instance domain. I think this is the best > we can do. Its what mountstats itself is using to partition the data > and you'd have the same issue of double (or triple, etc) counting the > data if you looked at /proc/self/mounstats vs this pmda. I'm up for > other suggestions if there are any. > > 4. There didn't seem to be any consensus on > nfsclient.ops.getattr.count vs. nfsclient.opts.count.getattr so I left > it. Let me know if it should be changed. > > 5. My biggest question is what to do about the nfs3, nfs4 vs nfs4.1 > per-op statistics. See the attached pdf, one column per version, > matching types aligned. There are 22, 47 and 53 stats for v3, v4 and > v4.1 respectively. Should it be treated the same as the tcp/udp/rdma > case and just zero out the ones that dont apply? I haven't > implemented this yet, but if that's what you think should be done, it > should be pretty straightforward to do. > > 6. Finally, how much of the opts, caps, and sec fields should be > parsed out? I grabbed a couple for now that are obviously useful, but > can do them all if that's the way to go. Again, similar issue to the > previous point with respect to options that pertain to nfs versions. > > Thanks for any feedback. > > Martins --------------070502090204020807050500 Content-Type: application/octet-stream; x-mac-type="0"; x-mac-creator="0"; name="nfsclient" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nfsclient" 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 --------------070502090204020807050500-- From kenj@internode.on.net Mon Mar 3 15:49:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B32E77F53 for ; Mon, 3 Mar 2014 15:49:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9F3FA304048 for ; Mon, 3 Mar 2014 13:49:38 -0800 (PST) X-ASG-Debug-ID: 1393883375-04cbb054b808d80001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id TKjMI1YUIKhNgCbX for ; Mon, 03 Mar 2014 13:49:35 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Aj0aALD3FFN20adJPGdsb2JhbAANTYNBiBS1GYVDAwEBAQE4g1kwDRYYAwIBAgExJwYCAQEXsw2hQZMYBJlulDqBVCQ Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl6.internode.on.net with ESMTP; 04 Mar 2014 08:19:34 +1030 Message-ID: <5314F8FD.8010807@internode.on.net> Date: Tue, 04 Mar 2014 08:49:49 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - grab bag Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates - grab bag Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393883375 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145710 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev Makepkgs | 19 +++++++++++- build/tar/postinstall.tail | 62 +++++++++++++++++++++++++++++----------- build/tar/preinstall.head.in | 6 +++ configure | 49 +++++++++++++++++++++++-------- configure.in | 50 ++++++++++++++++++++++++-------- debian/control.master | 2 - qa/admin/check-vm | 4 ++ qa/qa_hosts.master | 12 +++++++ src/include/builddefs.in | 18 +++++++++++ src/libpcp/src/check-statics | 1 src/libpcp/src/interp.c | 52 +++++++++++++++++++++------------ src/libpcp_pmcd/src/GNUmakefile | 2 - src/pmdas/freebsd/.gitignore | 5 +++ src/pmdas/freebsd/GNUmakefile | 1 src/pmie/examples/GNUmakefile | 3 + 15 files changed, 222 insertions(+), 64 deletions(-) commit 5c2d094bab2190a8d5f410d027d90a7f8031b8cc Author: Ken McDonell Date: Tue Mar 4 08:29:50 2014 +1100 tar postinstall - changes to support user/group setup for FreeBSD commit 34c2b3a8c7071a456802d7c777fef8cba849451c Author: Ken McDonell Date: Tue Mar 4 07:56:36 2014 +1100 pmie/examples/GNUmakefile - safer use of sed -i Safe portable use demands -i not simply -i ... and then clean up the temporary file that remains. commit e81ebc96b435217a7a2e823c2e4106fb2da624d5 Author: Ken McDonell Date: Tue Mar 4 07:08:28 2014 +1100 FreeBSD PMDA - better cleanup during build, add .gitignore commit e0f5ac56b3c05ea3f52d978fa25b91f43c4f97f5 Author: Ken McDonell Date: Tue Mar 4 06:58:08 2014 +1100 builddefs.in - Perl packaging does not work for FreeBSD I've spent 2 days on this and I'm giving up ... for the time being it is more important to get the build to finish without errors even if I cannot get the Perl pieces into the binary tarball. commit 3f941847d07d5345c797e969f1b6c3d0f7451326 Author: Ken McDonell Date: Tue Mar 4 06:56:10 2014 +1100 Makepkgs - sniff to find where gmake is hiding On the *BSD platforms, I got tired of forgetting to set $MAKE, as in MAKE=gmake ./Makepkgs so, now Makepkgs tries to figure out which of the commands make or gmake is really GNU make. commit 145470738e75428b158fe647ae6502e16ba55943 Author: Ken McDonell Date: Mon Mar 3 16:32:39 2014 +1100 builddefs.in - FreeBSD gmake WAR Odd behaviour of gmake on FreeBSD ... default rule for linking C apps from .o files does not work with out compilation flags. The solution here is a bit of a sledge hammer but it apparently works and it ONLY applies to FreeBSD. commit d6133203100df0957059cb1e392d43533c259742 Author: Ken McDonell Date: Mon Mar 3 16:30:57 2014 +1100 libpcp_pmcd/src/GNUmakefile - fix for FreeBSD and ENABLE_PROBES If we're lucky it can be made to work on FreeBSD as well. commit 2755dfed018e2e01ac5f015561a676d6bd89a603 Author: Ken McDonell Date: Mon Mar 3 16:26:05 2014 +1100 qa_hosts.master - more Kenj QA hosts commit 721a3a0d8cf60c5f9520d772422c92644b52a08c Author: Ken McDonell Date: Mon Mar 3 16:23:48 2014 +1100 qa/admin/check-vm - more stuff we need pkg-config for debian builds python-all-dev for debian builds commit 20b00132ff007578169e4e70ec9c49ac75227a70 Author: Ken McDonell Date: Mon Mar 3 16:22:26 2014 +1100 tar - preinstall guard If PCP not already installed, trying to stop things is not going to be helpful. commit 2085106f341feee252b6201b2279dce6dbc1fc8f Author: Ken McDonell Date: Mon Mar 3 16:21:30 2014 +1100 tar postinstall - be more defensive Don't assume directories necessarity exist before you try to chown them. commit e6b29a8b139af37aaaab43153703edd36eaca9b0 Author: Ken McDonell Date: Mon Mar 3 16:17:21 2014 +1100 configure - static probes for freebsd The existence of is not enough fo FreeBSD ... the header can be there, dtrace can be installed, but if the kernel is not configured in the right way, dtrace -h fails and with it goes the build. Be tougher before deciding that HAVE_STATIC_PROBES should be set. commit 74ff09d683c4711acf76199ff846dcd0d7117324 Author: Ken McDonell Date: Mon Mar 3 13:06:30 2014 +1100 libpcp/interp.c - refactor code Relax! This is purely cosmetic to be more transparent about how the state of observed values and records is managed during interpolation. There is no functional change here and with these changes, all related QA still pases. This is a new code baseline that will be used to fix the bad performance that Frank has observed in archives with lots of records. commit ad8ce9862c074d622028f70e94ab5cbcbd75185a Author: Ken McDonell Date: Mon Mar 3 13:02:51 2014 +1100 debian build - partial reinstatement of Build-Depends for libmicrohttpd-dev Following Nathan's comments this half-reverts commit 1c6e30c7 so libmicrohttpd-dev is back in the Build-Depends list, but without a base version number. We leave it to the configure and build magic in PCP-land to decide if libmicrohttpd-dev is new enough to warrant building and packaging pcp-webapi. commit f724ae8a097058cd874883eee05dc7e6506cfb5b Author: Ken McDonell Date: Fri Feb 28 08:11:46 2014 +1100 qa/admin/check-vm - add g++ to the set of build gadgets we need From scox@redhat.com Mon Mar 3 20:16:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CD0487F4E for ; Mon, 3 Mar 2014 20:16:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 58099AC004 for ; Mon, 3 Mar 2014 18:16:37 -0800 (PST) X-ASG-Debug-ID: 1393899392-04cb6c5677209400001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id X2ZSTs0HCDjCDRkx for ; Mon, 03 Mar 2014 18:16:33 -0800 (PST) X-Barracuda-Envelope-From: scox@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s242GV89014333 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 3 Mar 2014 21:16:31 -0500 Received: from [10.10.52.44] (vpn-52-44.rdu2.redhat.com [10.10.52.44]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s242GUw3012702; Mon, 3 Mar 2014 21:16:30 -0500 Message-ID: <5315377E.3050408@redhat.com> Date: Mon, 03 Mar 2014 21:16:30 -0500 From: Stan Cox User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: PCP Subject: Re: [pcp] datetime enhancements References: <53042BF5.5070704@redhat.com> <2061040535.14512907.1393224703952.JavaMail.zimbra@redhat.com> <53111DD7.60405@redhat.com> <1141611316.19105110.1393666896720.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] datetime enhancements In-Reply-To: <1141611316.19105110.1393666896720.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393899393 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 commit: dbe74ebf96d > (Ah, so this is a mystery - RHEL 6.3 here FWIW, I can check others too > if its not reproducible on current Fedora). I have a RHEL7 vm and I built there with no problem. I will try on a RHEL6 box. > POSIX sadly no good on Windows FWIW ... would recommend finding somewhere in > libpcp doing something similar (hopefully something exists, not sure off the > top of my head though), and do it that way. Nothing appears to use gmtime_r I reversed back to gmtime and put locking around it. > *nod*, plus use of the PCP-tz-option aware APIs above. Switched to pmLocaltime and __pmMktime > we return success AND we malloc'd errmsg. In this case, we need to free the initial errmsg, don't we? Right...done From nscott@redhat.com Mon Mar 3 20:45:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3979D7F4E for ; Mon, 3 Mar 2014 20:45:23 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id DB338304039 for ; Mon, 3 Mar 2014 18:45:19 -0800 (PST) X-ASG-Debug-ID: 1393901113-04bdf05daa226a40001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id YXGQQ2i6ZkeGktlF for ; Mon, 03 Mar 2014 18:45:13 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s242jC2G006477 for ; Mon, 3 Mar 2014 21:45:12 -0500 Date: Mon, 3 Mar 2014 21:45:12 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <1382998947.20126248.1393901112866.JavaMail.zimbra@redhat.com> In-Reply-To: <1930823238.20126153.1393901089861.JavaMail.zimbra@redhat.com> Subject: pcp updates: kenj merges, pmdazswap MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: kenj merges, pmdazswap Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: kenj merges, pmdazswap Thread-Index: 3fBVb1K+2BP6WIWPaY1Y72TPe2SX6w== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1393901113 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145722 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev Makepkgs | 19 + build/tar/postinstall.tail | 62 ++++-- build/tar/preinstall.head.in | 6 configure | 62 +++++- configure.in | 65 +++++- debian/.gitignore | 1 debian/GNUmakefile | 15 + debian/control | 378 --------------------------------------- debian/control.master | 373 ++++++++++++++++++++++++++++++++++++++ debian/control.webapi | 8 debian/pcp-webapi.dirs | 4 man/man1/GNUmakefile | 1 man/man1/pmdazswap.1 | 66 ++++++ qa/972 | 86 ++++++++ qa/972.out | 87 ++++++++ qa/973 | 99 ++++++++++ qa/973.out | 28 ++ qa/admin/check-vm | 4 qa/common.filter | 4 qa/group | 2 qa/qa_hosts.master | 12 + src/include/builddefs.in | 18 + src/libpcp/src/check-statics | 1 src/libpcp/src/interp.c | 52 +++-- src/libpcp_pmcd/src/GNUmakefile | 2 src/pmdas/GNUmakefile | 2 src/pmdas/freebsd/.gitignore | 5 src/pmdas/freebsd/GNUmakefile | 1 src/pmdas/zswap/.gitignore | 1 src/pmdas/zswap/GNUmakefile | 37 +++ src/pmdas/zswap/Install | 28 ++ src/pmdas/zswap/Remove | 25 ++ src/pmdas/zswap/pmdazswap.python | 188 +++++++++++++++++++ src/pmie/examples/GNUmakefile | 3 src/pmns/stdpmid.pcp | 1 src/pmwebapi/pmwebapi.c | 2 src/python/pmda.c | 4 37 files changed, 1300 insertions(+), 452 deletions(-) commit 8ae4278897f45b98ecae8a663fe27a81fdb83f0c Author: Nathan Scott Date: Tue Mar 4 13:33:38 2014 +1100 Fix a python module bug for PMDAs without instance domains The interface to the pmdaInit(3) routine in the python wrapper code was not correctly initializing all fields. This meant in the case of a PMDA with no indoms (nindoms == 0) we passed an uninitialised buffer pointer in. This should be harmless, but the pmdaInit(3) code is very strict in checking its parameters and refuses to proceed in this case when the buffer pointer is not NULL. The actual text of the error produced is: "pmdaInit: PMDA xxx: indoms not consistent with nindoms" commit b37d42d8743863bbc4bb74f84b0bb351ea44e519 Author: Nathan Scott Date: Tue Mar 4 13:15:42 2014 +1100 Add the zswap PMDA with Linux compressed swap metrics A new python PMDA exporting the zswap statistics exported by the kernel module below /sys/kernel/debug/zswap. This is a nice and simple introductory python PMDA, for anyone looking to get started on python PMDA development. Tests qa/972 and qa/973 exercise the new functionality. commit 2d96f756deb5a94c5800c26d441a654d157bdb90 Merge: 6ec1d4a 5c2d094 Author: Nathan Scott Date: Tue Mar 4 09:09:22 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/kenj/pcp into dev commit 5c2d094bab2190a8d5f410d027d90a7f8031b8cc Author: Ken McDonell Date: Tue Mar 4 08:29:50 2014 +1100 tar postinstall - changes to support user/group setup for FreeBSD commit 34c2b3a8c7071a456802d7c777fef8cba849451c Author: Ken McDonell Date: Tue Mar 4 07:56:36 2014 +1100 pmie/examples/GNUmakefile - safer use of sed -i Safe portable use demands -i not simply -i ... and then clean up the temporary file that remains. commit e81ebc96b435217a7a2e823c2e4106fb2da624d5 Author: Ken McDonell Date: Tue Mar 4 07:08:28 2014 +1100 FreeBSD PMDA - better cleanup during build, add .gitignore commit e0f5ac56b3c05ea3f52d978fa25b91f43c4f97f5 Author: Ken McDonell Date: Tue Mar 4 06:58:08 2014 +1100 builddefs.in - Perl packaging does not work for FreeBSD I've spent 2 days on this and I'm giving up ... for the time being it is more important to get the build to finish without errors even if I cannot get the Perl pieces into the binary tarball. commit 3f941847d07d5345c797e969f1b6c3d0f7451326 Author: Ken McDonell Date: Tue Mar 4 06:56:10 2014 +1100 Makepkgs - sniff to find where gmake is hiding On the *BSD platforms, I got tired of forgetting to set $MAKE, as in MAKE=gmake ./Makepkgs so, now Makepkgs tries to figure out which of the commands make or gmake is really GNU make. commit 145470738e75428b158fe647ae6502e16ba55943 Author: Ken McDonell Date: Mon Mar 3 16:32:39 2014 +1100 builddefs.in - FreeBSD gmake WAR Odd behaviour of gmake on FreeBSD ... default rule for linking C apps from .o files does not work with out compilation flags. The solution here is a bit of a sledge hammer but it apparently works and it ONLY applies to FreeBSD. commit d6133203100df0957059cb1e392d43533c259742 Author: Ken McDonell Date: Mon Mar 3 16:30:57 2014 +1100 libpcp_pmcd/src/GNUmakefile - fix for FreeBSD and ENABLE_PROBES If we're lucky it can be made to work on FreeBSD as well. commit 2755dfed018e2e01ac5f015561a676d6bd89a603 Author: Ken McDonell Date: Mon Mar 3 16:26:05 2014 +1100 qa_hosts.master - more Kenj QA hosts commit 721a3a0d8cf60c5f9520d772422c92644b52a08c Author: Ken McDonell Date: Mon Mar 3 16:23:48 2014 +1100 qa/admin/check-vm - more stuff we need pkg-config for debian builds python-all-dev for debian builds commit 20b00132ff007578169e4e70ec9c49ac75227a70 Author: Ken McDonell Date: Mon Mar 3 16:22:26 2014 +1100 tar - preinstall guard If PCP not already installed, trying to stop things is not going to be helpful. commit 2085106f341feee252b6201b2279dce6dbc1fc8f Author: Ken McDonell Date: Mon Mar 3 16:21:30 2014 +1100 tar postinstall - be more defensive Don't assume directories necessarity exist before you try to chown them. commit e6b29a8b139af37aaaab43153703edd36eaca9b0 Author: Ken McDonell Date: Mon Mar 3 16:17:21 2014 +1100 configure - static probes for freebsd The existence of is not enough fo FreeBSD ... the header can be there, dtrace can be installed, but if the kernel is not configured in the right way, dtrace -h fails and with it goes the build. Be tougher before deciding that HAVE_STATIC_PROBES should be set. commit 74ff09d683c4711acf76199ff846dcd0d7117324 Author: Ken McDonell Date: Mon Mar 3 13:06:30 2014 +1100 libpcp/interp.c - refactor code Relax! This is purely cosmetic to be more transparent about how the state of observed values and records is managed during interpolation. There is no functional change here and with these changes, all related QA still pases. This is a new code baseline that will be used to fix the bad performance that Frank has observed in archives with lots of records. commit ad8ce9862c074d622028f70e94ab5cbcbd75185a Author: Ken McDonell Date: Mon Mar 3 13:02:51 2014 +1100 debian build - partial reinstatement of Build-Depends for libmicrohttpd-dev Following Nathan's comments this half-reverts commit 1c6e30c7 so libmicrohttpd-dev is back in the Build-Depends list, but without a base version number. We leave it to the configure and build magic in PCP-land to decide if libmicrohttpd-dev is new enough to warrant building and packaging pcp-webapi. commit 6ec1d4a0233cde9e119daa7178ebd31a2abeb856 Author: Nathan Scott Date: Mon Mar 3 11:06:40 2014 +1100 Trivial comment typo fix in pmwebapi.c commit f724ae8a097058cd874883eee05dc7e6506cfb5b Author: Ken McDonell Date: Fri Feb 28 08:11:46 2014 +1100 qa/admin/check-vm - add g++ to the set of build gadgets we need commit 847526c31d7d4b5e255831cbdd73fd411c6e30c7 Author: Ken McDonell Date: Fri Feb 28 06:46:48 2014 +1100 debian build - remove Build-Depends for libmicrohttpd-dev We handle this in the configure and packaging now ... if the right libmicrohttpd-dev is installed we build the pcp-webapi package, otherwise it is neither built nor packaged. commit f878ada6a7a0c72f526facffa5f74475d8decde7 Merge: aa326cf c3ef04e Author: Ken McDonell Date: Thu Feb 27 19:11:55 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev commit aa326cf2074a56483cf09c94139b3cf477dcdaeb Author: Ken McDonell Date: Thu Feb 27 19:06:48 2014 +1100 add debian/control to .gitignore commit 9c970916176e19e714c93bd45f428dd04995295e Author: Ken McDonell Date: Thu Feb 27 09:22:21 2014 +1100 debian packaging - changes for optional packages Recent problems packaging pcp-webapi have highlighted the fact that our Debian packaging does not have a way to include optional packages based on what pieces we're able to build. Splitting debian/control to debian/control.master (the non-optional packages) and debian/control.foo files for each optional pcp-foo package, then adding configure, build and makefile glue to make this all work. Note debian/control needs to exist _very_ early in the Debian packaging workflow, so debian/control is remade at the end of the configure script. commit fe9e3170eda4d45906999d916b4117a300a01d0f Author: Ken McDonell Date: Thu Feb 27 08:24:33 2014 +1100 debian packaging - minor dirs control issue pcp-webapi.dirs contained the wrong directory list ... seems to have been copied from pcp-manager.dirs .. fix to match pcp-webapi package. commit 53c89b60222fe866ed9d89baf13461a29f7ff21a Merge: 0be246e feb6204 Author: Ken McDonell Date: Tue Feb 25 07:45:38 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev commit 0be246e86e2cf3d0b58888b74b7fedb32f6d091b Merge: 3011a76 1b7cda1 Author: Ken McDonell Date: Mon Feb 24 18:24:58 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev commit 3011a768de27a3dee8290302365a87fdc959c16a Merge: 60d1930 ec0ab97 Author: Ken McDonell Date: Wed Feb 19 14:29:30 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev From nscott@redhat.com Mon Mar 3 21:30:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 267D57F4E for ; Mon, 3 Mar 2014 21:30:18 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9A6F0AC002 for ; Mon, 3 Mar 2014 19:30:14 -0800 (PST) X-ASG-Debug-ID: 1393903809-04cbb054b91cc70001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id FKg8okDEBKcJ9dFn for ; Mon, 03 Mar 2014 19:30:09 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s243U6M0013631; Mon, 3 Mar 2014 22:30:06 -0500 Date: Mon, 3 Mar 2014 22:30:06 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1318446533.20135251.1393903806180.JavaMail.zimbra@redhat.com> In-Reply-To: <5314F8FD.8010807@internode.on.net> References: <5314F8FD.8010807@internode.on.net> Subject: Re: [pcp] pcp updates - grab bag MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates - grab bag Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates - grab bag Thread-Index: a0d1olbVXLdWSdgcBG52ll+xNPN/og== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1393903809 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145723 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Ken, ----- Original Message ----- > > Changes committed to git://oss.sgi.com/kenj/pcp.git dev > [...] > commit 3f941847d07d5345c797e969f1b6c3d0f7451326 > Author: Ken McDonell > Date: Tue Mar 4 06:56:10 2014 +1100 > > Makepkgs - sniff to find where gmake is hiding > > On the *BSD platforms, I got tired of forgetting to set $MAKE, as in > MAKE=gmake ./Makepkgs > so, now Makepkgs tries to figure out which of the commands make or > gmake is really GNU make. > This change appears to trip up pmdaproc.sh in the following way... [root@smash simple]# ./Install You will need to choose an appropriate configuration for installation of the "simple" Performance Metrics Domain Agent (PMDA). collector collect performance statistics on this system monitor allow this system to monitor local and/or remote systems both collector and monitor configuration for this system Please enter c(ollector) or m(onitor) or b(oth) [b] Install simple as a daemon or python or perl or dso agent? [daemon] PMCD should communicate with the simple daemon via a pipe or a socket? [pipe] Install: Arrgh, PCP devel environment required to install this PMDA [root@smash simple]# [... edit pmdaproc.sh, ~line 1083...] elif [ -f Makefile -o -f makefile -o -f GNUmakefile ] then # $PCP_MAKE_PROG may contain command line args ... executable # is first word # if [ ! -f "`echo $PCP_MAKE_PROG | sed -e 's/ .*//'`" -o ! -f "$PCP_INC_DIR/pmda.h" ] then echo "$prog: Arrgh, PCP devel environment required to install this PMDA" exit 1 fi [root@smash simple]# grep MAKE /etc/pcp.conf PCP_MAKE_PROG=make [root@smash simple]# So, I suspect we used to have a full path there (hence test -f succeeds) but now we no longer do...? cheers. -- Nathan From nscott@redhat.com Mon Mar 3 23:35:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A08A97F4E for ; Mon, 3 Mar 2014 23:35:03 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 80202304048 for ; Mon, 3 Mar 2014 21:35:03 -0800 (PST) X-ASG-Debug-ID: 1393911298-04cbb054b8219d0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id OdYExsWtryQKkm3m; Mon, 03 Mar 2014 21:34:58 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s245Yqtx000981; Tue, 4 Mar 2014 00:34:52 -0500 Date: Tue, 4 Mar 2014 00:34:52 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Martins Innus Cc: pcp@oss.sgi.com, Ben Myers , Max Matveev Message-ID: <1369468338.20153383.1393911292559.JavaMail.zimbra@redhat.com> In-Reply-To: <5314EA02.9060906@buffalo.edu> References: <52F3A564.4060007@buffalo.edu> <1469416634.21700255.1391728771761.JavaMail.root@redhat.com> <742242243.21951337.1391769716120.JavaMail.root@redhat.com> <530D0904.2090804@buffalo.edu> <1661706871.16390260.1393364346293.JavaMail.zimbra@redhat.com> <5314EA02.9060906@buffalo.edu> Subject: Re: [pcp] nfsclient pmda MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] nfsclient pmda Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: nfsclient pmda Thread-Index: n2ANm1mEEwDuD1qJ8eNwsj375aPx7w== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1393911298 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145726 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Martins, ----- Original Message ----- > Nathan, > > > Have a look at the src/pmdas/simple/pmdasimple.perl code - this PMDA has > > both styles. The $color_indom uses the array style and $now_indom uses a > > hash (under the covers, in PCP::PMDA, the latter translates to pmdaCache > > use). > > > OK. I think I got this working with a hash. I can't figure out how to > get confirmation that it actually is using pmdaCache though. A dirty hack^W^Wneat trick would be to attach to the pmdanfsclient perl process with gdb, set a breakpoint in pmdaCacheLookup then verify that it is triggered. Or look inside the src/perl/PMDA/PMDA.xs update_indom code, and convince yourself that your add_indom call with a hash will always end up calling update_hash_indom. >From inspection, your code is correct - don't worry about the above. :) > I think I addressed most of the issues raised previously, but wanted to > get some feedback on a couple of items before finishing up. *nod* - looking good, nice to see alot of the TODO items vanishing. > 1. Types should now match kernel types, let me know if you think I > missed any. Looks fine. This line... open STATS, "< /proc/self/mountstats" I would recommend parameterizing the path so you can pass in all sorts of odd mountstats files (for testing), without requiring the running kernel to be preparing the file for you. Something like, open STATS, '<', MOUNTSTATS_PATH or die... (die() is a fairly drastic measure to take BTW - that could be made more robust perhaps) > 2. I dropped the tcp identifier under xprt, and just created a union of > all the possible types across tcp, udp and rdma. I have only tested > tcp. I hope to test udp shortly. I don't think I'll be able to test > rdma in the near future as we don't use it in production currently. No problem. If you know the format, or if someone else could help us out by sending through an example mountstats file, the above testing trick could be used to test this even without hardware support. A simpler example (than qa/553 I suggested earlier) of an existing test that does this is qa/972 - see the use of $ZSWAP_STATS_PATH in there, along with its use of dbpmda. > 3. Used mountpoints in the instance domain. I think this is the best we > can do. Its what mountstats itself is using to partition the data and Sounds good - its what people will expect & matches up with how they'll want to use the data, I think. > 4. There didn't seem to be any consensus on nfsclient.ops.getattr.count > vs. nfsclient.opts.count.getattr so I left it. Let me know if it should > be changed. What was the issue there again? ops usually refers to "operations" and opts to "options" (e.g. mount options) - from that metric name above, this sounds like an "ops" kind of metric. > 5. My biggest question is what to do about the nfs3, nfs4 vs nfs4.1 > per-op statistics. See the attached pdf, one column per version, > matching types aligned. There are 22, 47 and 53 stats for v3, v4 and > v4.1 respectively. Should it be treated the same as the tcp/udp/rdma > case and just zero out the ones that dont apply? I haven't implemented > this yet, but if that's what you think should be done, it should be > pretty straightforward to do. If I understand correctly, this is a two-dimensional dataset kind of problem (operations x mount points), with a twist that the different nfs versions have different operations. I'd expand the operations (as listed in the pdf) in the namespace, and keep the instance domain as the mount points. That will mean different sub-trees for each nfs version, I think, and yeah - zeroes or PM_ERR_APPVERSION returned in cases where a mount point isn't using a particular nfs version - that works just fine from the client tool POV. > 6. Finally, how much of the opts, caps, and sec fields should be parsed > out? I grabbed a couple for now that are obviously useful, but can do > them all if that's the way to go. Again, similar issue to the previous > point with respect to options that pertain to nfs versions. If its alot of data, I'd stick with information that is useful (it all needs to be classified in terms of metrics metadata) - if its not too much, I'd just go through the lot in case someone needs one particular field someday. Sounds more like the former case here. cheers. -- Nathan From nscott@redhat.com Tue Mar 4 00:23:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9894E7F4E for ; Tue, 4 Mar 2014 00:23:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 78C1F304043 for ; Mon, 3 Mar 2014 22:23:44 -0800 (PST) X-ASG-Debug-ID: 1393914222-04cbb054b623330001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id DREFfBeNo7wJtUPC for ; Mon, 03 Mar 2014 22:23:43 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s246NdHW009052; Tue, 4 Mar 2014 01:23:39 -0500 Date: Tue, 4 Mar 2014 01:23:39 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1098951916.20164731.1393914219435.JavaMail.zimbra@redhat.com> In-Reply-To: <1318446533.20135251.1393903806180.JavaMail.zimbra@redhat.com> References: <5314F8FD.8010807@internode.on.net> <1318446533.20135251.1393903806180.JavaMail.zimbra@redhat.com> Subject: Re: [pcp] pcp updates - grab bag MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates - grab bag Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates - grab bag Thread-Index: a0d1olbVXLdWSdgcBG52ll+xNPN/omBJWU9J X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1393914223 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145727 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > ----- Original Message ----- > [...] > [root@smash simple]# grep MAKE /etc/pcp.conf > PCP_MAKE_PROG=make > [root@smash simple]# > > So, I suspect we used to have a full path there (hence test -f succeeds) > but now we no longer do...? > Yep - with that change made in pcp.conf, I'm back to 100% pass here. cheers. -- Nathan From kenj@internode.on.net Tue Mar 4 14:43:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0CC9C7F4E for ; Tue, 4 Mar 2014 14:43:01 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id EE75D304043 for ; Tue, 4 Mar 2014 12:42:57 -0800 (PST) X-ASG-Debug-ID: 1393965775-04cbb054b765240001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 5OREsIduF7OXB3eS for ; Tue, 04 Mar 2014 12:42:56 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgEaAH45FlN20adJPGdsb2JhbAANTYcbhDq2OoMAAQmBNgMBAQEBOIJaAQEBBCMVQAEQCxgCAgUWCwICCQMCAQIBMRQGDQEHAQG0H3agLReBKY0oB4JvgUkBA64o Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Mar 2014 07:12:55 +1030 Message-ID: <53163ADF.5080307@internode.on.net> Date: Wed, 05 Mar 2014 07:43:11 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] pcp updates - grab bag References: <5314F8FD.8010807@internode.on.net> <1318446533.20135251.1393903806180.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pcp updates - grab bag In-Reply-To: <1318446533.20135251.1393903806180.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393965775 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 04/03/14 14:30, Nathan Scott wrote: > ... > So, I suspect we used to have a full path there (hence test -f succeeds) > but now we no longer do...? Ooops ... sorry about that. I feel like I'm mole smacking at the moment, with each "fix" potentially popping out from some other distro hole as a regression. This one is simple to fix ... commit will be on its way later today. From kenj@internode.on.net Tue Mar 4 15:39:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 075FC7F50 for ; Tue, 4 Mar 2014 15:39:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9693BAC006 for ; Tue, 4 Mar 2014 13:39:33 -0800 (PST) X-ASG-Debug-ID: 1393969171-04cb6c5676257f80001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id mSUqYWkPhQLCchwE for ; Tue, 04 Mar 2014 13:39:31 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqQ2ALhHFlN20adJPGdsb2JhbAANTYNBiBS5QQGBOQMBAQEBOINZMA0WGAMCAQIBMScGAgEBtDGhIxeOboQiBJlulDo Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Mar 2014 08:09:12 +1030 Message-ID: <53164811.9010808@internode.on.net> Date: Wed, 05 Mar 2014 08:39:29 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - fixups and solaris Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates - fixups and solaris Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393969171 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3595 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev Makepkgs | 2 - build/tar/postinstall.tail | 68 ++++++++++++++++++++++++++++++++++++--------- configure | 47 +++++++++++++++++-------------- configure.in | 50 ++++++++++++++++++--------------- 4 files changed, 110 insertions(+), 57 deletions(-) commit d71e106f05210961e3e129f1848a31f77e9bbcd0 Author: Ken McDonell Date: Wed Mar 5 08:36:23 2014 +1100 tar build postinstall.tail - Solaris changes Need to import using XML file from old solaris package build to define rc services via svccfg. commit 110e4dd2382d6857a5edf3604da48c067cdc9426 Author: Ken McDonell Date: Wed Mar 5 07:43:32 2014 +1100 Makepkgs - tweak $MAKE setting As Nathan discovered, this needs to be the full pathname, or we mess up pcp.conf in the built package. commit 81bae21353a543d66e71d11d2328d45a6c83ce0e Author: Ken McDonell Date: Tue Mar 4 21:06:40 2014 +1100 configure - more dtrace and static probes wrangling This time trying to accommodate OpenSolaris, alongside the rest of the universe. commit 7e45a2f2c40c7553a972b6340b8d43d6cd477548 Author: Ken McDonell Date: Tue Mar 4 08:53:40 2014 +1100 tar postinstall.tail - oops reinstate mkdirs from 2 commits ago that got lost in the last commit. From nscott@redhat.com Tue Mar 4 16:50:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id BB2FC7F50 for ; Tue, 4 Mar 2014 16:50:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 5F0D4AC00A for ; Tue, 4 Mar 2014 14:50:15 -0800 (PST) X-ASG-Debug-ID: 1393973410-04cb6c567725b680001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id X8e1Mm5CI5JJwEET for ; Tue, 04 Mar 2014 14:50:11 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s24Mo8GJ017859; Tue, 4 Mar 2014 17:50:08 -0500 Date: Tue, 4 Mar 2014 17:50:08 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1509466392.20780892.1393973408193.JavaMail.zimbra@redhat.com> In-Reply-To: <53163ADF.5080307@internode.on.net> References: <5314F8FD.8010807@internode.on.net> <1318446533.20135251.1393903806180.JavaMail.zimbra@redhat.com> <53163ADF.5080307@internode.on.net> Subject: Re: [pcp] pcp updates - grab bag MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates - grab bag Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates - grab bag Thread-Index: nbBgNJz6IzGy6OfWlJV3oBeo0I4XBg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1393973411 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3597 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > On 04/03/14 14:30, Nathan Scott wrote: > > ... > > So, I suspect we used to have a full path there (hence test -f succeeds) > > but now we no longer do...? > > Ooops ... sorry about that. No problem. > I feel like I'm mole smacking at the moment, with each "fix" potentially > popping out from some other distro hole as a regression. Tis the nature of the configure-beast! > This one is simple to fix ... commit will be on its way later today. Got it, thanks. -- Nathan From nscott@redhat.com Tue Mar 4 18:01:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 09B4D7F4E for ; Tue, 4 Mar 2014 18:01:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id E8B77304032 for ; Tue, 4 Mar 2014 16:01:30 -0800 (PST) X-ASG-Debug-ID: 1393977686-04cbb054b96f3f0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id oseHjTPIcpMUzu3L for ; Tue, 04 Mar 2014 16:01:26 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2501PEL030456 for ; Tue, 4 Mar 2014 19:01:25 -0500 Date: Tue, 4 Mar 2014 19:01:25 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <1127271973.20797366.1393977685453.JavaMail.zimbra@redhat.com> In-Reply-To: <1154037050.20797168.1393977635846.JavaMail.zimbra@redhat.com> Subject: pcp-gui updates: pmchart vs multi-host usability MIME-Version: 1.0 X-ASG-Orig-Subj: pcp-gui updates: pmchart vs multi-host usability Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp-gui updates: pmchart vs multi-host usability Thread-Index: rl7jldg5/5xtnDX0yE8PICCJIdtFkA== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1393977686 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3599 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp-gui.git dev VERSION | 2 +- build/rpm/fedora.spec | 10 +++++++++- build/rpm/pcp-gui.spec.in | 5 +---- debian/changelog | 6 ++++++ doc/CHANGES | 11 +++++++++++ src/chart/chart.cpp | 43 ++++++++++++++++++++++++++----------------- src/chart/chart.h | 8 +++++--- src/chart/chartdialog.cpp | 8 +++----- 8 files changed, 62 insertions(+), 31 deletions(-) commit 9273b4059086e1bb60d34c1b8d84b146a7276e47 Author: Nathan Scott Date: Wed Mar 5 10:59:29 2014 +1100 Update pcp-gui dev branch changelog and version details commit a683a1b8fe2b45ea0faf94c9e4d664dc1e5306eb Author: Nathan Scott Date: Wed Mar 5 10:41:33 2014 +1100 Remove pmchart one-metric-multiple-hosts legend ambiguity This change tackles the visual ambiguity that exists when a chart is created (or edited) such that the same metric from multple hosts is used. A number of difficulties arose in attempting to retrofit the prepend-hostname-to-legend-labels policy (potentially having to undo later on when editing occurs too) after a subsequent plot is observed to introduce the ambiguity. So, in the end went with the far simpler solution of always using shortname -prefixed label for plots (all this is only when no explicit plot labels are specified, of course). Resolves Red Hat bugzilla #1069960. From nscott@redhat.com Tue Mar 4 19:18:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E14BA7F4E for ; Tue, 4 Mar 2014 19:18:45 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7CDC0AC006 for ; Tue, 4 Mar 2014 17:18:42 -0800 (PST) X-ASG-Debug-ID: 1393982319-04cbb054b872ca0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id 1WuiEykaC9e8ZO9p for ; Tue, 04 Mar 2014 17:18:40 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s251IdjD023546 for ; Tue, 4 Mar 2014 20:18:39 -0500 Date: Tue, 4 Mar 2014 20:18:39 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <1355681920.20811058.1393982319705.JavaMail.zimbra@redhat.com> In-Reply-To: References: <1586629653.19105359.1393667367200.JavaMail.zimbra@redhat.com> <2037816778.19105579.1393667836076.JavaMail.zimbra@redhat.com> Subject: Re: Next PCP developers meeting MIME-Version: 1.0 X-ASG-Orig-Subj: Re: Next PCP developers meeting Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Next PCP developers meeting Thread-Index: fW3MNwa8kvZQkBrlxMbvQhqIx70fJQ== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1393982320 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3604 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi all, ----- Original Message ----- > > [...] open to anyone with an interest, usually go for a couple of > > hours & usually it's around the 7am timeframe in Melbourne (UTC+11). > > (= 3PM US/Eastern Standard, or after Mar. 9, = 4PM) OK - taking into account those who asked, we have a mutually agreeable date & time; its on, next week at this time: - Friday 14th March, 7am Australia/EST - Thursday 13th March, 4pm US/EST I'll send out conference call numbers closer to the time, next week. > > [...] Also - send through any topics you wish to discuss too, and > > I'll send out an agenda beforehand. > Here's an initial agenda - I've added a couple to the front, otherwise its all Franks list so far. There's plenty of time to send anything else that's on your mind through too... - build processes - git-tar vs make src-link - qa .out files vs pcp releases - pcp-gui + pcp-doc + pcp -> tree merge planning - release schedule - once-a-month useful? sustainable? - path toward grand-unified archive+live capability - intermediate steps? - virtually-glue-archives-together enough? would it require new context type? - tail -f on archives - acceptability of server/proxy process for full capability? - path toward data durability - do we really care? - whither the fche/fsync patches? - streamable archive format? - platforms - is windows status quo (mingw) going anywhere? - worth trying cygwin (posix) builds again? - which unixes/distros are of interest? release binaries for them? - how do we share build/testing load? - how to gather evidence about compatibility assumptions (sgi addons vs. multilib)? - how to entice distro reps into presence in pcp community? From kenj@internode.on.net Tue Mar 4 22:51:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 337367F55 for ; Tue, 4 Mar 2014 22:51:35 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1713C8F8065 for ; Tue, 4 Mar 2014 20:51:31 -0800 (PST) X-ASG-Debug-ID: 1393995085-04bdf05daa28ea20001-S8gJnT Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id qIUffUQ5sqZkxlBs for ; Tue, 04 Mar 2014 20:51:26 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AisZALSsFlN20adJPGdsb2JhbAANTYtWtkeDCoEsAwEBAQE4gloBAQEDAXgBBQsLGAkWDwkDAgECATEUBg0BBwEBh22sIaFIF45RB4Q4AQOuKA Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail05.adl6.internode.on.net with ESMTP; 05 Mar 2014 15:21:24 +1030 Message-ID: <5316AD5C.3030408@internode.on.net> Date: Wed, 05 Mar 2014 15:51:40 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "Frank Ch. Eigler" CC: pcp@oss.sgi.com Subject: Re: pmmgr build failure on 32-bit Fedora release 17 (Beefy Miracle) References: <53101471.4000200@internode.on.net> <5311157B.9010004@internode.on.net> <20140228231759.GA18123@redhat.com> X-ASG-Orig-Subj: Re: pmmgr build failure on 32-bit Fedora release 17 (Beefy Miracle) In-Reply-To: <20140228231759.GA18123@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393995085 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On 01/03/14 10:17, Frank Ch. Eigler wrote: > Hi - > > On Sat, Mar 01, 2014 at 10:02:19AM +1100, Ken McDonell wrote: >> [...] >> g++ -O2 -g -march=i386 -mtune=i686 -fPIC -fno-strict-aliasing -D_GNU_SOURCE -fstack-protector-all -D_FORTIFY_SOURCE=2 -Wall -O2 -g -DPCP_DEBUG -DPCP_VERSION=\"3.9.1\" -I./src/include -I./src/include/pcp -fPIC -fno-strict-aliasing -D_GNU_SOURCE -fstack-protector-all -D_FORTIFY_SOURCE=2 -Wall -O2 -g -DPCP_DEBUG -DPCP_VERSION=\"3.9.1\" -I../src/include -I../src/include/pcp -fPIC -fno-strict-aliasing -D_GNU_SOURCE -fstack-protector-all -D_FORTIFY_SOURCE=2 -fPIE -Wall -O2 -g -DPCP_DEBUG -DPCP_VERSION=\"3.9.1\" -I../../src/include -I../../src/include/pcp -O2 -g -march=i386 -mtune=i686 -o pmmgr -Wall -L../../src/libpcp/src -L../../src/libpcp_pmda/src -rdynamic -pie -Wl,-z,relro -Wl,-z,now pmmgr.o -lpcp -lpthread >> pmmgr.o: In function `__exchange_and_add': >> /usr/lib/gcc/i686-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ext/atomicity.h:48: undefined reference to `__atomic_fetch_add_4' > > Right, this is the gcc <= 4.7 case, where a -latomic did not exist, so > i686 libstdc++ genuinely couldn't be used with -march=i386. > > But where is the -march=i386 stuff coming from in your tree now? > That CFLAGS strangely duplicative & wrong. Yep. after configure and make in the source tree (no rpm involved), cd src/pmmgr; make clean; make ... g++ -fPIC -fno-strict-aliasing -D_GNU_SOURCE -fstack-protector-all -D_FORTIFY_SOURCE=2 -fPIE -Wall -O2 -g -DPCP_DEBUG -DPCP_VERSION=\"3.9.1\" -I../../src/include -I../../src/include/pcp -c pmmgr.cxx -o pmmgr.o g++ -fPIC -fno-strict-aliasing -D_GNU_SOURCE -fstack-protector-all -D_FORTIFY_SOURCE=2 -fPIE -Wall -O2 -g -DPCP_DEBUG -DPCP_VERSION=\"3.9.1\" -I../../src/include -I../../src/include/pcp -o pmmgr -Wall -L../../src/libpcp/src -L../../src/libpcp_pmda/src -rdynamic -pie -Wl,-z,relro -Wl,-z,now pmmgr.o -lpcp -lpthread No bogus flags I can see here ... so this is something about the why the rpm build is being run. Ahh after a LOT of digging ... Makepkgs eventually does ... cd build/rpm make pack_pcp which does this /usr/bin/rpmbuild -ba --define '_topdir /home/kenj/src/pcp' --define '_builddir %{_topdir}' --define '_sourcedir %{_topdir}/build/tar' --define '_rpmdir /home/kenj/src/pcp/build/rpm' --define '_srcrpmdir /home/kenj/src/pcp/build/rpm' --define '_specdir %{_topdir}/build/rpm' --define '_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm' --clean pcp.spec and rpmbuild builds a shell script to run that looks like this ... $ cat /var/tmp/rpm-tmp.C7lEo3 #!/bin/sh RPM_SOURCE_DIR="/home/kenj/src/pcp/build/tar" RPM_BUILD_DIR="/home/kenj/src/pcp" RPM_OPT_FLAGS="-O2 -g -march=i386 -mtune=i686" RPM_LD_FLAGS="" RPM_ARCH="i386" RPM_OS="linux" export RPM_SOURCE_DIR RPM_BUILD_DIR RPM_OPT_FLAGS RPM_LD_FLAGS RPM_ARCH RPM_OS RPM_DOC_DIR="/usr/share/doc" export RPM_DOC_DIR RPM_PACKAGE_NAME="pcp" RPM_PACKAGE_VERSION="3.9.1" RPM_PACKAGE_RELEASE="1" export RPM_PACKAGE_NAME RPM_PACKAGE_VERSION RPM_PACKAGE_RELEASE LANG=C export LANG unset CDPATH DISPLAY ||: RPM_BUILD_ROOT="/home/kenj/src/pcp/BUILDROOT/pcp-3.9.1-1.i386" export RPM_BUILD_ROOT PKG_CONFIG_PATH="/usr/lib/pkgconfig:/usr/share/pkgconfig" export PKG_CONFIG_PATH set -x umask 022 cd "/home/kenj/src/pcp" cd 'pcp-3.9.1' CFLAGS="${CFLAGS:--O2 -g -march=i386 -mtune=i686}" ; export CFLAGS ; CXXFLAGS="${CXXFLAGS:--O2 -g -march=i386 -mtune=i686}" ; export CXXFLAGS ; FFLAGS="${FFLAGS:--O2 -g -march=i386 -mtune=i686}" ; export FFLAGS ; ./configure --host=i686-redhat-linux-gnu --build=i686-redhat-linux-gnu \ --program-prefix= \ --prefix=/usr \ --exec-prefix=/usr \ --bindir=/usr/bin \ --sbindir=/usr/sbin \ --sysconfdir=/etc \ --datadir=/usr/share \ --includedir=/usr/include \ --libdir=/usr/lib \ --libexecdir=/usr/libexec \ --localstatedir=/var \ --sharedstatedir=/var/lib \ --mandir=/usr/share/man \ --infodir=/usr/share/info --with-rcdir=/etc/rc.d/init.d /usr/bin/gmake default_pcp So it is rpmbuild in this case that is adding the bogus (?) and additional CFLAGS and CXXFLAGS And here's the proof ... $ grep 'optflag.*march=i386' /usr/lib/rpm/rpmrc optflags: i386 -O2 -g -march=i386 -mtune=i686 Now if I create /etc/rpmc as follows (you have to have something here to override, hence the benign and gratuitous -g) $ cat /etc/rpmrc optflags: i386 -g by magic rpmbuild works and even more magical Makepkgs works. So the question is what is the _propper_ way to smack rpmbuild in a case like this? > Even that should be working now, if the platform combination you are > referring to is fedora-17 (which by the way is orphaned), i686, > invoking it all via a Makepkgs in a clean directory, with those two > fche/i686 patches. It is fedora-17 and i386. From kenj@internode.on.net Wed Mar 5 02:15:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id ACFC57F55 for ; Wed, 5 Mar 2014 02:15:39 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 91EAB8F8089 for ; Wed, 5 Mar 2014 00:15:36 -0800 (PST) X-ASG-Debug-ID: 1394007330-04cb6c5675275850001-S8gJnT Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id erDBXIqw14FaaPuB for ; Wed, 05 Mar 2014 00:15:30 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjIZAM3bFlN20adJPGdsb2JhbAANTYcchDq2RIMKgSoDAQEBATiCWgEBAQQjFUABDAQLGAICBRYLAgIJAwIBAgExFAYNAQcBAbQOdqBSF4EpjSgHgm+BSQEDrig Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail05.adl6.internode.on.net with ESMTP; 05 Mar 2014 18:45:29 +1030 Message-ID: <5316DD31.2020700@internode.on.net> Date: Wed, 05 Mar 2014 19:15:45 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: PCP Mailing List Subject: Re: [pcp] Another build problem - python bits on Linux Mint 12 References: <530FCCED.4000403@internode.on.net> <1082118100.19105328.1393667279427.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] Another build problem - python bits on Linux Mint 12 In-Reply-To: <1082118100.19105328.1393667279427.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1394007330 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3612 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 01/03/14 20:47, Nathan Scott wrote: > > > ----- Original Message ----- >> Platform - Linux Mint 12 Lisa >> ... >> On this platform, python-all-dev pulls in BOTH python 2.6 and 2.7 >> ... >> Can someone who understand how the python build and packaging works please >> investigate? > > What does "pyversions -vr" say (needs to be run from top-level of the source > tree, oddly enough)? This output is used to drive the build process (from > debian/rules, line ~160) > > for V in $(shell pyversions -vr); do \ > $(pkgpcp_python) $(MAKE) PYTHON=python$$V -C src/python install; \ > done I am seeing this one two systems now ... Linux Mint 12 (vm18) kenj@vm18:~/src/pcp$ pyversions -vr 2.7 2.6 Debian 7.4 (vm21) kenj@vm21:~/src/pcp$ pyversions -vr 2.7 2.6 And from Logs/pcp I see lines like for V in 2.7 2.6; do \ export GZIP=-9q DIST_ROOT=`pwd`/debian/python-pcp; /usr/bin/make PYTHON=python$V -C src/python install; \ done I think the problem is that the first make leaves 2.7 turds behind that are not remade for 2.6 ... adding /usr/bin/make -C src/python clean after the make install seems to fix this, but I don't know if that leaves the tree in a bozo state, and this sort of hack cannot possibly work for some other builds, like for tarball packaging. It seems like you need to clone src/python for each version of Python that you want to build for, and descend into each of these in turn at each step in the build. From info@yahoo.com Wed Mar 5 02:57:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.9 required=5.0 tests=FORGED_YAHOO_RCVD, SUBJ_ALL_CAPS autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E34D47F4E for ; Wed, 5 Mar 2014 02:57:58 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id BCFFD8F8089 for ; Wed, 5 Mar 2014 00:57:58 -0800 (PST) X-ASG-Debug-ID: 1394009876-04cb6c5678277a00001-S8gJnT Received: from europemc.vshosting.cz (europemc.vshosting.cz [78.24.9.108]) by cuda.sgi.com with ESMTP id QxnVAVBBlUpXxDxB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 05 Mar 2014 00:57:57 -0800 (PST) X-Barracuda-Envelope-From: info@yahoo.com X-Barracuda-Apparent-Source-IP: 78.24.9.108 Received: from localhost (localhost.localdomain [127.0.0.1]) by europemc.vshosting.cz (Postfix) with ESMTP id CCE321590EF4; Wed, 5 Mar 2014 09:57:51 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at europemc.vshosting.cz Received: from europemc.vshosting.cz ([127.0.0.1]) by localhost (europemc.vshosting.cz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AY6nOdA1HkN6; Wed, 5 Mar 2014 09:57:47 +0100 (CET) Received: from localhost (localhost.localdomain [127.0.0.1]) by europemc.vshosting.cz (Postfix) with ESMTP; Wed, 5 Mar 2014 09:57:46 +0100 (CET) Received: from 41.203.69.4 ([41.203.69.4]) by webmail.facestar.cz (Horde Framework) with HTTP; Wed, 05 Mar 2014 09:57:45 +0100 Message-ID: <20140305095745.15153dhni6srnokk@webmail.facestar.cz> Date: Wed, 05 Mar 2014 09:57:45 +0100 From: "Mr.Mahmoud Ibrahim" Reply-To: mahmoudibrahim2@outlook.com To: undisclosed-recipients:; Subject: GOOD DAY!!! MIME-Version: 1.0 X-ASG-Orig-Subj: GOOD DAY!!! Content-Type: text/plain; charset=ISO-8859-1; DelSp="Yes"; format="flowed" Content-Disposition: inline Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.3.6) X-Barracuda-Connect: europemc.vshosting.cz[78.24.9.108] X-Barracuda-Start-Time: 1394009876 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.87 X-Barracuda-Spam-Status: No, SCORE=1.87 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=FORGED_YAHOO_RCVD, FORGED_YAHOO_RCVD_2, PLING_PLING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3614 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 FORGED_YAHOO_RCVD 'From' yahoo.com does not match 'Received' headers 0.46 PLING_PLING Subject has lots of exclamation marks 1.41 FORGED_YAHOO_RCVD_2 'From' yahoo.com does not match 'Received' headers Hello Friend, I am asking for your partnership.Contact me for details. Best Regards. Mr.Mahmoud Ibrahim mahmoudibrahim2@outlook.com From fche@redhat.com Wed Mar 5 09:02:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id DC5987F3F for ; Wed, 5 Mar 2014 09:02:18 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6F733AC009 for ; Wed, 5 Mar 2014 07:02:18 -0800 (PST) X-ASG-Debug-ID: 1394031734-04cbb054b9a4e90001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 4kasT556SYNVBTFQ for ; Wed, 05 Mar 2014 07:02:14 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s25F28Ow025434 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 5 Mar 2014 10:02:08 -0500 Received: from fche.csb (vpn-236-250.phx2.redhat.com [10.3.236.250]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s25F285K017472; Wed, 5 Mar 2014 10:02:08 -0500 Received: by fche.csb (Postfix, from userid 2569) id 952B15853E; Wed, 5 Mar 2014 10:02:07 -0500 (EST) Date: Wed, 5 Mar 2014 10:02:07 -0500 From: "Frank Ch. Eigler" To: Ken McDonell Cc: pcp@oss.sgi.com Subject: Re: pmmgr build failure on 32-bit Fedora release 17 (Beefy Miracle) Message-ID: <20140305150207.GB27666@redhat.com> X-ASG-Orig-Subj: Re: pmmgr build failure on 32-bit Fedora release 17 (Beefy Miracle) References: <53101471.4000200@internode.on.net> <5311157B.9010004@internode.on.net> <20140228231759.GA18123@redhat.com> <5316AD5C.3030408@internode.on.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5316AD5C.3030408@internode.on.net> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394031734 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - On Wed, Mar 05, 2014 at 03:51:40PM +1100, Ken McDonell wrote: > [...] > /usr/bin/rpmbuild -ba --define '_topdir /home/kenj/src/pcp' --define '_builddir %{_topdir}' --define '_sourcedir %{_topdir}/build/tar' --define '_rpmdir /home/kenj/src/pcp/build/rpm' --define '_srcrpmdir /home/kenj/src/pcp/build/rpm' --define '_specdir %{_topdir}/build/rpm' --define '_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm' --clean pcp.spec Note no --target overrides in there. > and rpmbuild builds a shell script to run that looks like this ... > [...] > RPM_OPT_FLAGS="-O2 -g -march=i386 -mtune=i686" > [...] > So it is rpmbuild in this case that is adding the bogus (?) and > additional CFLAGS and CXXFLAGS So something went wrong around this point. Do you perhaps have a personal $HOME/.rpm* file or a modified system one? > $ grep 'optflag.*march=i386' /usr/lib/rpm/rpmrc > optflags: i386 -O2 -g -march=i386 -mtune=i686 That is supposed to trigger based upon the rpmbuild --target=ARCH setting; note similar values for i686 etc. > [...] So the question is what is the _proper_ way to smack > rpmbuild in a case like this? I think the key is to stop overriding what are probably the proper system defaults; we just need to find what's doing the dirty deed. You should be seeing this: % rpm --eval %_target_cpu i686 % grep _cpu /usr/lib/rpm/macros /etc/rpm/* $HOME/.rpm* /usr/lib/rpm/macros:%_build_cpu %{_host_cpu} /usr/lib/rpm/macros:%_host_cpu i686 /usr/lib/rpm/macros:%_target_cpu %{_host_cpu} - FChE From brolley@redhat.com Wed Mar 5 10:52:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 81DC77F3F for ; Wed, 5 Mar 2014 10:52:20 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6AAF78F807A for ; Wed, 5 Mar 2014 08:52:17 -0800 (PST) X-ASG-Debug-ID: 1394038336-04cbb054b6b0b00001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id uj3adeCyCGVJVmo8 for ; Wed, 05 Mar 2014 08:52:16 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s25GqFHG014926 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 5 Mar 2014 11:52:15 -0500 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s25GqEVQ022187; Wed, 5 Mar 2014 11:52:14 -0500 Message-ID: <5317566C.9020709@redhat.com> Date: Wed, 05 Mar 2014 11:53:00 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump In-Reply-To: <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394038336 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/27/2014 01:15 AM, Nathan Scott wrote: > Hi Dave, > > Here's that code review... Thanks! >> diff --git a/src/libpcp/src/exports b/src/libpcp/src/exports >> index 9b17688..36675b8 100644 >> --- a/src/libpcp/src/exports >> +++ b/src/libpcp/src/exports >> @@ -228,6 +228,8 @@ PCP_3.0 { >> __pmLogChkLabel; >> __pmLogClose; >> __pmLogCreate; >> + __pmLogLocalSocketDefault; >> + __pmLogLocalSocketUser; >> __pmLogFetch; >> __pmLogFetchInterp; >> __pmLogFindLocalPorts; >> @@ -259,6 +261,7 @@ PCP_3.0 { >> __pmMapErrno; >> __pmMemoryMap; >> __pmMemoryUnmap; >> + __pmMkdir; >> __pmMktime; >> __pmMultiThreaded; >> __pmNativeConfig; > Hmm, we can't just stick these slap bang in the middle here - > needs a PCP_3.2 exports section, which inherits from PCP_3.1 > now, doesn't it? Stan's time API work will piggyback on this > new section, as will the common getopts goo I hope. OK. Fixed in commit 138d204590757960879499918315e725aa4fb920 >> diff --git a/src/include/pcp/impl.h b/src/include/pcp/impl.h >> index df78f1d..988de0f 100644 >> --- a/src/include/pcp/impl.h >> +++ b/src/include/pcp/impl.h >> @@ -1262,6 +1265,7 @@ extern void __pmConfig(__pmConfigCallback); >> extern char *__pmNativePath(char *); >> extern int __pmAbsolutePath(char *); >> extern int __pmPathSeparator(void); >> +extern int __pmMkdir(const char *, mode_t); > BTW, looks like pmpost.c could make use of this, removing the > mkdir_r (equivalent code) there. Also, see below re naming. Looks like the mkdir_r function there does a bit more than the new __pmMakePath. It also sets the group for each path component. I left this alone. >> diff --git a/src/libpcp/src/accounts.c b/src/libpcp/src/accounts.c >> index 89b967d..8c2eb7b 100644 >> --- a/src/libpcp/src/accounts.c >> +++ b/src/libpcp/src/accounts.c >> >> + result = getpwuid(uid); >> + snprintf(buf, size, "%s", result ? result->pw_dir : "unknown"); > Putting "unknown" as the homedir path seems dodgey - looks like > we need some error handling here (return NULL, deal with it in > the callers). I was just following the lead of __pmGroupNameFromID() and __pmUsernameFromID(), however, I can see that returning "unknown" here could lead to successful placement of data in the directory "unknown" where we really do want an error. Fixed in commit d2e87db1c006c98067e05fac25c354dec79923c3. >> diff --git a/src/libpcp/src/logconnect.c b/src/libpcp/src/logconnect.c >> index 547eb9a..4e282ca 100644 >> --- a/src/libpcp/src/logconnect.c >> +++ b/src/libpcp/src/logconnect.c >> @@ -62,11 +62,185 @@ __pmLoggerTimeout(void) >> } >> >> /* >> - * expect one of pid or port to be 0 ... if port is 0, use >> - * hostname+pid to find port, assuming pmcd is running there >> + * Return the path to the default PMLOGGER local unix domain socket. >> + * Returns a pointer to a static buffer which can be used directly. >> + * Return the path regardless of whether unix domain sockets are >> + * supported by our build. Other functions can then print reasonable >> + * messages if an attempt is made to use one. >> + */ >> +const char * >> +__pmLogLocalSocketDefault(int pid) >> +{ >> + static char pmlogger_socket[MAXPATHLEN]; >> + static char pmlogger_socket_primary[MAXPATHLEN]; > Do these need to be here, static? Seems a buffer (and size) could > be passed in. Also, not really following why we need both buffers > separately. A comment would help, but can they be pushed out to > the caller(s) instead. The purpose was to compute these only once. If we do this, then we need two buffers, one to hold the version of the socket name and one to hold the "primary" version. I see now that this is flawed, because pmlc may want to contact pmloggers with different pids. Passing in the buffer would then seem to be the right way to go. It will also remove the need for the PM_LOCK. Fixed in commit 9aabf24a17e71cff1c221a184d875b8f0ea0d76a. >> +/* >> + * Common function for attemmpting connections to pmlogger. >> + */ >> +static int >> +connectLogger (int fd, __pmSockAddr *myAddr) > whitespace oddity. Fixed in commit fb5b05c1b1dabc4185263b87fd96f766621d2a62 >> + /* Attept the connection. */ > typo. Fixed in commit fb5b05c1b1dabc4185263b87fd96f766621d2a62 >> + sts = 0; > dead code? (above line, cos...) > >> + if ((rc = __pmSelectRead(fd+1, &rfds, pstv)) == 1) { >> + sts = __pmConnectCheckError(fd); >> + } >> + else if (rc == 0) { >> + sts = ETIMEDOUT; >> + } >> + else { >> + sts = (rc < 0) ? neterror() : EINVAL; >> + } >> + } Dead code removed in commit fb5b05c1b1dabc4185263b87fd96f766621d2a62 >> + * Attemmpt connection to pmlogger via a local socket. > typo. Fixed in commit fb5b05c1b1dabc4185263b87fd96f766621d2a62 >> +static int >> +connectLoggerLocal(const char *local_socket) >> +{ >> +#if defined(HAVE_STRUCT_SOCKADDR_UN) >> + char socket_path[MAXPATHLEN]; >> + int fd; >> + int sts; >> + __pmSockAddr *myAddr; >> + >> + /* Create a socket */ >> + fd = __pmCreateUnixSocket(); >> + if (fd < 0) >> + return -ECONNREFUSED; >> + >> + /* Set up the socket address. */ >> + myAddr = __pmSockAddrAlloc(); >> + if (myAddr == NULL) { >> + __pmNotifyErr(LOG_ERR, "__pmConnectLogger: out of memory\n"); >> + return -ENOMEM; > fd is leaked here. Fixed in commit e5b3075f4617597e22f5ba88fb0078e51b4c8fa4 >> + /* Attempt to connect */ >> + sts = connectLogger(fd, myAddr); >> + __pmSockAddrFree(myAddr); >> + >> + if (sts < 0) >> + fd = sts; > and there. Fixed in commit e5b3075f4617597e22f5ba88fb0078e51b4c8fa4 >> +__pmConnectLogger(const char *connectionSpec, int *pid, int *port) >> + [...] >> + if (fd < 0) { >> + if (prefix_len == 5) /* "unix: */ > double-quote oddity. Fixed in commit fb5b05c1b1dabc4185263b87fd96f766621d2a62 >> + if (*pid == PM_LOG_ALL_PIDS) { >> #ifdef PCP_DEBUG >> if (pmDebug & DBG_TRACE_CONTEXT) >> - fprintf(stderr, "__pmConnectLogger: __pmLogFindPort -> 1, cannot contact pmcd\n"); > pmcd? pmlogger. Line was removed by my changes ... >> #ifdef PCP_DEBUG >> - if (pmDebug & DBG_TRACE_CONTEXT) >> - fprintf(stderr, "__pmConnectLogger: gethostbyname: %s\n", >> - hoststrerror()); >> + if (pmDebug & DBG_TRACE_CONTEXT) >> + fprintf(stderr, "__pmConnectLogger: __pmLogFindPort -> 1, cannot contact pmcd\n"); > ditto. ... but reintroduced here. Fixed in commit fb5b05c1b1dabc4185263b87fd96f766621d2a62 and 5046073d44836ff02af15630ba39e06cd4a3d0a5 >> diff --git a/src/libpcp/src/logportmap.c b/src/libpcp/src/logportmap.c >> index 22b1798..1cf463b 100644 >> --- a/src/libpcp/src/logportmap.c >> +++ b/src/libpcp/src/logportmap.c >> @@ -365,6 +358,7 @@ int >> __pmLogFindPort(const char *host, int pid, __pmLogPort **lpp) >> { >> int ctx, oldctx; >> + char *ctxhost; >> int sts, numval; >> int i, j; >> int findone = pid != PM_LOG_ALL_PIDS; >> @@ -386,9 +380,21 @@ __pmLogFindPort(const char *host, int pid, __pmLogPort **lpp) >> return localcon; >> >> /* note: there may not be a current context */ >> + ctx = 0; >> oldctx = pmWhichContext(); >> >> - if ((ctx = pmNewContext(PM_CONTEXT_HOST, host)) < 0) >> + /* >> + * Enclose ctxhost in [] in case it is an ipv6 address. This prevents >> + * the first colon from being taken as a port separator by pmNewContext >> + * and does no harm otherwise. >> + */ >> + ctxhost = malloc(strlen(host) + 2 + 1); >> + if (ctxhost == NULL) { >> + sts = -ENOMEM; >> + goto ctxErr; >> + } >> + sprintf(ctxhost, "[%s]", host); >> + if ((ctx = pmNewContext(PM_CONTEXT_HOST, ctxhost)) < 0) >> return ctx; > Leaks ctxhost here. > >> if ((sts = pmLookupName(1, namelist, &pmid)) < 0) >> goto ctxErr; > ... there ... > >> @@ -434,6 +440,7 @@ resErr: >> ctxErr: >> if (oldctx >= 0) >> pmUseContext(oldctx); >> - pmDestroyContext(ctx); >> + if (ctx >= 0) >> + pmDestroyContext(ctx); >> return sts; >> } > ... and everywhere. Should ctxhost be an on-stack buffer instead? The problem would be how big to make it. The leak was very easy to fix, so I left it as a heap object. Fixed in b01572d581dea4adffd839d8e339656349e63b3d. >> diff --git a/src/libpcp/src/secureconnect.c b/src/libpcp/src/secureconnect.c >> index 396727e..b44851c 100644 >> --- a/src/libpcp/src/secureconnect.c >> +++ b/src/libpcp/src/secureconnect.c >> @@ -383,7 +358,7 @@ __pmInitCertificates(void) >> * not using secure connections (initially everyone) don't >> * have to diagnose / put up with spurious errors. >> */ >> - if (mkpath(dbpath(nssdb, sizeof(nssdb), "sql:"), 0700) < 0) >> + if (__pmMkdir(dbpath(nssdb, sizeof(nssdb), "sql:"), 0700) < 0) > Hmm, actually, mkpath was quite a descriptive name ... could > we go with __pmMakePath for this new interface instead? Yep -- done in commits 138d204590757960879499918315e725aa4fb920 and 707b499d8fd9867be47bfae2c0d2f2e2b226aa33 (botched the new new the first time). >> + if (address->sockaddr.raw.family == PR_AF_INET || >> + address->sockaddr.raw.family == PR_AF_INET6) { >> + prStatus = PR_GetHostByAddr(&address->sockaddr, &buffer[0], sizeof(buffer), &he); >> #ifdef PCP_DEBUG >> - if (pmDebug & DBG_TRACE_DESPERATE) { >> - if (prStatus != PR_SUCCESS) { >> - fprintf(stderr, "%s:PR_GetHostByAddr(%s) returns %d (%s)\n", __FILE__, __pmSockAddrToString(address), PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); >> - } >> - } >> + if (pmDebug & DBG_TRACE_DESPERATE) { >> + if (prStatus != PR_SUCCESS) { >> + fprintf(stderr, "%s:PR_GetHostByAddr(%s) returns %d (%s)\n", __FILE__, __pmSockAddrToString(address), PR_GetError(), PR_ErrorToString(PR_GetError(), PR_LANGUAGE_I_DEFAULT)); >> + } >> + } >> #endif >> + } >> + else if (address->sockaddr.raw.family == PR_AF_LOCAL) >> + return strdup(address->sockaddr.local.path); >> + else { >> + __pmNotifyErr(LOG_ERR, >> + "%s:__pmGetNameInfo: Invalid address family: %d\n", __FILE__, >> + address->sockaddr.raw.family); >> + return NULL; >> + } >> + >> name = (prStatus == PR_SUCCESS ? strdup(he.h_name) : NULL); >> return name; > This code looks slightly wierd to me now, because we conditionally > setup "he" early on, then we have a chunk of code that operates in > a completely different way (PR_AF_LOCAL), and then we come back to > "he" at the end. It would read/flow a little better if we did the > af_unix family first, and then the inet/ipv6 - or, perhaps moving > the strdup(he.h_name) & prStatus test inside the inet/ipv6 branch > would do the trick (could do the Notify without an "else" then). Yeah. I don't know what I was thinking when I did that. Fixed in commit fdbc97d3903c33f96580808fcef8a77376db4dc5 >> diff --git a/src/libpcp/src/util.c b/src/libpcp/src/util.c >> index e92d22b..5d575b1 100644 >> --- a/src/libpcp/src/util.c >> +++ b/src/libpcp/src/util.c >> @@ -1475,6 +1475,34 @@ dirname(char *name) >> } >> #endif /* HAVE_DIRNAME */ >> >> +/* >> + * Create a directory, including all of its path components. >> + */ >> +int >> +__pmMkdir(const char *dir, mode_t mode) > __pmMakePath ... just rolls off the tongue, doesn't it? ;) Say it 3 times fast ;) >> diff --git a/src/pmlc/actions.c b/src/pmlc/actions.c >> index 45c60d2..77088eb 100644 >> --- a/src/pmlc/actions.c >> +++ b/src/pmlc/actions.c >> @@ -91,12 +92,17 @@ ConnectPMCD(void) >> * if pmcd host is "localhost"-alike then use hostname that >> * was used to contact pmlogger, as from here (where pmlc is >> * running) "localhost" is likely to connect us to the wrong >> - * pmcd or no pmcd at all >> + * pmcd or no pmcd at all. > What's the "point"? Ahahahah, I crack myself up sometimes. > >> */ >> srchost = strdup(lasthost); >> } >> else >> srchost = strdup(lsp->ls_fqdn); >> + >> + if (srchost == NULL) { >> + sts = -ENOMEM; >> + goto done; >> + } > Looks like error reporting is being done within the above routine? > (i.e. do we need a fprintf here, like the other error cases?) Convention for other functions in the file for out of memory seems to be to call __pmNoMem(). I've changed it to that. Fixed in commit 3b2eb2e0fb19e48b4dcca7782bf656afa12966bd >> diff --git a/src/pmlogconf/pmlogconf.sh b/src/pmlogconf/pmlogconf.sh >> index db98da8..7e10e5d 100755 >> --- a/src/pmlogconf/pmlogconf.sh >> +++ b/src/pmlogconf/pmlogconf.sh >> @@ -11,6 +11,7 @@ >> # when the group was added to the configuration file >> # delta delta argument for pmlogger "logging ... on delta" clause >> # >> +# Copyright (c) 2014 Red Hat. >> # Copyright (c) 1998,2003 Silicon Graphics, Inc. All Rights Reserved. >> # >> # This program is free software; you can redistribute it and/or modify it >> @@ -485,8 +486,9 @@ End-of-File >> # >> >> [access] >> -disallow * : all; >> -allow localhost : enquire; >> +disallow .* : all; >> +disallow :* : all; >> +allow local:* : enquire; >> End-of-File > Hmmm. When I run QA on this code, after an upgrade (so, without > the above change), test 023 hangs. I wonder if the above change > is being assumed to be in place...? I've tracked this down and will address it in a separate email. > >> diff --git a/src/pmlogger/src/ports.c b/src/pmlogger/src/ports.c >> index 1f867cd..b3320ee 100644 >> --- a/src/pmlogger/src/ports.c >> +++ b/src/pmlogger/src/ports.c >> [...] >> +GetPorts(char *file) >> [...] >> + /* Now listen on the new socket. */ >> + if (sts >= 0) { >> + sts = __pmListen(fd, 5); /* Max. of 5 pending connection requests */ >> + if (sts == -1) { >> + fprintf(stderr, "__pmListen: %s\n", netstrerror()); > Do we leak fd here? > >> + } >> + else { >> + ctlfds[ctlix] = fd; >> + ++socketsCreated; >> + } >> } > (back to top of loop) ... why yes, yes we do. Fixed in commit 9349d8641aa681b493c616f43258860965e48e90 >> + return; >> } > That final return is redundant. and removed in commit fb5b05c1b1dabc4185263b87fd96f766621d2a62. >> - free(hostName); >> } >> + if (hostName != NULL) >> + free(hostName); > Good catch! > > cheers. > > -- > Nathan From brolley@redhat.com Wed Mar 5 10:55:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 63F617F3F for ; Wed, 5 Mar 2014 10:55:31 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id E98DEAC006 for ; Wed, 5 Mar 2014 08:55:27 -0800 (PST) X-ASG-Debug-ID: 1394038526-04cbb054b9b0f60001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id y5TfjuKsjmnwtmvG for ; Wed, 05 Mar 2014 08:55:26 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s25GtP6P018993 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 5 Mar 2014 11:55:26 -0500 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s25GtORe009468 for ; Wed, 5 Mar 2014 11:55:25 -0500 Message-ID: <5317572A.2090004@redhat.com> Date: Wed, 05 Mar 2014 11:56:10 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: PCP Updates: AF_UNIX sockets for pmlogger/pmlc, review rework Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: PCP Updates: AF_UNIX sockets for pmlogger/pmlc, review rework Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394038526 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On the brolley/dev/branch of pcpfans .... -------------------------------------------------------------------- commit 5046073d44836ff02af15630ba39e06cd4a3d0a5 Author: Dave Brolley Date: Tue Mar 4 16:55:16 2014 -0500 Error messages now correctly refer to pmlogger, not pmcd. commit 9349d8641aa681b493c616f43258860965e48e90 Author: Dave Brolley Date: Tue Mar 4 16:24:25 2014 -0500 Fix socket fd leak in GetPorts() (pmlogger). commit 3b2eb2e0fb19e48b4dcca7782bf656afa12966bd Author: Dave Brolley Date: Tue Mar 4 16:18:10 2014 -0500 Call __pmNoMem() in ConnectPMCD() (pmlc) when out of memory. commit fdbc97d3903c33f96580808fcef8a77376db4dc5 Author: Dave Brolley Date: Tue Mar 4 16:12:43 2014 -0500 Rework the flow of logic in the NSPR implementation of __pmGetNameInfo(). commit b01572d581dea4adffd839d8e339656349e63b3d Author: Dave Brolley Date: Tue Mar 4 15:51:09 2014 -0500 Fix memory lead (ctxhost) in __pmLogFindPort() commit e5b3075f4617597e22f5ba88fb0078e51b4c8fa4 Author: Dave Brolley Date: Tue Mar 4 15:43:05 2014 -0500 Fix fd leak in connectLoggerLocal() commit 707b499d8fd9867be47bfae2c0d2f2e2b226aa33 Author: Dave Brolley Date: Tue Mar 4 15:22:23 2014 -0500 Rename of __pmMkDir() to __pmMkPath() should have been to __pmMakePath(). The actual name suggested in the code review. commit fb5b05c1b1dabc4185263b87fd96f766621d2a62 Author: Dave Brolley Date: Tue Mar 4 15:04:11 2014 -0500 Code formatting and typo fixes as recommended by code review. Items mentioned in the code review for AF_UNIX sockets for pmlogger/pmlc. commit 9aabf24a17e71cff1c221a184d875b8f0ea0d76a Author: Dave Brolley Date: Tue Mar 4 14:32:16 2014 -0500 Change the API for __pmLogLocalSocketDefault() and __pmLogLocalSocketUser(). - Buffers are no longer static within the function. - Buffers and size are now passed in by th caller. - No need for PM_LOCK anymore. - Update all callers. - Update check-statics commit d2e87db1c006c98067e05fac25c354dec79923c3 Author: Dave Brolley Date: Mon Mar 3 17:35:21 2014 -0500 __pmHomedirFromID() now returns NULL on error. All Callers updated. commit 138d204590757960879499918315e725aa4fb920 Author: Dave Brolley Date: Mon Mar 3 17:31:25 2014 -0500 Rename __pmMkdir() to __pmMkPath() and add new exports to the PCP_3.2 section. commit f3dba49cafd9da8a68d686b433bca3197c51f29e Author: Dave Brolley Date: Mon Mar 3 12:50:06 2014 -0500 For ordinary users, create the AF_UNIX pmlogger control socket in ~/.pcp/run/ Created as ~/.pcp/run/pmlogger..socket From brolley@redhat.com Wed Mar 5 11:10:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 493F37F3F for ; Wed, 5 Mar 2014 11:10:29 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 32B378F8084 for ; Wed, 5 Mar 2014 09:10:25 -0800 (PST) X-ASG-Debug-ID: 1394039424-04cb6c56762a2010001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Ck4IWElsqwRuHEr0 for ; Wed, 05 Mar 2014 09:10:24 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s25HANOL004681 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 5 Mar 2014 12:10:23 -0500 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s25HAM4s017760; Wed, 5 Mar 2014 12:10:22 -0500 Message-ID: <53175AAC.5050706@redhat.com> Date: Wed, 05 Mar 2014 12:11:08 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump In-Reply-To: <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> Content-Type: multipart/alternative; boundary="------------060705080905060203010404" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394039424 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This is a multi-part message in MIME format. --------------060705080905060203010404 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 02/27/2014 01:15 AM, Nathan Scott wrote: >> diff --git a/src/pmlogconf/pmlogconf.sh b/src/pmlogconf/pmlogconf.sh >> index db98da8..7e10e5d 100755 >> --- a/src/pmlogconf/pmlogconf.sh >> +++ b/src/pmlogconf/pmlogconf.sh >> @@ -11,6 +11,7 @@ >> # when the group was added to the configuration file >> # delta delta argument for pmlogger "logging ... on delta" clause >> # >> +# Copyright (c) 2014 Red Hat. >> # Copyright (c) 1998,2003 Silicon Graphics, Inc. All Rights Reserved. >> # >> # This program is free software; you can redistribute it and/or modify it >> @@ -485,8 +486,9 @@ End-of-File >> # >> >> [access] >> -disallow * : all; >> -allow localhost : enquire; >> +disallow .* : all; >> +disallow :* : all; >> +allow local:* : enquire; >> End-of-File > Hmmm. When I run QA on this code, after an upgrade (so, without > the above change), test 023 hangs. I wonder if the above change > is being assumed to be in place...? > OK. I've tracked this down to the following code in _check_logger within pmlogger_check.sh: # wait until pmlogger process starts, or exits # delay=5 [ ! -z "$PMCD_CONNECT_TIMEOUT" ] && delay=$PMCD_CONNECT_TIMEOUT x=5 [ ! -z "$PMCD_REQUEST_TIMEOUT" ] && x=$PMCD_REQUEST_TIMEOUT # wait for maximum time of a connection and 20 requests # delay=`expr \( $delay + 20 \* $x \) \* 10` # tenths of a second while [ $delay -gt 0 ] do if [ -f $logfile ] then # $logfile was previously removed, if it has appeared again # then we know pmlogger has started ... if not just sleep and # try again # if echo "connect $1" | pmlc 2>&1 | grep "Unable to connect" >/dev/null then : else $VERBOSE && echo " done" return 0 fi [ .... ] pmsleep 0.1 delay=`expr $delay - 1` $VERBOSE && [ `expr $delay % 10` -eq 0 ] && \ $PCP_ECHO_PROG $PCP_ECHO_N ".""$PCP_ECHO_C" done This code tries to make sure that pmlogger is running by attempting to connect using pmlc. Without the updated access controls, pmlogger correctly rejects each connection attempt and the loop logic does work as intended, decrementing $delay toward zero. The problem is that $delay gets set to 25100, and each connection attempt takes about 1 second. As a result we wait for a looooong time, making repeated failed connection attempts. A few observations: * Even if $delay is intended to 10ths of a second, as the pmsleep implies, 2510 seconds is still a long time. * The comment says that a max of 20 requests will be made, but I can't figure out how that is represented by $delay. This could probably be better represented by a connection counter. * $delay for the loop was set this high because the original $delay and $x were set to 150 and 120 respectively. i.e. it looks like the $PMCD_* defaults kicked in. Is this as intended? * For this case where the response is "Unable to connect: ... Connection refused", the loop should exit immediately. Dave --------------060705080905060203010404 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit On 02/27/2014 01:15 AM, Nathan Scott wrote:
diff --git a/src/pmlogconf/pmlogconf.sh b/src/pmlogconf/pmlogconf.sh
index db98da8..7e10e5d 100755
--- a/src/pmlogconf/pmlogconf.sh
+++ b/src/pmlogconf/pmlogconf.sh
@@ -11,6 +11,7 @@
 #		when the group was added to the configuration file
 #	delta	delta argument for pmlogger "logging ... on delta" clause
 #
+# Copyright (c) 2014 Red Hat.
 # Copyright (c) 1998,2003 Silicon Graphics, Inc.  All Rights Reserved.
 # 
 # This program is free software; you can redistribute it and/or modify it
@@ -485,8 +486,9 @@ End-of-File
 #
 
 [access]
-disallow * : all;
-allow localhost : enquire;
+disallow .* : all;
+disallow :* : all;
+allow local:* : enquire;
 End-of-File
Hmmm.  When I run QA on this code, after an upgrade (so, without
the above change), test 023 hangs.  I wonder if the above change
is being assumed to be in place...?

OK. I've tracked this down to the following code in _check_logger within pmlogger_check.sh:

    # wait until pmlogger process starts, or exits
    #
    delay=5
    [ ! -z "$PMCD_CONNECT_TIMEOUT" ] && delay=$PMCD_CONNECT_TIMEOUT
    x=5
    [ ! -z "$PMCD_REQUEST_TIMEOUT" ] && x=$PMCD_REQUEST_TIMEOUT

    # wait for maximum time of a connection and 20 requests
    #
    delay=`expr \( $delay + 20 \* $x \) \* 10`    # tenths of a second
    while [ $delay -gt 0 ]
    do
    if [ -f $logfile ]
    then
        # $logfile was previously removed, if it has appeared again
        # then we know pmlogger has started ... if not just sleep and
        # try again
        #
        if echo "connect $1" | pmlc 2>&1 | grep "Unable to connect" >/dev/null
        then
        :
        else
        $VERBOSE && echo " done"
        return 0
        fi

    [ .... ]

    pmsleep 0.1
    delay=`expr $delay - 1`
    $VERBOSE && [ `expr $delay % 10` -eq 0 ] && \
            $PCP_ECHO_PROG $PCP_ECHO_N ".""$PCP_ECHO_C"
    done

This code tries to make sure that pmlogger is running by attempting to connect using pmlc. Without the updated access controls, pmlogger correctly rejects each connection attempt and the loop logic does work as intended, decrementing $delay toward zero. The problem is that $delay gets set to 25100, and each connection attempt takes about 1 second. As a result we wait for a looooong time, making repeated failed connection attempts.

A few observations:
  • Even if $delay is intended to 10ths of a second, as the pmsleep implies, 2510 seconds is still a long time.
  • The comment says that a max of 20 requests will be made, but I can't figure out how that is represented by $delay. This could probably be better represented by a connection counter.
  • $delay for the loop was set this high because the original $delay and $x were set to 150 and 120 respectively. i.e. it looks like the $PMCD_* defaults kicked in. Is this as intended?
  • For this case where the response is "Unable to connect: ... Connection refused", the loop should exit immediately.
Dave
--------------060705080905060203010404-- From fche@redhat.com Wed Mar 5 13:31:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3B5737F3F for ; Wed, 5 Mar 2014 13:31:03 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id CA7E0AC00B for ; Wed, 5 Mar 2014 11:31:02 -0800 (PST) X-ASG-Debug-ID: 1394047858-04bdf05dab2d1cf0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Co6QIAVrztMdysSa for ; Wed, 05 Mar 2014 11:30:58 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s25JUu7u024487 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 5 Mar 2014 14:30:56 -0500 Received: from fche.csb (vpn-236-250.phx2.redhat.com [10.3.236.250]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s25JUsl0015574; Wed, 5 Mar 2014 14:30:54 -0500 Received: by fche.csb (Postfix, from userid 2569) id DFBAE58106; Wed, 5 Mar 2014 14:30:53 -0500 (EST) To: Dave Brolley Cc: Nathan Scott , pcp@oss.sgi.com Subject: Re: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> X-ASG-Orig-Subj: Re: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump From: fche@redhat.com (Frank Ch. Eigler) Date: Wed, 05 Mar 2014 14:30:53 -0500 In-Reply-To: <53175AAC.5050706@redhat.com> (Dave Brolley's message of "Wed, 05 Mar 2014 12:11:08 -0500") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394047858 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 brolley wrote: > [...] > [access] > -disallow * : all; > -allow localhost : enquire; > +disallow .* : all; > +disallow :* : all; > +allow local:* : enquire; > [...] That is a drastic change, by the way, removing "enquire" powers from localhost. (We should open a bug to remind ourselves to fix the pmlogger bug that allows mutation operations to be triggered at the pmlc-enquire privilege, as discussed on IRC.) > This code tries to make sure that pmlogger is running by attempting to connect > using pmlc. Without the updated access controls, pmlogger correctly rejects > each connection attempt [...] While you were away last week, we were talking about ACL enforcement options for the AF_UNIX link. Because of world-readable directories, a default that prohibits localhost but permits local: (AF_UNIX) doesn't give us any additional security. We really need to use AF_UNIX's credential-passing facility. Where is the "local:*" part of that ACL documented, by the way? Can we teach it something like: local:uid /* to mean same-uid as pmlogger */ local:gid /* to mean same-gid as pmlogger */ Then the default ACLs could become these, if we wish to restore unprivileged enquiry: disallow .* : all; disallow :* : all; disallow local:* : all; # allow localhost : enquire; allow localhost6 : enquire; allow local:* : enquire; # allow local:uid : all; - FChE From kenj@internode.on.net Wed Mar 5 18:16:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 72B567F3F for ; Wed, 5 Mar 2014 18:16:27 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3E8798F8073 for ; Wed, 5 Mar 2014 16:16:23 -0800 (PST) X-ASG-Debug-ID: 1394064978-04bdf05daa2e3a00001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id pATdeHeB7KrEF4Kw for ; Wed, 05 Mar 2014 16:16:18 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApMBACK9F1N20adJ/2dsb2JhbAANTcIdgwqBMIMZAQEBAwF4AQULCxgJFg8JAwIBAgFFBg0BBwEBh22tPaFOF44AAQFPB4Q4AQOuKYFd Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 06 Mar 2014 10:46:17 +1030 Message-ID: <5317BE58.6020603@internode.on.net> Date: Thu, 06 Mar 2014 11:16:24 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "Frank Ch. Eigler" CC: pcp@oss.sgi.com Subject: Re: pmmgr build failure on 32-bit Fedora release 17 (Beefy Miracle) References: <53101471.4000200@internode.on.net> <5311157B.9010004@internode.on.net> <20140228231759.GA18123@redhat.com> <5316AD5C.3030408@internode.on.net> <20140305150207.GB27666@redhat.com> X-ASG-Orig-Subj: Re: pmmgr build failure on 32-bit Fedora release 17 (Beefy Miracle) In-Reply-To: <20140305150207.GB27666@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1394064978 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3638 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header Thanks Frank for continuing to help out here ... On 06/03/14 02:02, Frank Ch. Eigler wrote: > ... > So something went wrong around this point. Do you perhaps have a > personal $HOME/.rpm* file or a modified system one? I don't have any $HOME/.rpm* files Not sure where the "system one" is hiding, but I've not deliberately changed anything related to rpm, and sniffing all the rpms with rpm in their names ... rpm --verify rpmconf rpm-libs rpm-build rpm-build-libs rpm rpm-python rpmreaper deltarpm python-deltarpm produces no output. > I think the key is to stop overriding what are probably the proper > system defaults; we just need to find what's doing the dirty deed. > You should be seeing this: > > % rpm --eval %_target_cpu > i686 The answer comes back ... $ rpm --eval %_target_cpu i386 but kenj@vm12:~$ uname -a Linux vm12 3.9.10-100.fc17.i686 #1 SMP Sun Jul 14 01:40:11 UTC 2013 i686 i686 i386 GNU/Linux which seems a bit odd but maybe is OK. I thought the VM config may have been (accidentally) changed at some point, and the CPU config had been something different at the initial install or at some subsequent boot or upgrade. So I blew the VM away, and started again with kvm style kvm32 Model CPUs ... reinstalled Fedora 17 32-bit and all the needed RPMs, recloned the PCP tree, but Makepkgs dies the same way and the /etc/rpmrc "hack" does provide a workaround ... back to the mail thread ... > % grep _cpu /usr/lib/rpm/macros /etc/rpm/* $HOME/.rpm* > /usr/lib/rpm/macros:%_build_cpu %{_host_cpu} > /usr/lib/rpm/macros:%_host_cpu i686 > /usr/lib/rpm/macros:%_target_cpu %{_host_cpu} kenj@vm12:~/src/pcp$ grep _cpu /usr/lib/rpm/macros /etc/rpm/* $HOME/.rpm* /usr/lib/rpm/macros:%_target_platform %{_target_cpu}-%{_vendor}-%{_target_os}%{?_gnu} /usr/lib/rpm/macros:%_build_cpu %{_host_cpu} /usr/lib/rpm/macros:%_host_cpu i686 /usr/lib/rpm/macros:%_target_cpu %{_host_cpu} grep: /home/kenj/.rpm*: No such file or directory So I think I'll leave the "hack" in place for now, and assume Fedora 17 will be retired from active QA duty at some point in the not too distant future. From fche@redhat.com Wed Mar 5 20:04:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DFB1F7F50 for ; Wed, 5 Mar 2014 20:04:50 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id C414A8F8068 for ; Wed, 5 Mar 2014 18:04:47 -0800 (PST) X-ASG-Debug-ID: 1394071484-04cb6c56762c5bc0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id gNNCNZG7il9lUqrB for ; Wed, 05 Mar 2014 18:04:44 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2624R9G016165 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 5 Mar 2014 21:04:28 -0500 Received: from fche.csb (vpn-236-250.phx2.redhat.com [10.3.236.250]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s26218FT031886; Wed, 5 Mar 2014 21:01:08 -0500 Received: by fche.csb (Postfix, from userid 2569) id 77BAA58106; Wed, 5 Mar 2014 21:01:06 -0500 (EST) Date: Wed, 5 Mar 2014 21:01:06 -0500 From: "Frank Ch. Eigler" To: Ken McDonell Cc: pcp@oss.sgi.com Subject: Re: pmmgr build failure on 32-bit Fedora release 17 (Beefy Miracle) Message-ID: <20140306020106.GA6053@redhat.com> X-ASG-Orig-Subj: Re: pmmgr build failure on 32-bit Fedora release 17 (Beefy Miracle) References: <53101471.4000200@internode.on.net> <5311157B.9010004@internode.on.net> <20140228231759.GA18123@redhat.com> <5316AD5C.3030408@internode.on.net> <20140305150207.GB27666@redhat.com> <5317BE58.6020603@internode.on.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5317BE58.6020603@internode.on.net> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394071484 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Ken - > Thanks Frank for continuing to help out here ... No problem, it's an annoying little mystery; thanks for sticking with it! > [...] > $ rpm --eval %_target_cpu > i386 Yup, that's where it starts going wrong. > kenj@vm12:~$ uname -a > Linux vm12 3.9.10-100.fc17.i686 #1 SMP Sun Jul 14 01:40:11 UTC 2013 i686 i686 i386 GNU/Linux Even on my 32-bit rawhide vm, that i386 bit at the end matches, so I don't think that's a causal factor. > I thought the VM config may have been (accidentally) changed at some > point, and the CPU config had been something different at the > initial install or at some subsequent boot or upgrade. So I blew > the VM away, and started again with kvm style kvm32 Model CPUs That was an excellent guess. Having looked through rpm's source code briefly (the magic seems to be in lib/rpmrc.c), I backed away with the sweat of fear, and remain mystified why it'd have chosen i386 for you. > ... reinstalled Fedora 17 32-bit and all the needed RPMs, recloned > the PCP tree, but Makepkgs dies the same way and the /etc/rpmrc > "hack" does provide a workaround [...] Thanks. For better or for worse, F17 has already lost upstream support, as has F18 for that matter. F19 and F20 are supported (and have libatomic, so the other build fix would kick in). (Another option for building distro-flavoured RPMs is to use mock to maintain & use hygienic rpm buildroot environments.) - FChE From nscott@redhat.com Wed Mar 5 20:31:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 525BD7F50 for ; Wed, 5 Mar 2014 20:31:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2FCCC8F8033 for ; Wed, 5 Mar 2014 18:31:25 -0800 (PST) X-ASG-Debug-ID: 1394073083-04cbb054b7d5170001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id sjFQ19TvHhgNXSse for ; Wed, 05 Mar 2014 18:31:23 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s262VJ2G024678; Wed, 5 Mar 2014 21:31:19 -0500 Date: Wed, 5 Mar 2014 21:31:19 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: PCP Mailing List Message-ID: <1094109304.21565790.1394073079237.JavaMail.zimbra@redhat.com> In-Reply-To: <5316DD31.2020700@internode.on.net> References: <530FCCED.4000403@internode.on.net> <1082118100.19105328.1393667279427.JavaMail.zimbra@redhat.com> <5316DD31.2020700@internode.on.net> Subject: Re: [pcp] Another build problem - python bits on Linux Mint 12 MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] Another build problem - python bits on Linux Mint 12 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Another build problem - python bits on Linux Mint 12 Thread-Index: +Dri1ejhg0JBbK+5seagJkdiPjY4MQ== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394073083 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3641 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > [...] > for V in 2.7 2.6; do \ > export GZIP=-9q DIST_ROOT=`pwd`/debian/python-pcp; > /usr/bin/make PYTHON=python$V -C src/python install; \ > done > > I think the problem is that the first make leaves 2.7 turds behind that > are not remade for 2.6 ... adding /usr/bin/make -C src/python clean > after the make install seems to fix this, but I don't know if that > leaves the tree in a bozo state, and this sort of hack cannot possibly > work for some other builds, like for tarball packaging. Yes, that explanation makes sense - and I think that fix will work fine. > > It seems like you need to clone src/python for each version of Python > that you want to build for, and descend into each of these in turn at > each step in the build. > Yep, or that - I think your make clean solution above will be simplest. cheers. -- Nathan From kenj@internode.on.net Wed Mar 5 20:40:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 111D27F50 for ; Wed, 5 Mar 2014 20:40:44 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id E1BFE8F8054 for ; Wed, 5 Mar 2014 18:40:43 -0800 (PST) X-ASG-Debug-ID: 1394073641-04cb6c56762c7680001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id gshsZGzwuT0fl94L for ; Wed, 05 Mar 2014 18:40:42 -0800 (PST) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApQBAErfF1N20adJ/2dsb2JhbAANTYceuwWDCoEwgxkBAQEEIxVAARALGAICBRYLAgIJAwIBAgFFBg0BBwEBtS12oG4XgSmNKAeCb4FJAQOuKQ Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 06 Mar 2014 13:10:41 +1030 Message-ID: <5317E030.4000108@internode.on.net> Date: Thu, 06 Mar 2014 13:40:48 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: PCP Mailing List Subject: Re: [pcp] Another build problem - python bits on Linux Mint 12 References: <530FCCED.4000403@internode.on.net> <1082118100.19105328.1393667279427.JavaMail.zimbra@redhat.com> <5316DD31.2020700@internode.on.net> <1094109304.21565790.1394073079237.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] Another build problem - python bits on Linux Mint 12 In-Reply-To: <1094109304.21565790.1394073079237.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1394073642 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3641 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 06/03/14 13:31, Nathan Scott wrote: > ... > Yes, that explanation makes sense - and I think that fix will work fine. I've tested this with 1 and 2 Python versions installed on debian-like systems ... build works, qa -g python works. Commit in my next batch. From nscott@redhat.com Thu Mar 6 01:58:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D5C657F50 for ; Thu, 6 Mar 2014 01:58:35 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id B6723304075 for ; Wed, 5 Mar 2014 23:58:35 -0800 (PST) X-ASG-Debug-ID: 1394092710-04bdf076f022030001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id SVTQQtpPJRAyvY5f for ; Wed, 05 Mar 2014 23:58:30 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s267wTqo021678 for ; Thu, 6 Mar 2014 02:58:29 -0500 Date: Thu, 6 Mar 2014 02:58:29 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <1468197943.21641874.1394092709858.JavaMail.zimbra@redhat.com> In-Reply-To: <256301258.21640702.1394092562136.JavaMail.zimbra@redhat.com> Subject: pcp updates: getopts (wip) MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: getopts (wip) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: getopts (wip) Thread-Index: ILpNlaAhJP1rO/KFCk1jML2wH37XBQ== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394092710 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3646 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/nathans/pcp.git dev qa/728 | 90 +++ qa/728.out | 572 ++++++++++++++++++++ qa/group | 1 qa/src/.gitignore | 1 qa/src/GNUlocaldefs | 7 qa/src/getoptions.c | 226 ++++++++ src/include/pcp/pmapi.h | 127 ++++ src/libpcp/src/GNUmakefile | 2 src/libpcp/src/check-statics | 1 src/libpcp/src/exports | 7 src/libpcp/src/getopt.c | 1209 +++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 2230 insertions(+), 13 deletions(-) commit cdd1b323287434c74853f1460257ac8176777ffd Author: Nathan Scott Date: Thu Mar 6 17:51:15 2014 +1100 Initial code for pmGetOptions common PMAPI option parsing Early code providing option parsing interfaces to abstract the common getopt handling boilerplate code for PMAPI clients. It also provides for long-options on all platforms. Refer to the qa/src/getoptions.c for some test code (and qa/728). Missing at this stage are man pages, more comprehensive testing, the python API, sample programs (uptime.py!) and then we can get started on the journey toward converting all the existing client tools over to using this API. From nscott@redhat.com Thu Mar 6 02:13:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EE30F7F50 for ; Thu, 6 Mar 2014 02:13:26 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id CDFC18F8054 for ; Thu, 6 Mar 2014 00:13:23 -0800 (PST) X-ASG-Debug-ID: 1394093598-04cb6c56772d8190001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id GHZZcvHJ0GZlNR4u for ; Thu, 06 Mar 2014 00:13:18 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s268DGaR016090; Thu, 6 Mar 2014 03:13:16 -0500 Date: Thu, 6 Mar 2014 03:13:16 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <1602369634.21652898.1394093596629.JavaMail.zimbra@redhat.com> In-Reply-To: References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> Subject: Re: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump MIME-Version: 1.0 X-ASG-Orig-Subj: Re: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Thread-Index: JbVHvMuVMG1qMKWNMGiTI1XDBRk5Hw== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394093598 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3646 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > > brolley wrote: > > > > [...] > > [access] > > -disallow * : all; > > -allow localhost : enquire; > > +disallow .* : all; > > +disallow :* : all; > > +allow local:* : enquire; > > [...] > > That is a drastic change, by the way, removing "enquire" powers from > localhost. (We should open a bug to remind ourselves to fix the Indeed, it is probably too big a risk for a point release I think, given its the likely (root) cause of that test system failing to start pmlogger after an upgrade with an existing config. > pmlogger bug that allows mutation operations to be triggered at the > pmlc-enquire privilege, as discussed on IRC.) > > > This code tries to make sure that pmlogger is running by attempting to > > connect > > using pmlc. Without the updated access controls, pmlogger correctly rejects > > each connection attempt [...] That'd be a bug, for people on the point-release-upgrade path. But... > While you were away last week, we were talking about ACL enforcement > options for the AF_UNIX link. Because of world-readable directories, > a default that prohibits localhost but permits local: (AF_UNIX) > doesn't give us any additional security. [ It does give us the option of moving away from a network accessible socket (perhaps via command line flag), removing all remote exploit possibilities - which is some additional security I guess. ] > We really need to use > AF_UNIX's credential-passing facility. > > Where is the "local:*" part of that ACL documented, by the way? Can > we teach it something like: > > local:uid /* to mean same-uid as pmlogger */ > local:gid /* to mean same-gid as pmlogger */ But same-uid/gid should always be able to connect & have full access permissions; in which case, this whole problem goes away (AFAICT) and we have a safe upgrade path. Simpler code & configuration files too. Is there any reason to not allow same-uid/gid full access? cheers. -- Nathan From nscott@redhat.com Thu Mar 6 02:32:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 008BB7F50 for ; Thu, 6 Mar 2014 02:32:56 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8A8A0AC00A for ; Thu, 6 Mar 2014 00:32:56 -0800 (PST) X-ASG-Debug-ID: 1394094774-04cb6c56752d9320001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id AFV3Cx9fPIcjRtay for ; Thu, 06 Mar 2014 00:32:54 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s268WsET027973; Thu, 6 Mar 2014 03:32:54 -0500 Date: Thu, 6 Mar 2014 03:32:54 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <913305437.21662865.1394094773997.JavaMail.zimbra@redhat.com> In-Reply-To: <53175AAC.5050706@redhat.com> References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Thread-Index: FZ/OIDg8+bNMxiaQ7t3sKNZ1DJwj8Q== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394094774 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3647 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Dave, ----- Original Message ----- > [...] > This code tries to make sure that pmlogger is running by attempting to > connect using pmlc. Without the updated access controls, pmlogger > correctly rejects each connection attempt and the loop logic does work > as intended, decrementing $delay toward zero. The problem is that $delay > gets set to 25100, and each connection attempt takes about 1 second. As Hmm, that seems alot (the 1 sec to fail a local connection part). *shrug* > a result we wait for a looooong time, making repeated failed connection > attempts. > > A few observations: > > * Even if $delay is intended to 10ths of a second, as the pmsleep > implies, 2510 seconds is still a long time. IIRC, it originates from /etc/pcp/pmlogger/control ... # for remote loggers running over a WAN with potentially long delays $PMCD_CONNECT_TIMEOUT=150 $PMCD_REQUEST_TIMEOUT=120 > * The comment says that a max of 20 requests will be made, but I can't > figure out how that is represented by $delay. This could probably be > better represented by a connection counter. > * $delay for the loop was set this high because the original $delay > and $x were set to 150 and 120 respectively. i.e. it looks like the > $PMCD_* defaults kicked in. Is this as intended? Ah, right (from above file). Yes, I think so - pmlogger may take a very long time to start, so pmlc has to be prepared to wait for an equally (or slightly longer) very long time. > * For this case where the response is "Unable to connect: ... > Connection refused", the loop should exit immediately. That doesn't sound right - did you mean "Permission denied"? We expect to get connection refused (i.e. pmlogger is not yet listening) for some time, for pmlogger processes logging far-away hosts in particular. At the end of the day, none of this is acceptable behaviour for someone upgrading a perfectly working system of course. We can also expect that some people will continue to use existing configuration files - we can't assume any change there (via pmlogconf), it needs to Just Work (and it'd be preferable to improve security for those folks with unchanged configs too, but that may not be possible & that's fine). There are people who generate or otherwise supply pmlogger config files of their own crafting - e.g. predating pmlogconf - those environments need to continue working after the upgrade. cheers. -- Nathan From nscott@redhat.com Thu Mar 6 02:59:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B44037F50 for ; Thu, 6 Mar 2014 02:59:48 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4298FAC007 for ; Thu, 6 Mar 2014 00:59:47 -0800 (PST) X-ASG-Debug-ID: 1394096385-04cbb054b9e7440001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id bXONSfSLRk8GqkuM for ; Thu, 06 Mar 2014 00:59:45 -0800 (PST) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s268xjAv031501; Thu, 6 Mar 2014 03:59:45 -0500 Date: Thu, 6 Mar 2014 03:59:44 -0500 (EST) From: Nathan Scott Reply-To: Nathan Scott To: Stan Cox Cc: PCP Mailing List Message-ID: <947078190.21672641.1394096384992.JavaMail.zimbra@redhat.com> In-Reply-To: <1468197943.21641874.1394092709858.JavaMail.zimbra@redhat.com> References: <1468197943.21641874.1394092709858.JavaMail.zimbra@redhat.com> Subject: Re: [pcp] pcp updates: getopts (wip) MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates: getopts (wip) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: getopts (wip) Thread-Index: ILpNlaAhJP1rO/KFCk1jML2wH37XBflm6fO6 X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394096385 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3647 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Stan, Could I get you (and any other interested parties!) to review these changes? This git tree is likely to receive a git rebase at some point soon, so please don't pull it into a precious branch (like scox/dev in pcpfans) - perhaps a new clone/branch just for reviewing would be the go. I'd be particularly interested in any thoughts on how to plug this stuff into python clients, in the simplest fashion possible. We will need the ctypes function/type wrappers, of course, but going beyond that...? I'd like to get to the point that the simple uptime.py example could gain just one or two lines of code, and somehow (?) be able to pass command line state directly to the pmContext class (probably has to be during construction?). Or some wrapper, that makes it equally trivial for a high-level client to easily enable all those options - i.e. with no option handling code, if the tool chooses - just passing argc/argv in *somewhere*, and have the pmContext created correctly with any and all standard (-h/-a/-S/... etc) arguments given. Thanks! > Changes committed to git://oss.sgi.com/nathans/pcp.git dev > > qa/728 | 90 +++ > qa/728.out | 572 ++++++++++++++++++++ > qa/group | 1 > qa/src/.gitignore | 1 > qa/src/GNUlocaldefs | 7 > qa/src/getoptions.c | 226 ++++++++ > src/include/pcp/pmapi.h | 127 ++++ > src/libpcp/src/GNUmakefile | 2 > src/libpcp/src/check-statics | 1 > src/libpcp/src/exports | 7 > src/libpcp/src/getopt.c | 1209 > +++++++++++++++++++++++++++++++++++++++++++ > 11 files changed, 2230 insertions(+), 13 deletions(-) > > commit cdd1b323287434c74853f1460257ac8176777ffd > Author: Nathan Scott > Date: Thu Mar 6 17:51:15 2014 +1100 > > Initial code for pmGetOptions common PMAPI option parsing > > Early code providing option parsing interfaces to abstract the > common getopt handling boilerplate code for PMAPI clients. It > also provides for long-options on all platforms. Refer to the > qa/src/getoptions.c for some test code (and qa/728). > > Missing at this stage are man pages, more comprehensive testing, > the python API, sample programs (uptime.py!) and then we can get > started on the journey toward converting all the existing client > tools over to using this API. cheers. -- Nathan From dak-unpriv@franck.debian.org Thu Mar 6 03:36:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0841C7F50 for ; Thu, 6 Mar 2014 03:36:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 99738AC007 for ; Thu, 6 Mar 2014 01:36:45 -0800 (PST) X-ASG-Debug-ID: 1394098603-04cbb054b7e95d0001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id T5C8GhvchmQYuqSb (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Thu, 06 Mar 2014 01:36:44 -0800 (PST) X-Barracuda-Envelope-From: dak-unpriv@franck.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak-unpriv by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WLUjL-0003c5-5W for pcp@oss.sgi.com; Thu, 06 Mar 2014 09:36:43 +0000 To: pcp@oss.sgi.com From: Debian FTP Masters Subject: Processing of pcp-gui_1.5.13_i386.changes Date: Thu, 06 Mar 2014 09:36:43 +0000 X-ASG-Orig-Subj: Processing of pcp-gui_1.5.13_i386.changes X-Debian: DAK X-DAK: DAK Precedence: bulk Auto-Submitted: auto-generated X-Debian-Package: pcp-gui Message-Id: Sender: unprivileged ftp-master role account X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1394098604 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3648 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- pcp-gui_1.5.13_i386.changes uploaded successfully to localhost along with the files: pcp-gui_1.5.13.dsc pcp-gui_1.5.13.tar.xz pcp-gui_1.5.13_i386.deb pcp-doc_1.5.13_all.deb pcp-gui-testsuite_1.5.13_i386.deb Greetings, Your Debian queue daemon (running on host franck.debian.org) From envelope@ftp-master.debian.org Thu Mar 6 03:53:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 115007F50 for ; Thu, 6 Mar 2014 03:53:29 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id AB15AAC007 for ; Thu, 6 Mar 2014 01:53:28 -0800 (PST) X-ASG-Debug-ID: 1394099606-04cb6c56752ddff0001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id y3pzcDrMyQYTEx49 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Thu, 06 Mar 2014 01:53:27 -0800 (PST) X-Barracuda-Envelope-From: envelope@ftp-master.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WLUzV-0000Xd-JU; Thu, 06 Mar 2014 09:53:25 +0000 From: Debian FTP Masters To: PCP Development Team , Nathan Scott X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: pcp-gui Precedence: bulk Auto-Submitted: auto-generated MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Subject: pcp-gui_1.5.13_i386.changes ACCEPTED into unstable Message-Id: X-ASG-Orig-Subj: pcp-gui_1.5.13_i386.changes ACCEPTED into unstable Sender: Archive Administrator Date: Thu, 06 Mar 2014 09:53:25 +0000 X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1394099607 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3648 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Accepted: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.8 Date: Thu, 06 Mar 2014 10:49:16 +1100 Source: pcp-gui Binary: pcp-gui pcp-doc pcp-gui-testsuite Architecture: source i386 all Version: 1.5.13 Distribution: unstable Urgency: low Maintainer: PCP Development Team Changed-By: Nathan Scott Description: pcp-doc - Documentation and tutorial for the Performance Co-Pilot pcp-gui - Visualisation tools for the Performance Co-Pilot toolkit pcp-gui-testsuite - Performance Co-Pilot (PCP) GUI Test Suite Changes: pcp-gui (1.5.13) unstable; urgency=low . * New pcp-gui release (see doc/CHANGES for details). Checksums-Sha1: 099cf3d3f9d39742daed5757f21c9eb91e3e8cfa 1002 pcp-gui_1.5.13.dsc 645e44618e1369b171e85779c68424f8b39f68b9 4403568 pcp-gui_1.5.13.tar.xz 66d86f3d8c7815f18aa2a4ea17da04bc55cec62e 885336 pcp-gui_1.5.13_i386.deb ad5dfe3e767e78c4dddeec77fbaa0eeb4fb01c0c 2904706 pcp-doc_1.5.13_all.deb cedeffbe58a53499b917511641e497c5144b18bb 247122 pcp-gui-testsuite_1.5.13_i386.deb Checksums-Sha256: b898f6d6cbce452e6381a946daac22b247c1e90136cb85c3e45bddd287a2218d 1002 pcp-gui_1.5.13.dsc 92b3ef8755e27ebf9ab7401e56cb798262a2436e33144bff724102fc3b7a456d 4403568 pcp-gui_1.5.13.tar.xz f94c93c9276acfe2bb588742379563b9a32590e6b66eb76efbbc158917ae90a0 885336 pcp-gui_1.5.13_i386.deb 4b21a9fc95758c0e02e2aa05a3bbbb0c0a049eccd0bdbc955750651b72a0930a 2904706 pcp-doc_1.5.13_all.deb a64e00b35354bcba8cc617f3952e101c73e5e086098aebe67e0853502c5a9fb7 247122 pcp-gui-testsuite_1.5.13_i386.deb Files: 644dc41a826c4a913688fab1a5146802 1002 utils extra pcp-gui_1.5.13.dsc 585657859c780a826c034919c846c56d 4403568 utils extra pcp-gui_1.5.13.tar.xz 48e9042924914573842537df7186ff00 885336 utils extra pcp-gui_1.5.13_i386.deb e13661e7fde91ca3035395f7608c2980 2904706 doc extra pcp-doc_1.5.13_all.deb 4c53d309dc4836199f65b16f997d1e73 247122 utils extra pcp-gui-testsuite_1.5.13_i386.deb -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlMX49QACgkQm8fl3HSIa2MF+gCghhOXcdXFSk2NJmvMRD4EpNma GuQAoJedFcGgHRlYb4bANyETkGnh5dUc =WrM+ -----END PGP SIGNATURE----- Thank you for your contribution to Debian. From brolley@redhat.com Thu Mar 6 09:37:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E9FFF7F50 for ; Thu, 6 Mar 2014 09:37:40 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 91314AC002 for ; Thu, 6 Mar 2014 07:37:37 -0800 (PST) X-ASG-Debug-ID: 1394120253-04bdf05dac314740001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id gxigiDuMHTs8NgVJ for ; Thu, 06 Mar 2014 07:37:33 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s26FbW5R015077 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 6 Mar 2014 10:37:32 -0500 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s26FbV8e030254; Thu, 6 Mar 2014 10:37:31 -0500 Message-ID: <5318966A.2080600@redhat.com> Date: Thu, 06 Mar 2014 10:38:18 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: "Frank Ch. Eigler" CC: Nathan Scott , pcp@oss.sgi.com Subject: Re: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> X-ASG-Orig-Subj: Re: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394120253 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 03/05/2014 02:30 PM, Frank Ch. Eigler wrote: > brolley wrote: > > >> [...] >> [access] >> -disallow * : all; >> -allow localhost : enquire; >> +disallow .* : all; >> +disallow :* : all; >> +allow local:* : enquire; >> [...] > That is a drastic change, by the way, removing "enquire" powers from > localhost. (We should open a bug to remind ourselves to fix the > pmlogger bug that allows mutation operations to be triggered at the > pmlc-enquire privilege, as discussed on IRC.) I think you have the wrong idea. This does not remove enquire powers from localhost. "local:*" here works the same way as it does for pmcd, which is to say that it means "unix:*" followed by "localhost". What this change is intended to do is to enable the "unix:*" part which is not allowed by the existing '*' config line. We made the exact same change to the pmcd access controls when AF_UNIX, unix: and local: were implemented there. Now that I reconsider this, I believe, as Nathan does, that the failure of pmlc to connect during the pmlogger startup test is probably a bug, since the "localhost" part of "local:*" should have been allowed. I'll look into that further. > >> This code tries to make sure that pmlogger is running by attempting to connect >> using pmlc. Without the updated access controls, pmlogger correctly rejects >> each connection attempt [...] > While you were away last week, we were talking about ACL enforcement > options for the AF_UNIX link. Because of world-readable directories, > a default that prohibits localhost but permits local: (AF_UNIX) > doesn't give us any additional security. We really need to use > AF_UNIX's credential-passing facility. Once again, don't confuse "local:" with "unix:", but otherwise, yes, or as nathans would say, *nod* > > Where is the "local:*" part of that ACL documented, by the way? For pmcd, the full URL syntax for access control is documented in the "ACCESS CONTROL CONFIGURATION" section of pmcd(1), I have not yet updated the appropriate man page(s) for pmlogger. However, the '*' in "local:*" and "unix:*" here refers to all socket paths. > Can > we teach it something like: > > local:uid /* to mean same-uid as pmlogger */ > local:gid /* to mean same-gid as pmlogger */ I suggest teaching it something similar to what is allowed for pmcd, if needed. i.e. allow users userlist : operations ; disallow users userlist : operations ; allow groups grouplist : operations ; disallow groups grouplist : operations ; I agree with Nathan that same-uid and same-gid should always be allowed full access. > > Then the default ACLs could become these, if we wish to restore > unprivileged enquiry: > > disallow .* : all; > disallow :* : all; > disallow local:* : all; > # > allow localhost : enquire; > allow localhost6 : enquire; > allow local:* : enquire; This will result in an access control conflict error on "local:*". The first "disallow local:* : all" is not necessary. The "allow localhost ..." and "allow localhost6 ..." are also redundant since they should be covered by "allow local:*". This does raise a good point. I need to double check that IPv6 access is covered by "local:". With these changes we end up with the configuration that I have already proposed, i.e. disallow .* : all; disallow :* : all; allow local:* : enquire; > # > allow local:uid : all; As discussed above, this is probably not needed. Dave From brolley@redhat.com Thu Mar 6 09:42:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1D6B37F50 for ; Thu, 6 Mar 2014 09:42:31 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 185478F8035 for ; Thu, 6 Mar 2014 07:42:30 -0800 (PST) X-ASG-Debug-ID: 1394120547-04cb6c56762f2c40001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id TGt9UX5CUeHVu4ic for ; Thu, 06 Mar 2014 07:42:27 -0800 (PST) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s26FgMK1017455 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 6 Mar 2014 10:42:22 -0500 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s26FgLbD000646; Thu, 6 Mar 2014 10:42:21 -0500 Message-ID: <5318978C.1050507@redhat.com> Date: Thu, 06 Mar 2014 10:43:08 -0500 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> <913305437.21662865.1394094773997.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump In-Reply-To: <913305437.21662865.1394094773997.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394120547 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 03/06/2014 03:32 AM, Nathan Scott wrote: > Hi Dave, > > ----- Original Message ----- >> [...] >> This code tries to make sure that pmlogger is running by attempting to >> connect using pmlc. Without the updated access controls, pmlogger >> correctly rejects each connection attempt and the loop logic does work >> as intended, decrementing $delay toward zero. The problem is that $delay >> gets set to 25100, and each connection attempt takes about 1 second. As > Hmm, that seems alot (the 1 sec to fail a local connection part). *shrug* Yeah. That was actually about 1 second for each loop iteration. I'll investigate further to find out for certain where in the loop the delay is. >> * For this case where the response is "Unable to connect: ... >> Connection refused", the loop should exit immediately. > That doesn't sound right - did you mean "Permission denied"? We expect > to get connection refused (i.e. pmlogger is not yet listening) for some > time, for pmlogger processes logging far-away hosts in particular. Good point. The actual error we're getting is "Connection refused". There is probably a bug lurking here. > At the end of the day, none of this is acceptable behaviour for someone > upgrading a perfectly working system of course. We can also expect that > some people will continue to use existing configuration files - we can't > assume any change there (via pmlogconf), it needs to Just Work (and it'd > be preferable to improve security for those folks with unchanged configs > too, but that may not be possible & that's fine). There are people who > generate or otherwise supply pmlogger config files of their own crafting > - e.g. predating pmlogconf - those environments need to continue working > after the upgrade. Agreed, err I mean *nod* Dave From fche@redhat.com Thu Mar 6 10:26:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0876E7F50 for ; Thu, 6 Mar 2014 10:26:10 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9C0F0AC009 for ; Thu, 6 Mar 2014 08:26:09 -0800 (PST) X-ASG-Debug-ID: 1394123164-04cbb054b8101b30001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zjNdAjPw0Cq59JsD for ; Thu, 06 Mar 2014 08:26:05 -0800 (PST) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s26GQ46c029966 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 6 Mar 2014 11:26:04 -0500 Received: from fche.csb (vpn-238-37.phx2.redhat.com [10.3.238.37]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s26GQ3EH021276; Thu, 6 Mar 2014 11:26:03 -0500 Received: by fche.csb (Postfix, from userid 2569) id EC2B25815C; Thu, 6 Mar 2014 11:26:02 -0500 (EST) To: Dave Brolley Cc: pcp@oss.sgi.com Subject: Re: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> <5318966A.2080600@redhat.com> X-ASG-Orig-Subj: Re: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump From: fche@redhat.com (Frank Ch. Eigler) Date: Thu, 06 Mar 2014 11:26:02 -0500 In-Reply-To: <5318966A.2080600@redhat.com> (Dave Brolley's message of "Thu, 06 Mar 2014 10:38:18 -0500") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394123165 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 brolley wrote: > [...] > I suggest teaching it something similar to what is allowed for pmcd, > if needed. i.e. > > allow users userlist : operations ; > disallow users userlist : operations ; > allow groups grouplist : operations ; > disallow groups grouplist : operations ; The reason we can't have exactly that is because we don't have user/group databases/authentication in effect for the pmlc-pmlogger connection. (I don't think we really want to go there either.) > I agree with Nathan that same-uid and same-gid should always be > allowed full access. This is not obviously appropriate. GID's can be shared amongst many people, and we definitely don't want to hard-code that kind of trust. The same-UID one is arguable. A person may want to prevent accidental runtime modification of his logger, even by his own future processes. - FChE From milton.riquelme@stein.cl Fri Mar 7 06:51:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AC1137F50 for ; Fri, 7 Mar 2014 06:51:45 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 532FAAC00A for ; Fri, 7 Mar 2014 04:51:42 -0800 (PST) X-ASG-Debug-ID: 1394196694-04bdf05dab3572f0001-S8gJnT Received: from mail.dpspa.gob.ec (58.pichincha.andinanet.net [186.42.96.58]) by cuda.sgi.com with ESMTP id 21XOXQITaHiiPmOD for ; Fri, 07 Mar 2014 04:51:35 -0800 (PST) X-Barracuda-Envelope-From: milton.riquelme@stein.cl X-Barracuda-Apparent-Source-IP: 186.42.96.58 Received: from localhost (localhost [127.0.0.1]) by mail.dpspa.gob.ec (Postfix) with ESMTP id 8FA3374217F; Thu, 6 Mar 2014 17:07:56 -0500 (ECT) Received: from mail.dpspa.gob.ec ([127.0.0.1]) by localhost (mail.dpspa.gob.ec [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id xTr_ewLKBtEj; Thu, 6 Mar 2014 17:07:35 -0500 (ECT) Received: from localhost (localhost [127.0.0.1]) by mail.dpspa.gob.ec (Postfix) with ESMTP id 3561C742196; Thu, 6 Mar 2014 17:03:16 -0500 (ECT) X-Virus-Scanned: amavisd-new at mail.dpspa.gob.ec Received: from mail.dpspa.gob.ec ([127.0.0.1]) by localhost (mail.dpspa.gob.ec [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id qRPiPhze0oB2; Thu, 6 Mar 2014 17:03:03 -0500 (ECT) Received: from [180.215.215.254] (unknown [180.215.215.254]) by mail.dpspa.gob.ec (Postfix) with ESMTPSA id 9D9B07421C6; Thu, 6 Mar 2014 16:59:25 -0500 (ECT) Content-Type: multipart/mixed; boundary="===============0380801058==" MIME-Version: 1.0 Subject: Delivery In Progress To: Recipients X-ASG-Orig-Subj: Delivery In Progress From: "FedEx Delivery Express Service" Date: Fri, 07 Mar 2014 03:25:40 +0530 Reply-To: fdx21@foxmail.com Message-Id: <20140306215926.9D9B07421C6@mail.dpspa.gob.ec> X-Barracuda-Connect: 58.pichincha.andinanet.net[186.42.96.58] X-Barracuda-Start-Time: 1394196695 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.51 X-Barracuda-Spam-Status: No, SCORE=0.51 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, BSF_SC3_TG321 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3677 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_SC3_TG321 Custom Rule TG321 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain You will not see this in a MIME-aware mail reader. --===============0380801058== Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Open Attached File For More Detail --===============0380801058== Content-Type: application/pdf MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="PACKAGE DELIVERY.pdf" JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDIyIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+ Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDIvS2lkc1sgMyAwIFIgMTIg MCBSXSA+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA4IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUj4+ L1hPYmplY3Q8PC9JbWFnZTExIDExIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFn ZUMvSW1hZ2VJXSA+Pi9Bbm5vdHNbIDEwIDAgUl0gL01lZGlhQm94WyAwIDAgNjEyIDc5Ml0gL0Nv bnRlbnRzIDQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VS R0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAwPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvRmlsdGVy L0ZsYXRlRGVjb2RlL0xlbmd0aCAzNjU5Pj4NCnN0cmVhbQ0KeJytXFlv3EYSfheg/8CHRdZcmPQ0 zxkgCGBLduI4PnalxA/KPoznkGd1ekaKLSz2vy+bw/pYxa4mqSAwIPTw6KPOrw46ePYh+P77Z2+P Xh8Hkx9+CF4cHwUvTg8Pnr0ygTFxngSn68MDE0yqfyZIi6BM8niSBadX1TM/npTB+e7wYBInRTWi wY+HB2dPgvDfwenPhwcvq8mCl2+PgoCtZNhKbO5iNo3Nfu6BCRLPBKUZOUHaTGDstu2bmYknSTAr 4iLJApPE1bXt6vBg/Q/l5cyzepbR6qDI2ZPjMEqfrOyfeVg82dpBUA2O7OC+Guzs4K4a3NjBVTWo H95Wg6d9J8iVTZg0qfbPNzJAhsJzkmRWHUCZAOQyNaHzdBoXxRC5Ss8iJqNFGLk+glyWSp+Jbn/s LxfV1Wrwiahkr1zTw1/p4Q2RtB7U98/p1TVRektXHujKPV0BN+ysCzu4oXXuaI0FPRgIRto31vQG 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 TAdz4YEkxnLQ+a5XFq4eH5htQ5aCbjNpC2744RNwTnbgPtJrbrrpWWanGWIg92GeZvp9B7OYs9tM j2b5xto2v8Y00/dtrhCb079WrxN9YnPIb74hEWt7F1lTQtHxoANflHWRXN++NQuf2y6bQu50sKNT kfVKyItiJJQrfAY8zWy06v3kZ0zpcxkyBOxx1bICJNDXvfDyCMhAe5Yu5l8jCrchWcKK/aw7R+aW GfaKOg2R0mGho+PWgQMuhh3uYTRmb6FG1WoLTybKVBLkcq3FzG5ZQ+QLbnTSaz1VXdrILNItTbYL WQPJJ1IvUGtUny0qfTokWwvriASFzIKK77Y9FBClEGUyVbPBvsle6WzqdvB/jig9GSoz0ZSuXvOb 8HUizbIUYqu7IRyggc7RuDYDwGIRZCifAIO+a0fX3IzTmKzkUBL7RdjFB15wSCyaWgWz3ddJnE8H WeTpLp1aBXNQgEwpXYntIA8g9MXFZPjuv/3gEIkbHFuootac0ONzSvXjoz0uZcc6G+w919ud4QY9 TTuov+JEd6R1W7LiePDPtsGWGnjLZlPLcXHGXu9cevIbZeaZof12vxaxUYW80vexrSphb+CSkKYW QGVMD3lXXqLxXfvoBoTF6PaQR50wZd//2PNBWm+XbcRSsR+4M6nn/z0Me1FB30F9/y2DIw4nt/Pr llmEM78cHli0W+Z7hlVOO8kr/Fuh5NJeXNj/EOn11fx8ZUxwfBP8s5nu/04nQZENCmVuZHN0cmVh bQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0Yx L0Jhc2VGb250L0FCQ0RFRStDb3VyaWVyIzIwTmV3L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9G b250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTIxL1dpZHRocyA0MSAw IFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FC Q0RFRStDb3VyaWVyIzIwTmV3L0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDgzMy9EZXNj ZW50IC0xODgvQ2FwSGVpZ2h0IDYxMy9BdmdXaWR0aCA2MDAvTWF4V2lkdGggNzQ0L0ZvbnRXZWln aHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDYwL0ZvbnRCQm94WyAtMTIyIC0xODggNjIzIDYxM10g L0ZvbnRGaWxlMiAzOSAwIFI+Pg0KZW5kb2JqDQo3IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9C TS9Ob3JtYWwvY2EgMT4+DQplbmRvYmoNCjggMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1Ry dWVUeXBlL05hbWUvRjIvQmFzZUZvbnQvQUJDREVFK0NvdXJpZXIjMjBOZXcsQm9sZC9FbmNvZGlu Zy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgOSAwIFIvRmlyc3RDaGFyIDMyL0xhc3RD aGFyIDEyNS9XaWR0aHMgNDIgMCBSPj4NCmVuZG9iag0KOSAwIG9iag0KPDwvVHlwZS9Gb250RGVz Y3JpcHRvci9Gb250TmFtZS9BQkNERUUrQ291cmllciMyME5ldyxCb2xkL0ZsYWdzIDMyL0l0YWxp Y0FuZ2xlIDAvQXNjZW50IDgzMy9EZXNjZW50IC0yMDkvQ2FwSGVpZ2h0IDYzMy9BdmdXaWR0aCA2 MDAvTWF4V2lkdGggODk0L0ZvbnRXZWlnaHQgNzAwL1hIZWlnaHQgMjUwL1N0ZW1WIDYwL0ZvbnRC Qm94WyAtMTkyIC0yMDkgNzAyIDYzM10gL0ZvbnRGaWxlMiA0MyAwIFI+Pg0KZW5kb2JqDQoxMCAw IG9iag0KPDwvU3VidHlwZS9MaW5rL1JlY3RbIDI0IDY1Ny43IDI2Ny44OSA3NzRdIC9CUzw8L1cg MD4+L0YgNC9BPDwvVHlwZS9BY3Rpb24vUy9VUkkvVVJJKGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20v aW1ncmVzP2ltZ3VybCZpbWdyZWZ1cmw9aHR0cDovL3d3dy5jb29wZXJjb25zdHJ1Y3Rpb24uY29t L2xhdGVzdC1uZXdzLyZoPTAmdz0wJnN6PTEmdGJuaWQ9WnVsMEpZYUEwcjFIOE0mdGJuaD0xNTUm dGJudz0zMjUmem9vbT0xJmRvY2lkPTU0WWtxc2hmWWZscmlNJmVpPW1qdXFVcjdRT29tYjFBV0Nf NEhZQmcmdmVkPTBDQUlRc0NVb0FBKSA+Pi9TdHJ1Y3RQYXJlbnQgMT4+DQplbmRvYmoNCjExIDAg b2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAzMjUvSGVpZ2h0IDE1NS9D b2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9J bnRlcnBvbGF0ZSB0cnVlL0xlbmd0aCA4MDE4Pj4NCnN0cmVhbQ0K/9j/4AAQSkZJRgABAQEAAAAA AAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACbAUUDASIAAhEBAxEB/8QAHwAAAQUBAQEB AQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1Fh ByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZ WmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAEC AwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHB CSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX 2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACkJwKWmv90/SgDy9vjloKOy/2dqPynH3Y/8A4um/8L00H/oG6l/3zH/8XXhNx/x8y/75 /mai4r6SOWULbfiessHTPe/+F6aD/wBA3Uv++Y//AIuj/hemg/8AQN1L/vmP/wCLrwSij+zKHb8R /U6Z73/wvTQf+gdqf/fMf/xdS2/xs0O5uYoBpuohpHCLuVMZJA/ve9eAcVb0n/kM2H/XxH/6GKU8 soJbfiJ4OnY+wx0opq9B9KdXzh5IUUUUAFFFFABRRRQAUUUUAJjivOtZ+L2j6LrF1ps9hfvJbyGN mjVNpI7jLA16IelfK3j7jx7rf/X039K7sBh4V6jU+x04WnGpJqR6v/wvTQf+gbqX/fMf/wAXVzTv i9o+pSSCKxv1KDJ3Kn9Gr56yMiug8K/6+6/3B/Otc2wtPC4OdanurEZtBYbCTq091Y91/wCFl6b/ AM+d5/3yv/xVH/Cy9N/587z/AL5X/wCKrzCivg/7VxHc+G/tzF919x6f/wALL03/AJ87z/vlf/iq P+Fl6b/z53n/AHyv/wAVXmFFH9q4nuH9uYvuvuPTv+Flad/z6Xef91f/AIquygmWeFJF4DKG/AjN eA5BHTmveNM/5B8H/XJP5V6eW4ypXclPpY9jKcdVxTkqnSxdooor1j2wooooAKKKKACiiigAoooo AKKKKACiiigApr/dP0p1Nf7p+lAHxvcf8fMv++f5moqluP8Aj5l/3z/M1FX2kfhPoI7Fi0sru/uV t7O2luZmztjiQsxwMnAHPStL/hEfEn/QA1P/AMBH/wAK2/hP/wAlH07P92X/ANFtX0sMe1eXjcdP D1ORK+lzjr4l05WSPk7/AIRHxJ/0L+p/+Aj/AOFWtM8J+IV1WyZtC1NVWdCzNaOAAGGSTivqnaKM CuR5rUatyoweOk+gq9BS0VWuLy2sojNczxQRj+KRwo/MnFeVucRYorm5PHvhWJtr69YZ/wBmcN/K rVn4s8P6g+y01qwlb+6twpP5ZzVulNa2ZXJLsbdFIGBpagkKKKDQAn4UVQvdX07TRm91C2t/+u0y p/M1Rj8ZeG5m2x67pjN6C6T/ABqlCTV0ilGT6G4elfKvj/8A5H3Wv+vpv6V9TJKk0QkikV0YZDKQ QR7EV8s+P/8Akfda/wCvpv6V6eU/xZeh14H42c5XReFP9ddf7g/nXO10XhT/AF11/uD+db5//wAi 6p6L80Z5/wD8i+p8vzOmPWnBWd0VF3MxwqryST0GKbVvSj/xN7Mf9PEf/oQr8pgrySPy6nHmkkS/ 2Jq3/QMvP+/Lf4Uf2Fq3/QMvP+/Lf4V7kgG0cDpT8L6CvoVk1P8AmZ9Qsgpfzs8K/sPV8Y/s27/7 8t/hXtOmo0enwKww3lqOeucVa2j0Bp2cV14TBRwzbTvc9DA5dDCNuLvcdRSZozXcegLRRRQAUUUm aAFopM0uaACiiigAooooAKKKKACmv90/SnU1/un6UAfG9x/x8y/75/maiqW4/wCPmX/fP8zUVfaR +E+gjsXNN1S90i+S90+4aC5UELIuMgEYPUehreHxI8X/APQduP8AvlP/AImuVoqJUYSd5JP5EunG W6Or/wCFk+L/APoPXH/fKf8AxNdh8MvGXiHWfGK2mo6pNc2zW8jeWyrjIxg8DNeScVcsdRuNMadr STy3mhaBmXrtbGcHtkDH4msK2Fpyg4xik35Gc6EXFpJHsHjn4vGzuJdN8OeW8i5WS8YblDDqEHQk ep49AetePX+pX2qXP2nULua5kb+KVyx/DPT8KqVasLG71S+gsrKFpbmZtqIOpP8AQd8+1FHDUsPH 9R06MKa0KtFe2aV8DLX7IravqcxuGHK2gUKvtlgSfrgVzPjX4VXnhq0fUdOuGvLCMZlEgAkjHqcc Ee4xj071EMfQnPlTJjiaUnypnP8Ahzx1r/hiVfsl28tsv3rWdi0ZHsDyv1GK+gfB3jLT/F+mm4ts xTx4E9uxy0ZPT6g44P8AKvlnpWz4X8RXHhjxBb6lbbiqnE0faSPup/Dp6EA1OMwUKsXKKtL8ycRh lNXW59XTzw28DzzuqRxqWZ2OAoAyST2FeE+NPi5fajM9l4eka1sl4a5xiWT3X+4P1+nSr3xe8afb Lez0TTZswXESXM8in76tyi/THzH/AIDXkB44FcuAwK5faVF6Ixw2GVueQ+WR7iVpZZGkkblmZiWJ 9yetR0dK7PS/hh4q1a0W5j09YI2GU+0yBCR646j8QK9WdSnSV5Ox2ylGK1djH8PeKtX8MXazadcs sWcyQNzHIPQr/UYPvVfxBqv9t+ILzU0i8r7U+/y85wSBkZ785qbXvC+s+G5li1SyaBW+5JkMj/Rh xn261jjiphCnJ+0h16hBQb5kJXReFP8AXXX+4P51ztdF4U/111/uD+debxB/yLqnovzR5Wf/APIv qfL80dNTopHimWSNtrKQyt6Ecg02ivyg/LE7G1/wl2vf9BOb/vlf8KX/AIS7Xf8AoJzf98r/AIVi 596M+9bfWa38z+9nR9bxH87+9m0PF2vY/wCQnNj/AHV/wrZ1vUPEmkrBOupzPa3CKySbV4JGcHjr 6etcZ/D1r24afbapoUVrcR74ngQEfgOlehgo1MRGa53dWtqz1cuVbFQqR9o7q1tX5nln/CXa9/0F Jv8Avlf8KB4u17/oJTA/7q/4VFruh3Gg33kTZMTcxS9mH9CO4rJ79a4qlXEQk4yk7rzZ51StiqU3 Cc5JrzZ6t4R8VprMf2W7YLfoPoJB6gevqPx+nXdPpXz/AAzy2sqTwyMkkZDKy9QRXW6n47nvtEjt 4Y2hupBtmkXoF/2e/P6c/WvWwmaJU2qu6/E9vBZ1FUWq26/Et+KvGtyt59i0qcxrGf3k6gEk+gyO g9e/8+fPi7Xf+gpN/wB8r/hWGORRxXl1MZWqTcuZr0PGr5hiK1RyUmvJNm3/AMJdr3/QRm/75X/C vRfCsGsm0+06vdySPMAUiZQNg9TgdT6dv5c54K8JmQxatfxfJw0Ebd/RiP5D8fSvRsYFe1l1Crb2 tWT8kfQZVh69va1pPyTb+9j6KKK9Y9wKKKKACiiigApr/dP0p1Nf7p+lAHxvcf8AHzL/AL5/maiq W4/4+Zf98/zNRV9pH4T6COx0XgjQrfxL4stdKu5JEhmDlmiIDcISMZBHUV62Pgd4eH/MQ1PH++n/ AMRXnHwm5+JGm/7sv/otq+lx6dq8PMsRVp1lGErK36s8/F1ZwnaL6Hl5+B3h0/8AMQ1P/vtP/iK8 d8WaVaaH4ovtLspJHhtmCBpSCxO0E5wAOpP5V9ZHpxXyr48R08e62r/8/TH8DyP0IqssxFSpUanK +gYSpKcnzM5wHFbPhvxHd+F9UOo2UFvJN5ZRfPQsADjJGCOeMfQmsbrV/TdG1TWXlTTbC4umjx5n kxltuc4zjpnB/KvYqKDg1PY75Wt72x3X/C7vFH/Ptpn/AH6f/wCLqOf4zeIriGWCe00t4pFKurQP gqRgj7/oa5r/AIQfxT/0ANR/78Gj/hB/FP8A0ANR/wC/Bri9lg/Iw5KHkc/RXQf8IP4p/wCgBqP/ AH4NIfBPin/oAah/4Dt/hXX7al/MvvNvaQ7mG7u/LMx4A59AMAfgABTKcysjsjLtZThlbqCOopta otHofwi8Nxa34nlvbqJZLfT0Em1hkGUkhMjvjDH6gV9FKMCvHfgRNELTWYAf3okjbHfaQwB/MGvY xXzGYzlLENPoePipN1GmY/iTQ7bxFoV1ptyo2TJgNjlG7MPcGvk2eJ7e4lgkXbLE5Rl9CDg/qK+y X+6a+RPEMiS+J9Uli/1bXkxX6FyRXXlE370emhvgZPVGbXReFP8AXXX+4P51ztdF4U/111/uD+dX xB/yLqnovzRhn3/IvqfL80dN2qxZwpcX1vA33ZJVVtvXBIB/nUHarelf8hiy/wCvhP8A0IV+VQ1k j8vpK9RJ9z0RPhtpZA/0m8/77X/Cnf8ACttL/wCfm8/77X/CuyToPpTq+uWBw/8AIj7lZdhf5EcQ fhtpZPy3V2B7Ov8A8TXYW8It4I4l5WNQufYDFTdKWtadCnS+BWN6OGpUbunG1zN1jSLfWrF7W4X5 TypHVT2IrxnVtKn0a9a1uF+ZeVbsy+or3fpXn/xD1DTzDHZNGst4GDBs8xDjOT7jt+PpXn5ph6cq ftHo1+PkeXnOEpzpe1bs1+PkedUUUV8yfHijiuv8HeFW1O4W/vY8Wa8ojf8ALU+49B+v51ycTIsk TSR+aquCybiN4B5GRyM17doeo2epaZFNZfLEBt2YwUI7EdsV6mV0IVal5vbp3PZybDU61Vub26dz TVcACnUUV9QfZBRRRQAUUUUAFFFFABTX+6fpTqa/3T9KAPje4/4+Zf8AfP8AM1FUtx/x8y/75/ma ir7SPwn0MdjtvhL/AMlI07/dl/8ARbV9L180fCX/AJKRp3+7L/6LavpfuK+dzX/eF6fqzysb/E+Q tfPHxm0h7LxguoKv7i+iVt3begCkfkFP419D1zHjbwrF4t8PzWLMqXCnzIJSv3HA4z7Hofr7Vz4K uqNVSe2xjh6ns53Z8sdDXZ/DfxZF4W8R+Zd/8eF0nlTtjOznIbHfBzn2JrmNS0270jUZbC+haC5h OHRv0I9QRyD3FUxX004RrU3Hoz2JRVSNnsz7Gtrm3u7dJraWOWGQZV0YEEeoI4NZXiTxNp3hXSXv 75+BwkS43St2UA/5Ar5dsdZ1PTU2afqV3aq33lhnZB+QNQ3d/d383nX13PcydN80jO2PqTXkxyh8 +stDiWB11eh7V/wvbTf+gPef99pQ3x10zH/IHvP++1rw0kV2vw58EzeK9YWe4jZdKtWBnbtIeojH rnv6D6it6uBwtKLlJaLzNJ4ejBXZh+KLd4tdnuTayW0d9i8gicgkRyZYdOPX8qxSMV9EfFHwQ3iP R4rzT486jYg7EA/1sfdPqOo/Ed6+eSCvytw1dGCxCrU9N0a4eqqkTovBXimXwj4hivwrSWzL5U8Y 6shIJx7ggEfTHevpDSPFGja3aLcWWo28qsM43gMvsVPIP1r5MxijioxWAjXfNezJrYaNR32Z9D+P fiNp2h6XPaabdpcanICqLEwYRcYLMRwCOw65x2r53pcYpK1wmEjh42RpRoqkrIK6Lwp/rrr/AHB/ OudrovCn+uuv9wfzrg4g/wCRdU9F+aPMz/8A5F9T5fmdNUkMr28yyx8NG4ZfqDkfyqPFFflB+WJ2 d0dGPHOvgf8AH2n/AH6X/Cj/AITnX/8An7T/AL9L/hXO80c1v9br/wA7+86vr2J/5+P72dE3jnXj x9sX/v0v+FesWMjS2UDvy7IpP1IzXgua9f1HxDbaF4fglf5p3iVYos8s2B+g7mvWy3Ey9+VWWitu z2soxkn7SVabaSW7DxV4mj0Gz2Q7XvZB8idlH94+38z+NeRzTTTzPLM7PJISzMepJ6mpL28uL67k u7mTfNIclv5DHYVADivOxmMliJ36LY8vMMfLFT/urZfqIRg80VseH9CuNevvKX5IY8GWX0HoPc9q 7XxD4Kt59OjfTIhHcW64UD/loB2Pv79/5FLBVatN1Irb8fQVDLa1ak6sVovx9DzPPNa+g67caDfC WL54GwJYuzD1HoR2NZLKyuysm11OGVuCCOoxSYNc0JypTUo6NHJSqTo1FOLs0e82GoW+oWcdzbPv jkGQf6e30q3zk8V434W8SSaFd4cs9nIfnT0P94e/8x+FevW1xDdW6TwuHjkUMrDuD0NfV4LFxxEL 9Vufb4DHQxcL7SW6HSyLEjO7AKoJJPQYrjbvxfcylJbZrWzspGIiuLvcTLg4JVR29zWx4v8AMXwt qBjPzeVz9MjP6ZrG1RCdQ8OLpXkBvJl8rzclNuxfTnpSxVSafLF22+d3YMVUmnaLta3zu7Etp4su Y9s179lnsWcI13Zk4jJ/vqeQPeuvRty7lOVxxXCaZFG2k+JXvjGtwzMkwQYQAJwR+Z/Kuo8NmRvD mnNJ942659enH6Yp4WpN6Sd7q/4jwtSb0k73V/Q2KKKK7TuCkYZFLRQB4i/wJvHdm/t+H5iT/wAe x/8Aiqb/AMKGvP8AoPw/+Ap/+Kr2+iu3+0cR/N+R0fW6vc8t8H/Ca48MeJrfV5dWjuFhDjyxAVJ3 KR13H1r1IUcUVzVq06suab1MpzlN3kLRRRWZBy/irwTpPi21C3sXlzxjEVxFgOntnuPY/pXj2tfB rxFp7s2nNDqMP8O0iN8e6k4/ImvogHNFdWHxtajpF6dmbU8ROnoj5Pk8FeJ4X2toGo/8Bt2YfmAR Vi0+H3iy9fbHoV0n+1MojH5sRX1RgUY+ldbzer/Kjf69PseJeHfglO7rP4hu1WPr9mtjkn2Zz0/A H6ivYdPsLXTLOK0soI4beMYRI1wAP89+9XKPxrgrYipWd5s56lWVT4mFedeNfhXYeJJpdQsZFstR blm25jlPqwHIP+0PxBr0WiopVZ0pc0HZkQnKDvE+XNT+HHizS3ZX0madP79t+9De+ByPxArOi8I+ JJ32x6FqJbpzauB+ZGBX1pijaPSvSWbVbaxR1rHT6o8M8IfBy8nuUu/Em2K3XBFpG+Wc+jEcAewO fpWrr3wZm1fXLvUIdWht455NyRC2PyLgADhgOMelevdqK5njq7lzXMniajlzXPEP+FD3g/5j8P8A 4Cn/AOKrR0j4OXOmtM7axFJ5gA/49yOh/wB6vXuopM4BzWOIxNTEU3SqO8WY4ibxFN0qmqZ5x/wr K4/6Ckf/AH5P/wAVSf8ACsbj/oKR/wDfk/8AxVUdV8eeINf1yfRPBFtG5tzia+cAqDnGRn5QOuCc 7scCq1yPit4bhbUp7y21OGMbpYF2vgDqcBVP/fJrjWQ4fTmsm+jbucKyDCdUk/Vmx/wrG4/6Ckf/ AH5P/wAVR/wrC4/6Ckf/AH5P+NdP4P8AFFv4s0KLUYVMbZKSxFs+W4wSM9xggg+hroa5pZVh4txc dfVmLyXCRdnD8WebH4Y3H/QUj/78n/4qrN78Pr3ULjzp9VjLBVRcQnAAHYbq7/2o96P7Nw9rW/EF lWFSa5dPVnnH/Csbj/oKR/8Afk/40o+GE3/QUj/78n/4qvR6KX9mYb+X8WT/AGPg/wCT8X/mZuka TBo9itrbr8o5Zu7HuSfWtE4xRigYHeu6MVFcq2PSjFRSjFaI47xB4Ii1m8+120620zf6z5MhvQ4y Of51k/8ACsrj/oKR/wDfk/8AxVej4o61yTwGHnJylHVnDVyzC1JOco6s83/4Vjcj/mKRn/tif/iq 6Xw1oF9oMcsMuoCe2blU8vBRu+DnofSrHi2/uNM8J6pe2jbLm3t3eNsA4YDg4PFUvAGrXmu+C7DU b+XzbmbzN77AucSMo4AAHAFa0supUl7aCtrbdmlDK6FH97TVum7OinhjuInhkAZJFKsD0IPFciui 6lpF1C1vBDqVvbbvs/mymOWIMMEZ6EY9f0rtMcUmCPerqUY1LN7o2qUYzs9mji/+Efv9XupmvbeL TradleeKOUySTbegJ6AfSuxijWGNY0GFUYAHQYp+DjrzSgDFFOjGndrdhSoxp3a3Y6iiitTYKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAErm/HepPpXgjVryJisogKow6qzf KD+BOfwrpK5P4k2b3vw+1iKNcssQl/BGDH9Aa0opOpG/dF07c6v3M/4T6RFpvgW0nVf394Wnlbue SFGfQKB+vrXdkj1rj/hhexXvw/0zyz80KGFx6FSR/gfxrJ8UfDS88Q6/PqkHiOezSQKPIWIsBhQO ocdcZ6d61qRU68vaStq/MuSUqkuZ2Ok8NeE9O8KtfnT3mxeS+a6u4KpycBQAMAA4/AV5np/jHx54 ke603RdjXNvcO0ty0caqkfARORjJIY9Mn6A1ofCq3uLHxX4l0ue9luhZlYleRjzhmGQCTjOPWrvw aRBB4hl/ia+2/gASP5mujlVPnlL3mrbrubW5OZvV6FnX/Ges+HfD+j2U9tFceKtQUKIlHyo2cZIB 5OSBgHBOT0GKy767+KHhuw/ti9ubK/tIxuntURcxr3JIVTgeoJx15FWNVHn/AB+0lZuVjsiY89Pu ynP6n8q9MvI4prKeObHlNGyvnptIwf0qJTjTUfdTvq/n0XYhtQtotdTj9Z8Ytc/DCfxLo7+VL5al d6hjG28KykHgkcj9a3vCd/cap4T0u/u23XFxbLJIQAAWI54HArx7Qmd/gNr6t91bwBfpuhJ/UmvW fAf/ACImif8AXnH/ACpYilGEGl0lb5WCrBRi0u5j+GfEep6l478S6XczK1pYuogUIAVySOSOT+Nc 0vjLxfqfijW/D2ji3kuY7p1inmUBLaFGIJOBySSo5B6dDmtDwM2/4o+Mz/tr+jGm/DlEPxC8cS/x rdY/OST/AAFaOMIcz5VpFffoXaMeZ22SILTxN4v8KeK9O0vxTPbXtrqLiOKeJANrEgcEBehK5BHQ 8Gt/x94xu9ANlpejQLcaxqD7YUYZCLnGcepJwM8cEnpzlfFgf8Tbwh/2ER/6ElR6h+8/aB01Zvux 2JMX12yH+rflQowny1HFbN26OwlGMrTa6N/cZHia48f6J4bvf7fltdR067gMMjQABrdmGAxwq8ZI HcfTiu2+FH/JNdK+s3/o560/G8aS+B9bWTlfsUp/EKSP1FZnwo/5JrpP1n/9HPWc6nPhr2S95bej JlPmo7W1/Q7WiiiuI5gooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAqKSNJo3jkVWRgQVbkEHqCKlooA8ZbTPE/wv1i6m0Wxk1Tw/cPvMC5LR/XAJBA43YIIAzz 0sTfFfXdQQ22jeE7r7Y3GZAzqh9doUZ+pIr1zFJgDpj8q6vrMZa1IJvvf8zf2yeso3Z598OfCesa LPqWr65MrX+pEM8S4JQ5JJJHGST0XgevpB8I7O5tLTXvtNtPBv1BmXzYyu4Y6jI5FeldKQADpUSx EpKV+tvwJlVcr362/A84+Ivh7Vn1XTPFWgRme/0/iSADJkj5PAHJ6sCByQ3HSsfVPiNrPiHSpNH0 Xw1fw6jdIYpGkU7YgeCQcDsTy23HWvXzzQVHoKcMQkkpRvbb+uo41UklJXscDb+BZbT4Uz+G1aM3 s0DOzfwmYncB9AQBn0Ga5nw3491fQNEg8PXPhjUp9TtV8mFVQhXAJxnjIwO4zkDNey+tNwMnA5oW Iumpq93f5gq2jUlfqeVfDTS9X0/xj4ik1eBluZ0jlkdUPll2JZgp6HBbHBPSrvw9s7m28b+NJZra eKOa7BjeSNlDjfJypIwRyOnrXpOPz70YxzTniXPm03SX3ClWcr6bnm/xPs7m61Hwq1vbTzLHqAaT y42bYNycnA4HHel+Iug6smq6Z4r0GEz6hp/ySQKCWkjyTwByerAgc4bjpXpBwaCM1McQ4qNltf53 CNVq3lf8TxjxB411nxloFzpWleHr63LRFryaZSQqKMlVwOScY9T0xzkdt8L7ae0+HmmQ3MMkMqmX dHIhVlzK5GQeRwRXXgADgDNLRUrqUPZxjZXuEqqceVKy3HUUUVgZBRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAf/9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxMiAwIG9iag0KPDwvVHlw ZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjEgNSAwIFIvRjIgOCAwIFIv RjMgMTQgMCBSL0Y0IDE2IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1h Z2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50cyAxMyAwIFIvR3JvdXA8PC9U eXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJl bnRzIDI+Pg0KZW5kb2JqDQoxMyAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAy NTk0Pj4NCnN0cmVhbQ0KeJztW91v2zgSfw+Q/0EP9xDfbVjxU9KiKDZxk15vN23RusAuvPfgxk4a bOoUcdJe/vvj19CkNBRtYB/2YVHApSRqODO/+eKIqZ69q54/f3Yxff2yql+8qE5fTitaXR8ecFU1 XJBaVC0jLRMVZUTfu18dHlz98/CgOruYVlX0MvUvn84OD56d04pSIlk1uzo8oFWt/9HKUmwIVdXs y+FBTZhqzEJu8OrwYH50PTnmRzfm59tEHa3MYK0HlRl8gju3enBnBt/14MfJf6vZfw4PzmYISyxi CZigtNXSxIzMNf0RIhwhYiRhDCcQlFdr5bGKN4x0ellOmNZhVnsi0R7LaK9uiEyVNz86N6qwillq fZyZwf9AZy9jnaV6vdeDJzOo9OCdGdzpwcYMHuD2FG6v3W11tDCDSz14SF5d6cG9GWwAm7XFxs7R PxfwnABnp3DnRg8s7J9jqmHl24T7tVtjBC2JoCXq1kCw1V4BcYUjrjqGvg+Aq0YQqt1ECNK1FvA8 3E1miaYhivURngWEb7daVUf/MoNOD+iYMC2yUkcJFyJebX50PEakw4i0hLY9Ip1hSWqW2jFqtM74 ZbcPT5RiVJgkTZtSYaAnNUoODRZCEbkXU1i0oJIT3mNKGKaU+eGaMzlKU2A029pYWUITNUrZGaNk tbYnWjBKijmPoaEYYpU20nwxPwtwz9tSQKaYa2kRpLHG7SoF/6SY97RC67hHZQmx6RYizbckWj3p wU9ODB/a1iDPdTKRbAOQ0hc+GH4eZbIt5kPGlQElK3jAUNjAIpkgTTkNY75qiTQauz6IP4eEayRb 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 vx7jjaLhnnZMXVhmYrqS1vJHkmTUVTvr2elwauYLF6OYvfRPp46dRcX2sK4BF9EuRIQWiyv+O2xC ZcfzsViA8VVDQm60Kd5iAcRXDQmV3U7ItuiRT3dCdg+m0CrXR+CYym4nZFvUXd0J2T2YwnzRnwdI qOxxQrZNv+KgX4/cedk9zKwb0qxFP4RSvYOlrXMJ+7cM7u8YBpT/D/5K7coNCmVuZHN0cmVhbQ0K ZW5kb2JqDQoxNCAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMy9C YXNlRm9udC9BQkNERUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2Ny aXB0b3IgMTUgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgNDQgMCBSPj4NCmVu ZG9iag0KMTUgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQUJDREVFK0Nh bGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQgNzUwL0Rlc2NlbnQgLTI1MC9DYXBI ZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQzL0ZvbnRXZWlnaHQgNDAwL1hIZWln aHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAgMTI0MCA3NTBdIC9Gb250RmlsZTIg NDUgMCBSPj4NCmVuZG9iag0KMTYgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1R5cGUwL0Jh c2VGb250L0FCQ0RFRStDb3VyaWVyIzIwTmV3L0VuY29kaW5nL0lkZW50aXR5LUgvRGVzY2VuZGFu dEZvbnRzIDE3IDAgUi9Ub1VuaWNvZGUgMzggMCBSPj4NCmVuZG9iag0KMTcgMCBvYmoNClsgMTgg MCBSXSANCmVuZG9iag0KMTggMCBvYmoNCjw8L0Jhc2VGb250L0FCQ0RFRStDb3VyaWVyIzIwTmV3 L1N1YnR5cGUvQ0lERm9udFR5cGUyL1R5cGUvRm9udC9DSURUb0dJRE1hcC9JZGVudGl0eS9EVyAx MDAwL0NJRFN5c3RlbUluZm8gMTkgMCBSL0ZvbnREZXNjcmlwdG9yIDIwIDAgUi9XIDQwIDAgUj4+ DQplbmRvYmoNCjE5IDAgb2JqDQo8PC9PcmRlcmluZyhJZGVudGl0eSkgL1JlZ2lzdHJ5KEFkb2Jl KSAvU3VwcGxlbWVudCAwPj4NCmVuZG9iag0KMjAgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 b3IvRm9udE5hbWUvQUJDREVFK0NvdXJpZXIjMjBOZXcvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9B c2NlbnQgODMzL0Rlc2NlbnQgLTE4OC9DYXBIZWlnaHQgNjEzL0F2Z1dpZHRoIDYwMC9NYXhXaWR0 aCA3NDQvRm9udFdlaWdodCA0MDAvWEhlaWdodCAyNTAvU3RlbVYgNjAvRm9udEJCb3hbIC0xMjIg LTE4OCA2MjMgNjEzXSAvRm9udEZpbGUyIDM5IDAgUj4+DQplbmRvYmoNCjIxIDAgb2JqDQo8PC9B dXRob3IoTUFOIE9GIEdPRCkgL0NyZWF0b3Io/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwBy AGQAIAAyADAAMQAwACAAVAByAGkAYQBsKSAvQ3JlYXRpb25EYXRlKEQ6MjAxNDAyMTgxNTA4MDgr MDUnMzAnKSAvTW9kRGF0ZShEOjIwMTQwMjE4MTUwODA4KzA1JzMwJykgL1Byb2R1Y2VyKP7/AE0A aQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAMgAwADEAMAAgAFQAcgBpAGEAbCkgPj4NCmVu ZG9iag0KMjggMCBvYmoNCjw8L1R5cGUvT2JqU3RtL04gMTUvRmlyc3QgMTA4L0ZpbHRlci9GbGF0 ZURlY29kZS9MZW5ndGggNzA3Pj4NCnN0cmVhbQ0KeJztk01v00AQhu9I/If3CAe63m+7KkWlnzRt GpKoHBCqnGSbhCR26myg+ffM2i4NakTphQP04vF6d8Yzz/uuMIggEmgOGYFHApKDawmpoLiC1FA6 gpTQYU9AmxjSwKoYQlOCpijAuZIQElxQnlDgylJZS5U4FbYQkdbY2WGtkBShzTqsxbqruWMdXyz7 /nDqZqzxGdEXsNYQMpzZ3X354g9S+NNTxNNTJBQ0aG7ESGhsmpiGBaeRaVoCYcBp3Bg8oWEheKBC QIgFFRYmwBBxIE2YCTGRlCVkAkw4CZEkrglURNihBIinIgkIv4GyINyKVIqCUJpUID2oIU1yQFuQ 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 d45KpSZMFt/0vAI0j4pwX/hdiLheASWoT8WAB99KMXh24C6xdW2Wn349SWN+iCBcU+DJwdivW4ng 8EwGm+uObqC9Lwa5RNNkUHHz+kwy3R9kJrgE8poAMRi95vZw7wP1WyVk8fc+0JpOeSqr0pNrdLa7 z7/QMm7ztUoWtucQvO9wwt9eY8kB6/pHUfPPINC/AAaKhxENCmVuZHN0cmVhbQ0KZW5kb2JqDQo0 MCAwIG9iag0KWyAwWyA2MDBdICAzWyA2MDBdICA3WyA2MDBdICA5WyA2MDAgNjAwIDYwMCA2MDBd ICAxNVsgNjAwIDYwMCA2MDAgNjAwXSAgMjBbIDYwMCA2MDBdICAyM1sgNjAwXSAgMjdbIDYwMF0g IDI5WyA2MDBdICAzNlsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDBdICA0Nlsg NjAwXSAgNDhbIDYwMCA2MDAgNjAwIDYwMF0gIDUzWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMF0g IDY4WyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDBdICAxODJbIDYw MF0gXSANCmVuZG9iag0KNDEgMCBvYmoNClsgNjAwIDAgMCAwIDYwMCAwIDYwMCA2MDAgNjAwIDYw MCAwIDAgNjAwIDYwMCA2MDAgNjAwIDAgNjAwIDYwMCAwIDYwMCAwIDAgMCA2MDAgMCA2MDAgMCAw IDAgMCAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCA2MDAgNjAwIDAgNjAwIDAgNjAwIDYw MCA2MDAgNjAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCAwIDAgMCAwIDAgMCAwIDAgNjAw IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwXSANCmVuZG9iag0KNDIgMCBv YmoNClsgNjAwIDAgMCAwIDYwMCAwIDAgMCA2MDAgNjAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCA2MDAgNjAwIDYwMCAwIDAgMCAwIDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDAgMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAwIDYwMCA2MDAgMCAwIDAgMCAwIDAgMCA2MDAgMCA2MDAg NjAwIDYwMCAwIDYwMCA2MDAgNjAwIDAgMCA2MDAgNjAwIDYwMCA2MDAgMCAwIDYwMCA2MDAgNjAw IDAgNjAwIDAgNjAwIDYwMCAwIDYwMCAwIDYwMF0gDQplbmRvYmoNCjQzIDAgb2JqDQo8PC9GaWx0 ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDQ0NzU5L0xlbmd0aDEgODcxOTI+Pg0Kc3RyZWFtDQp4nOx8 CXhURbr2V+d0Zw9pAoSEQLo7TWePHdlpQtLZCBCwQzbSYeuQhEWBRlZBljgjLnEhjqLIqEQHFWQG ThrHSRQx7qAyIougozZu4z6AggtLzv9WdXcWlCv/nXnu89zneirvW+fU8n1Vder7quokQIyIeoE0 lJFfOq7wtopoidiI80SxDxTmF4zpHRJeTvTVCCJpQmGxvdQTcuEWom9uJBr+UGFpeW5Y1LbfETMP hJC37aWWQbrt0+OJWAukOivyJ1YOrbSvgKx6op731MyvXlgdV/U8UXpvyPtDzbIlhi3X3JJHNAHy gnrMWjh7/p5XVmURWbYSBb48u3rxQoqiYOhPgjzd7HkrZn2X9dEyorJ7iFwPzamrrj2cbH4U+jKR P2wOEkLa2CY8L8HzwDnzl1xn+TzKDl3RRDGz5rlqqrMijduJXhqC55nzq69b2OftPhtQfiPKGxZU z69bH/MYnt/Hc/iCha7FS9oT6O/QH8TzFy6qW/h+00Nj0feFRH0iiY+dtn/yZ89n2GdEZJ4JCubF iP5U7srh8csPTUpsX352kvbB4JdRNliU5xfigG0X7seg729frmZoH+zI8V8yTwlTqAR3/JJIRxZy YJRaoVekaPZLu0lLQdpN2sEQOcAby9U0S4rUaqXAgGBJ0koazXFKUdvoOowyH0mM3cQ8A/HwF23P 9jLeEmm2jZiqqqh9u2Y37ylpNPtpNi+NmDd4NwuilfQYPUQfsg+lAfQt7kvYw7SbvUnbaCuwgG6m ++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 ybwmJs92lCsv8rAAR5pM9E1wZDtd5ukF44t3bVFcnN5HuTwTv/QY37TRCnqUmlFORRJVlEiiCv5+ bnB6EpWdXMX6b++afx4u/zCIs3zrmuUuBP+PPRD8/tYQhXzM2S0YfS452Oow3/sg/zTVGWv+0gHP rB6R5bG9LXrpi8zugHhHrgJTBb8/uYrZRXJDB3zW1a1fELFqo3ctje/8rRCH12ri5WeCb2dcLSzi 23WkY1mfk9xtwRNNM1LhY/Yu5y8YLlQ0uWygl9i6PtpHCDl9ajOaT7u/eHT9SwVfSQvMi2iQrjCL 47x956Q6p8f5aavbvdNLSu0zpM6uUtV+/6De11C4wzn5xrOshtgxdpkwJK7CTkx/y8LimX5RB3P/ vC2CcabXsnd6ySrcvM8fwjnaMdwob6syYOPCn0yrf9f3wYr9Skzfa6/m0xJ5VepX3mm3fXyrfLPv zLZO1GDZpbMhoUdzPtXePFnSXMrfEnBr97lYc7fGwtGLHTL84lHLtj9c1sXn0RFd57H79FPaph73 Z8Wb3/4Xm82hZg0KZW5kc3RyZWFtDQplbmRvYmoNCjQ0IDAgb2JqDQpbIDIyNl0gDQplbmRvYmoN CjQ1IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3MDc3L0xlbmd0aDEgMTY5 NDc2Pj4NCnN0cmVhbQ0KeJzsXQl4lNW5PueffUsmIQkJA8wfhoRAQsJuWISBbOxbGEwAIZPJJBnJ 5mRCAEEjuNCIiruoVdSqVVyGwSXuKG61brW2Wq0WW9tqFat1qUUh9z3/NycEXB7vc3tre++cn3fe 93znO99/9py0IzDOGEvHh54tLq2cU/Fl56fDmbJxE2OubWWzSpcVjUq+jbGLqhjjT5XNml9yVWO5 g7EL8xhTxlSUlpX/ef8nXzFl3XbGdB9WLF5UGaqbuoWxS1TGr7FXVPpmPfnWH3qZUlTAWMXqRZVF 4/7xzv3rEes1vLUm0OxvS7ttwPuMjYgi3t2BdRE1evUTLzN20g7GDIPr2xqaP/98gZ2xUXWMWQY1 +Nvb2GDmwfszUd/Z0LShvuD3n1/C2Krb4f9yY9Bf96ecIyci/iqUT2qEwXGH8XXkL0V+eGNzZH3W Ft0UvKuYsZx1a4PhFj6Mn8NY1zMoz2xqDfgXnrTgMGO1XYwNLW/2r2/LHj0cbeE9KFdb/M3B3HVL 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 GLnD/JxI8VVvZTcoVUwX2BBuYmkN4eBaNqXJH2nBbdfKeOXSWSrLxEnSq612I3OwtHiOs/8i7kzA o6ru/n9m7mRmkplECFsCKA6bbAICigVZVFQ2Q0ShFFtNEZdBpewEMBAN4i4uiLjUBSlStGiZauvS acSIISwGzCQxQwlJGCaMNyEJuTdjpJ73c2+GENA+tf/n+b/vc57P3LnLOXN+3+/vLDfytA6RJDqZ 11uuWMmeC0RnijIpPX2i6D192o0Xi6G3TJ9ysZH/5jPGvNNOdDHPFH6hfWvrNuESySI1dhYn3MxO 5OkdCxYvEFvMz+3m5/vm54fm56fm56572ayIfPPzgPlZZH6WmZ9Hzc/j5qdqrJuiwfi02M3Prubn YPPzGvNzpvk57/5777/Xstr8XGd+Pm1+bjQ/XzM/t5qfO1pnj//0afmZn06UVNDAjsJOYfy15//u mhUfEv/rY5K4yHzvNt7MHhLPic1ip9glDolK0WCxingzUmcsWlUYf/NSqNfR/H99Y26xjGo5Prqu 5fj7aJs65Fvt5nPOLe7T554n9T33vH3yuecdXj73vM8P5573O+/+gK7nno8YKuKtbc8b29y3C8sN V517PvVxjgnkdD+RbvydkDrM8dah1nSxxrrFWiLeUH6v/F4U2ZbY3hSBuK/tj1qUhJsTfmv5KOER l8WS727nvs56rftW92vWFYlzE+dZ/564JvFJa16SNclpPZTUlNRk/YalVTe0sRcnfviTpZBSlnis TYnESuFPlMaknq2lH2UUZQJlnlk2nV8SC5M2J/2l3cZYeaNN2W6U9uInS0L79NbyePsNrUVvKcnd f6IMpozo+HKbsqWlmHfOKx13dsxvLQc6HaUcN0pn20+V5MGdkzv36/J4m7LBLLt+shR2aT5TUjqm dG0tE2Jl8k+WdLPMjB3PLdmxT+O53WYpai0ttY+k1KUOSJ2b+lrqNqOc33rqjp8qLa2n/i21MlYa zxbjV1Kbzd/KNrhwaq9RrWVqr+mtZW6szKNk95rXexhlfJ/BfSb0msfn4D67+uZfUmyWxn6zKQv6 96UM6l/ZPwqV/X8YkD/wNaP0rxz46cDIwMgg26CkQR0HfUwpGjyWkj549pBXY8V/WfbwvsOrRzx3 xQjK2JEpI2ePzLxyZ6x8euXuK4tGDaBcOWrd6MNj7GZ5Zswus5wee8XYd2PlwzGnOX93bJ15VjfO Os469t1xg8Y/Pf7TqwdfN4ty5IZ7xjzT8jTHupanJo01nps0dXLPyUMnj528bUpfs6RPmWeWzCnr przKZ+aUAsrRqSunZk89cuMCysa0DJ5KTzuQdmBKAZ+HjW+UyjQ1rXlatlm2TttnliPTVDgyTU+3 TdO5r6bPTj+cXnnTEspz0y/mua3T9JY701dO06cfm147I33m7lmzfpP8m+6/6Xu37e7Zd5fe3Xzm eM8gys757eb3XJC54KEFuQsqF6gL9IW2hcMWTlh418IFC1cufHThxoXvLvxwYd7CQ4sWLHpu0bZF DYvF4uTFExfPWfzp4uIlI5bMWfLq0plLH13qX9q4zL5s0LLrl7277PjyCcubM7tnXp+Zkbko89XM HZmlK3qu+PWKD1eUrmhe6V7ZeeWVK69ZOXfl1pWlqwasmrDqtlWbVm1fdXiV/sD4B1Y+8GmWPWt8 1qKs97N2Z51e3XX1Pau3rlbXjFqTuWZHdvq/mas+PH8+One2yV52thjzSPYbZ0vLDPJvxt7k80fc ueOkJdN/ctY5M/O0KefOHdm7zxZjdsguOlta5gVjDm23PWV3lw3Mw2Vj65g1zTnYPDLftk9nft2U tLndxsTC1jmTZ9vrveYadRM/TNp0du5sUYnZeYI5/7Y81TNp8xn1jKvGXGw+W2bcN5+PKUi7HyYe YybfTI0ys7VCereRY5lZzq4OkfNWhQlt1oGzK8Fmo98/mv23/2j2T4jN+Y+b8705y5vtUDtpAt83 nZkJ8WNbzC/mppb5p2V+i/nInMgMaLg2t3V2POMoc1zK5OxKo8ZZj3tNz67MrqQ146lG7qWnVvaa /uOcYB4sajOj/sQ823Ze/fGcGpu5d5vZ1DKLTj0zfxrzOlf41Ww1dRtXpqekXzEi7UBnW8s6Zh5Z s7o0dzpKViWfWX3OrCrJ3Tvbzq5ALVlprG3m0zbjCeru6pxs3DGuGE8Z15O7JxaeydSUrsndWQGT jfrG95arZ9fRtiup0Rdz1Yytm21WzmRaOH+d3HDO6lgYWxk7nuk995tbft34/SnpnY6mTKA/56hv qGZojFNtRuwZjVtGoqFmS6b0movekw03DSVS0ju+bPq9zfCmzagelbqDWM+ssEUtrWarKdnZaksx fsE49ppuuGJ8a8k045it9hnce1gLLStc72HmqtSmGCtcy+pmro//j8VcU9uUHz9hrrRtSmzFbS0/ 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 wnJ7rq8qZ0+Pj5yS1HayGyE6tqJP9IX0RbgYl0bHpqdhFpqdv4s1MM50u2udjjuNrfj7j+1Gttuc dxvZCea928hOMO+B5l2MGJXmmzHXjYkV0QElr1vojVe9sc4bA72xzhsDvfEJTx9gzBtKnrc07DXu Xd5cV3orV/q7BBfp72KefKnjtx3HiYproqNEvHYxJiMyDhAZDxTvFpb+ok5x/QqeSrjSbh0u8OnC 0t4o/hpev8TVvOpa+W6DcW/SY0uIS/7W7L113stovVLL5e4UogHR5aEj+h6+j6ut/gXW8yLjuhTj eGbx6bW8ZANLbzSmFvVlq1Y2y5NnRv0rDggdFW3YEjpSozAaP8SPMA7XaLdXz98Eymu5oOVC4mqz Gifmr7GOa3nROjuoNFtxeBMbtYS/lGrx/sa31/j2Gt/entkXv1NerZXVWinXygnGeIBWurTSrZXi L81XauHd4t8jMr69xrfX+PYa317j22t8e41vb/Sh6PLonOh7+D4mRMOjibgOk3B9NFyPvfX4QTGr goXPF7MqWPl8MetRln6apRfx0zf56Rf56TmJx8Md5vSODDHkvdHIW8XRbKImTo+G8tGhyTNDPvlg NDz5EB6OhlccEJ1T0ezY5rgFW6PhqeNxGkZF56RG44f4EYrjqzSqnT1+U97jN+WltSpasCVsLH0b 8ZRxz+55ql/PU/2MO/bkKaVvIFpCA88Y1f2aWnCL2q9ZrbdFbdecPK57PV8b1R272u5Ke/K48Cmt jupendjJznu9vU9s2B8WJytCl7pwV7I6dHpysSfPKr37irv1rtS7kim9Gyf26G8vq+wPy9SY3cmq KOXdbk8tU0t2e3KYuDSqe4NeulWpnUbWltjtuFev+3jme2/u02u36rTTiNuSlY4Zo6h2/b2W9pnB Dl43Sl3bFZVppV0r3VoJWthU6jsVlXm73dvd3g7e3NQzhuOLduq+3RjWePtobzd6e2dijx1bHP0+ fryfx3XTCSHsN5Y1Wjtaa41a25msCrnSrKqtczY6QKXcquX9xvRkMYuGci3uMo5Vie6o3Fu79L0q WePzcWFQ8YnuJZ7YqL+ipQqe2KjNopUK2tjKuv+wXla/Z528/Z+sT+nZ0rp49j9ZD3P8H66DePpf tL8o879sd3P8D+xduvPv2jnqlewbVSUPNr5DokxyoNYO9c5hNMMHfD7cvSPcO8q9wc6PcW+Ie8fK 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 fCKfRBv5p/xT2sw/41NpC5/OZ9B2PovPop38Rz6bdvGf+M+0h8/lc2kfn8/n036hRUgHRLJIoUPW wxwZ52GOnIc5X5QX5ZlyHuYC51UuQdQWtVnovMolOq9yyc6rXIrzJ5cqmopmLE3cLlqwIvZbOZZu vb6xTOv1jZ3tTfKmsqbW6xu703p6Y/dYT2/sXj/ZL8Ra+Wl+Brvf+ntjD/uL/RWsvfX3xjpZf2+s s/X3xrpYf2/sKevvjT3r7/YPsp7Wxxt7wfp4Y0Osjzc20vp4Y6Osjzc2xvp4Y+Otjzc21fp4Y9Os jzf2k2wun2ULrHc3zqx3N+5Z727ct97duLLe3XggR8nRPNH6deMp1q8bT7V+3Xhx69eNl7N+3XhF OUsu5JWtRzd+vvXoxuvKtXIjr289uvFG1qMbv8Z6dOPXWo9u/AHr0Y0/Yb+P410CHnDeNZCB4k8F CUEC7x4kBcm8R5AWpPFngvQggz8blAhK8F5BmaAs7209rvE+1uMa72s9rvF+QfWgOh9g/a7xgdbv Gh9k/a7xl4KGQSM+xPpd4y9bv2t8uPW7xl+1ftf4SOt3jb8e3Bu04qOt3zX+RtAuaMfftt7X+Fjr fY2Ps97X+Pigd9CbTwj6Bn35u0G/oD9/z3pf4x9Y72v8Q+t9jX9qva/xKcGHwVT+WfBFMJd/G8wP FvDFwW/B73xpsCRYy1cE64OdfJP1ysb3Wq9sfF9gIozvt17Z+CHrlY0ftl7ZBItkREqK0PpjE6mR spFKIi1SJXK2KBapEakhSkVqRWqJ0pE6kXqiTKRB5CJRIXJJ5BJRNXJZ5ApxVuSqSGNRLXJNpImo Ebk5couoFXko0lbUiZaOlhf1rXc30ch6dxNXWm9t4irrrU08Yr21iSestzbRzXprE70Tbki4S4y3 X+2JKdZbm/haK50kfrB+2sQ83UzfJ7ZZP23iiPXT5nnWT5unrJ82L2r9tHkJ1k+bV9j6afOKWz9t Xgnrp80rbf20eVX0GD3eq2r9tHk1rZ82r6710+ZdaP20eQ2tnzavkfXT5l1p/bR511o/bd511k+b d4NeoVd6Ta2XNe8262XNa269rHl3Wi9r3n3Wy5r3oPWy5rVJ5ImB91CiTkz0HktMSUzzOljPat6T iXsT93pdkiiJeV2Js5VAvURYfEmUTIwKYReUgnHYo3SM3T5G9TOQXgG7oooYBQOqCpSMAA/rkQYe 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 jrROS6fKi9alhoSX9D8y+rG8Vf+8Fpk12yWb758rUbXOPptYtql60NYHY6PW7IR0/grXJmRrL7rm 3XbnGDrESHNqP/8klYSBPdS7JG1XQv8FUwT9Bg0KZW5kc3RyZWFtDQplbmRvYmoNCjQ2IDAgb2Jq DQo8PC9UeXBlL1hSZWYvU2l6ZSA0Ni9XWyAxIDQgMl0gL1Jvb3QgMSAwIFIvSW5mbyAyMSAwIFIv SURbPDIzOUQ2QkVGQzJEQjhCNENBQjQyQ0NBMDQ2RTkzMDkwPjwyMzlENkJFRkMyREI4QjRDQUI0 MkNDQTA0NkU5MzA5MD5dIC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE2Mj4+DQpzdHJlYW0N CnicNdC/DsFQFAbwc6taRRulBonZLBHmUgZ9BYvFZrEzmr0B7yGewOoxRGsSWx3fxx3OL/fm/MsV 0VMURmMo8mVHLsDkoLEH4QA0e2QBWgGIHNDm43AJRisQ38B4CyZr8gJJRM5gapO3iKVLdKVKaqRO PPJL8bVg9vzfDLFIibjEITYpkwoJtMu8g+npAdyv4NEH2Qbk+BdzzMDJE/kA7bEa6w0KZW5kc3Ry ZWFtDQplbmRvYmoNCnhyZWYNCjAgNDcNCjAwMDAwMDAwMjIgNjU1MzUgZg0KMDAwMDAwMDAxNyAw MDAwMCBuDQowMDAwMDAwMTI1IDAwMDAwIG4NCjAwMDAwMDAxODggMDAwMDAgbg0KMDAwMDAwMDQ5 NSAwMDAwMCBuDQowMDAwMDA0MjI5IDAwMDAwIG4NCjAwMDAwMDQ0MDMgMDAwMDAgbg0KMDAwMDAw NDY0NiAwMDAwMCBuDQowMDAwMDA0Njk5IDAwMDAwIG4NCjAwMDAwMDQ4NzggMDAwMDAgbg0KMDAw MDAwNTEyNiAwMDAwMCBuDQowMDAwMDA1NDY3IDAwMDAwIG4NCjAwMDAwMTM2NjQgMDAwMDAgbg0K MDAwMDAxMzkyNSAwMDAwMCBuDQowMDAwMDE2NTk1IDAwMDAwIG4NCjAwMDAwMTY3NjQgMDAwMDAg bg0KMDAwMDAxNzAwNCAwMDAwMCBuDQowMDAwMDE3MTQyIDAwMDAwIG4NCjAwMDAwMTcxNzIgMDAw MDAgbg0KMDAwMDAxNzMzOCAwMDAwMCBuDQowMDAwMDE3NDEyIDAwMDAwIG4NCjAwMDAwMTc2NTYg MDAwMDAgbg0KMDAwMDAwMDAyMyA2NTUzNSBmDQowMDAwMDAwMDI0IDY1NTM1IGYNCjAwMDAwMDAw MjUgNjU1MzUgZg0KMDAwMDAwMDAyNiA2NTUzNSBmDQowMDAwMDAwMDI3IDY1NTM1IGYNCjAwMDAw MDAwMjggNjU1MzUgZg0KMDAwMDAwMDAyOSA2NTUzNSBmDQowMDAwMDAwMDMwIDY1NTM1IGYNCjAw MDAwMDAwMzEgNjU1MzUgZg0KMDAwMDAwMDAzMiA2NTUzNSBmDQowMDAwMDAwMDMzIDY1NTM1IGYN CjAwMDAwMDAwMzQgNjU1MzUgZg0KMDAwMDAwMDAzNSA2NTUzNSBmDQowMDAwMDAwMDM2IDY1NTM1 IGYNCjAwMDAwMDAwMzcgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDE4NzEzIDAw MDAwIG4NCjAwMDAwMTkwODcgMDAwMDAgbg0KMDAwMDA2MDM2MiAwMDAwMCBuDQowMDAwMDYwNzIw IDAwMDAwIG4NCjAwMDAwNjEwNDEgMDAwMDAgbg0KMDAwMDA2MTM3MiAwMDAwMCBuDQowMDAwMTA2 MjIyIDAwMDAwIG4NCjAwMDAxMDYyNDkgMDAwMDAgbg0KMDAwMDE4MzQxOCAwMDAwMCBuDQp0cmFp bGVyDQo8PC9TaXplIDQ3L1Jvb3QgMSAwIFIvSW5mbyAyMSAwIFIvSURbPDIzOUQ2QkVGQzJEQjhC NENBQjQyQ0NBMDQ2RTkzMDkwPjwyMzlENkJFRkMyREI4QjRDQUI0MkNDQTA0NkU5MzA5MD5dID4+ DQpzdGFydHhyZWYNCjE4Mzc4MQ0KJSVFT0YNCnhyZWYNCjAgMA0KdHJhaWxlcg0KPDwvU2l6ZSA0 Ny9Sb290IDEgMCBSL0luZm8gMjEgMCBSL0lEWzwyMzlENkJFRkMyREI4QjRDQUI0MkNDQTA0NkU5 MzA5MD48MjM5RDZCRUZDMkRCOEI0Q0FCNDJDQ0EwNDZFOTMwOTA+XSAvUHJldiAxODM3ODEvWFJl ZlN0bSAxODM0MTg+Pg0Kc3RhcnR4cmVmDQoxODQ4NzkNCiUlRU9G --===============0380801058==-- From milton.riquelme@stein.cl Sat Mar 8 13:38:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=unavailable version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C48507F3F for ; Sat, 8 Mar 2014 13:38:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id A57AF304059 for ; Sat, 8 Mar 2014 11:38:31 -0800 (PST) X-ASG-Debug-ID: 1394307505-04cbb054b719cd10001-S8gJnT Received: from mail.dpspa.gob.ec (58.pichincha.andinanet.net [186.42.96.58]) by cuda.sgi.com with ESMTP id 5mocECTSqE0xBLGS for ; Sat, 08 Mar 2014 11:38:26 -0800 (PST) X-Barracuda-Envelope-From: milton.riquelme@stein.cl X-Barracuda-Apparent-Source-IP: 186.42.96.58 Received: from localhost (localhost [127.0.0.1]) by mail.dpspa.gob.ec (Postfix) with ESMTP id 8FA3374217F; Thu, 6 Mar 2014 17:07:56 -0500 (ECT) Received: from mail.dpspa.gob.ec ([127.0.0.1]) by localhost (mail.dpspa.gob.ec [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id xTr_ewLKBtEj; Thu, 6 Mar 2014 17:07:35 -0500 (ECT) Received: from localhost (localhost [127.0.0.1]) by mail.dpspa.gob.ec (Postfix) with ESMTP id 3561C742196; Thu, 6 Mar 2014 17:03:16 -0500 (ECT) X-Virus-Scanned: amavisd-new at mail.dpspa.gob.ec Received: from mail.dpspa.gob.ec ([127.0.0.1]) by localhost (mail.dpspa.gob.ec [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id qRPiPhze0oB2; Thu, 6 Mar 2014 17:03:03 -0500 (ECT) Received: from [180.215.215.254] (unknown [180.215.215.254]) by mail.dpspa.gob.ec (Postfix) with ESMTPSA id 9D9B07421C6; Thu, 6 Mar 2014 16:59:25 -0500 (ECT) Content-Type: multipart/mixed; boundary="===============0380801058==" MIME-Version: 1.0 Subject: Delivery In Progress To: Recipients X-ASG-Orig-Subj: Delivery In Progress From: "FedEx Delivery Express Service" Date: Fri, 07 Mar 2014 03:25:40 +0530 Reply-To: fdx21@foxmail.com Message-Id: <20140306215926.9D9B07421C6@mail.dpspa.gob.ec> X-Barracuda-Connect: 58.pichincha.andinanet.net[186.42.96.58] X-Barracuda-Start-Time: 1394307505 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.51 X-Barracuda-Spam-Status: No, SCORE=0.51 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, BSF_SC3_TG321 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3712 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_SC3_TG321 Custom Rule TG321 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain You will not see this in a MIME-aware mail reader. --===============0380801058== Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Open Attached File For More Detail --===============0380801058== Content-Type: application/pdf MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="PACKAGE DELIVERY.pdf" JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu Zyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDIyIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+ Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDIvS2lkc1sgMyAwIFIgMTIg MCBSXSA+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291 cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA4IDAgUj4+L0V4dEdTdGF0ZTw8L0dTNyA3IDAgUj4+ L1hPYmplY3Q8PC9JbWFnZTExIDExIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFn ZUMvSW1hZ2VJXSA+Pi9Bbm5vdHNbIDEwIDAgUl0gL01lZGlhQm94WyAwIDAgNjEyIDc5Ml0gL0Nv bnRlbnRzIDQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VS R0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAwPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvRmlsdGVy L0ZsYXRlRGVjb2RlL0xlbmd0aCAzNjU5Pj4NCnN0cmVhbQ0KeJytXFlv3EYSfheg/8CHRdZcmPQ0 zxkgCGBLduI4PnalxA/KPoznkGd1ekaKLSz2vy+bw/pYxa4mqSAwIPTw6KPOrw46ePYh+P77Z2+P Xh8Hkx9+CF4cHwUvTg8Pnr0ygTFxngSn68MDE0yqfyZIi6BM8niSBadX1TM/npTB+e7wYBInRTWi wY+HB2dPgvDfwenPhwcvq8mCl2+PgoCtZNhKbO5iNo3Nfu6BCRLPBKUZOUHaTGDstu2bmYknSTAr 4iLJApPE1bXt6vBg/Q/l5cyzepbR6qDI2ZPjMEqfrOyfeVg82dpBUA2O7OC+Guzs4K4a3NjBVTWo H95Wg6d9J8iVTZg0qfbPNzJAhsJzkmRWHUCZAOQyNaHzdBoXxRC5Ss8iJqNFGLk+glyWSp+Jbn/s LxfV1Wrwiahkr1zTw1/p4Q2RtB7U98/p1TVRektXHujKPV0BN+ysCzu4oXXuaI0FPRgIRto31vQG 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 TAdz4YEkxnLQ+a5XFq4eH5htQ5aCbjNpC2744RNwTnbgPtJrbrrpWWanGWIg92GeZvp9B7OYs9tM j2b5xto2v8Y00/dtrhCb079WrxN9YnPIb74hEWt7F1lTQtHxoANflHWRXN++NQuf2y6bQu50sKNT kfVKyItiJJQrfAY8zWy06v3kZ0zpcxkyBOxx1bICJNDXvfDyCMhAe5Yu5l8jCrchWcKK/aw7R+aW GfaKOg2R0mGho+PWgQMuhh3uYTRmb6FG1WoLTybKVBLkcq3FzG5ZQ+QLbnTSaz1VXdrILNItTbYL WQPJJ1IvUGtUny0qfTokWwvriASFzIKK77Y9FBClEGUyVbPBvsle6WzqdvB/jig9GSoz0ZSuXvOb 8HUizbIUYqu7IRyggc7RuDYDwGIRZCifAIO+a0fX3IzTmKzkUBL7RdjFB15wSCyaWgWz3ddJnE8H WeTpLp1aBXNQgEwpXYntIA8g9MXFZPjuv/3gEIkbHFuootac0ONzSvXjoz0uZcc6G+w919ud4QY9 TTuov+JEd6R1W7LiePDPtsGWGnjLZlPLcXHGXu9cevIbZeaZof12vxaxUYW80vexrSphb+CSkKYW QGVMD3lXXqLxXfvoBoTF6PaQR50wZd//2PNBWm+XbcRSsR+4M6nn/z0Me1FB30F9/y2DIw4nt/Pr llmEM78cHli0W+Z7hlVOO8kr/Fuh5NJeXNj/EOn11fx8ZUxwfBP8s5nu/04nQZENCmVuZHN0cmVh bQ0KZW5kb2JqDQo1IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0Yx L0Jhc2VGb250L0FCQ0RFRStDb3VyaWVyIzIwTmV3L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9G b250RGVzY3JpcHRvciA2IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMTIxL1dpZHRocyA0MSAw IFI+Pg0KZW5kb2JqDQo2IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FC Q0RFRStDb3VyaWVyIzIwTmV3L0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDgzMy9EZXNj ZW50IC0xODgvQ2FwSGVpZ2h0IDYxMy9BdmdXaWR0aCA2MDAvTWF4V2lkdGggNzQ0L0ZvbnRXZWln aHQgNDAwL1hIZWlnaHQgMjUwL1N0ZW1WIDYwL0ZvbnRCQm94WyAtMTIyIC0xODggNjIzIDYxM10g L0ZvbnRGaWxlMiAzOSAwIFI+Pg0KZW5kb2JqDQo3IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9C TS9Ob3JtYWwvY2EgMT4+DQplbmRvYmoNCjggMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1Ry dWVUeXBlL05hbWUvRjIvQmFzZUZvbnQvQUJDREVFK0NvdXJpZXIjMjBOZXcsQm9sZC9FbmNvZGlu Zy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgOSAwIFIvRmlyc3RDaGFyIDMyL0xhc3RD aGFyIDEyNS9XaWR0aHMgNDIgMCBSPj4NCmVuZG9iag0KOSAwIG9iag0KPDwvVHlwZS9Gb250RGVz Y3JpcHRvci9Gb250TmFtZS9BQkNERUUrQ291cmllciMyME5ldyxCb2xkL0ZsYWdzIDMyL0l0YWxp Y0FuZ2xlIDAvQXNjZW50IDgzMy9EZXNjZW50IC0yMDkvQ2FwSGVpZ2h0IDYzMy9BdmdXaWR0aCA2 MDAvTWF4V2lkdGggODk0L0ZvbnRXZWlnaHQgNzAwL1hIZWlnaHQgMjUwL1N0ZW1WIDYwL0ZvbnRC Qm94WyAtMTkyIC0yMDkgNzAyIDYzM10gL0ZvbnRGaWxlMiA0MyAwIFI+Pg0KZW5kb2JqDQoxMCAw IG9iag0KPDwvU3VidHlwZS9MaW5rL1JlY3RbIDI0IDY1Ny43IDI2Ny44OSA3NzRdIC9CUzw8L1cg MD4+L0YgNC9BPDwvVHlwZS9BY3Rpb24vUy9VUkkvVVJJKGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20v aW1ncmVzP2ltZ3VybCZpbWdyZWZ1cmw9aHR0cDovL3d3dy5jb29wZXJjb25zdHJ1Y3Rpb24uY29t L2xhdGVzdC1uZXdzLyZoPTAmdz0wJnN6PTEmdGJuaWQ9WnVsMEpZYUEwcjFIOE0mdGJuaD0xNTUm dGJudz0zMjUmem9vbT0xJmRvY2lkPTU0WWtxc2hmWWZscmlNJmVpPW1qdXFVcjdRT29tYjFBV0Nf NEhZQmcmdmVkPTBDQUlRc0NVb0FBKSA+Pi9TdHJ1Y3RQYXJlbnQgMT4+DQplbmRvYmoNCjExIDAg b2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAzMjUvSGVpZ2h0IDE1NS9D b2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9J bnRlcnBvbGF0ZSB0cnVlL0xlbmd0aCA4MDE4Pj4NCnN0cmVhbQ0K/9j/4AAQSkZJRgABAQEAAAAA AAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCACbAUUDASIAAhEBAxEB/8QAHwAAAQUBAQEB AQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1Fh ByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZ WmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAEC AwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHB CSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX 2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACkJwKWmv90/SgDy9vjloKOy/2dqPynH3Y/8A4um/8L00H/oG6l/3zH/8XXhNx/x8y/75 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 ZS9QYWdlL1BhcmVudCAyIDAgUi9SZXNvdXJjZXM8PC9Gb250PDwvRjEgNSAwIFIvRjIgOCAwIFIv RjMgMTQgMCBSL0Y0IDE2IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1h Z2VJXSA+Pi9NZWRpYUJveFsgMCAwIDYxMiA3OTJdIC9Db250ZW50cyAxMyAwIFIvR3JvdXA8PC9U eXBlL0dyb3VwL1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQj4+L1RhYnMvUy9TdHJ1Y3RQYXJl bnRzIDI+Pg0KZW5kb2JqDQoxMyAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAy NTk0Pj4NCnN0cmVhbQ0KeJztW91v2zgSfw+Q/0EP9xDfbVjxU9KiKDZxk15vN23RusAuvPfgxk4a bOoUcdJe/vvj19CkNBRtYB/2YVHApSRqODO/+eKIqZ69q54/f3Yxff2yql+8qE5fTitaXR8ecFU1 XJBaVC0jLRMVZUTfu18dHlz98/CgOruYVlX0MvUvn84OD56d04pSIlk1uzo8oFWt/9HKUmwIVdXs y+FBTZhqzEJu8OrwYH50PTnmRzfm59tEHa3MYK0HlRl8gju3enBnBt/14MfJf6vZfw4PzmYISyxi CZigtNXSxIzMNf0RIhwhYiRhDCcQlFdr5bGKN4x0ellOmNZhVnsi0R7LaK9uiEyVNz86N6qwillq fZyZwf9AZy9jnaV6vdeDJzOo9OCdGdzpwcYMHuD2FG6v3W11tDCDSz14SF5d6cG9GWwAm7XFxs7R PxfwnABnp3DnRg8s7J9jqmHl24T7tVtjBC2JoCXq1kCw1V4BcYUjrjqGvg+Aq0YQqt1ECNK1FvA8 3E1miaYhivURngWEb7daVUf/MoNOD+iYMC2yUkcJFyJebX50PEakw4i0hLY9Ip1hSWqW2jFqtM74 ZbcPT5RiVJgkTZtSYaAnNUoODRZCEbkXU1i0oJIT3mNKGKaU+eGaMzlKU2A029pYWUITNUrZGaNk tbYnWjBKijmPoaEYYpU20nwxPwtwz9tSQKaYa2kRpLHG7SoF/6SY97RC67hHZQmx6RYizbckWj3p wU9ODB/a1iDPdTKRbAOQ0hc+GH4eZbIt5kPGlQElK3jAUNjAIpkgTTkNY75qiTQauz6IP4eEayRb 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 vx7jjaLhnnZMXVhmYrqS1vJHkmTUVTvr2elwauYLF6OYvfRPp46dRcX2sK4BF9EuRIQWiyv+O2xC ZcfzsViA8VVDQm60Kd5iAcRXDQmV3U7ItuiRT3dCdg+m0CrXR+CYym4nZFvUXd0J2T2YwnzRnwdI qOxxQrZNv+KgX4/cedk9zKwb0qxFP4RSvYOlrXMJ+7cM7u8YBpT/D/5K7coNCmVuZHN0cmVhbQ0K ZW5kb2JqDQoxNCAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMy9C YXNlRm9udC9BQkNERUUrQ2FsaWJyaS9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2Ny aXB0b3IgMTUgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgNDQgMCBSPj4NCmVu ZG9iag0KMTUgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQUJDREVFK0Nh bGlicmkvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQgNzUwL0Rlc2NlbnQgLTI1MC9DYXBI ZWlnaHQgNzUwL0F2Z1dpZHRoIDUyMS9NYXhXaWR0aCAxNzQzL0ZvbnRXZWlnaHQgNDAwL1hIZWln aHQgMjUwL1N0ZW1WIDUyL0ZvbnRCQm94WyAtNTAzIC0yNTAgMTI0MCA3NTBdIC9Gb250RmlsZTIg NDUgMCBSPj4NCmVuZG9iag0KMTYgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1R5cGUwL0Jh c2VGb250L0FCQ0RFRStDb3VyaWVyIzIwTmV3L0VuY29kaW5nL0lkZW50aXR5LUgvRGVzY2VuZGFu dEZvbnRzIDE3IDAgUi9Ub1VuaWNvZGUgMzggMCBSPj4NCmVuZG9iag0KMTcgMCBvYmoNClsgMTgg MCBSXSANCmVuZG9iag0KMTggMCBvYmoNCjw8L0Jhc2VGb250L0FCQ0RFRStDb3VyaWVyIzIwTmV3 L1N1YnR5cGUvQ0lERm9udFR5cGUyL1R5cGUvRm9udC9DSURUb0dJRE1hcC9JZGVudGl0eS9EVyAx MDAwL0NJRFN5c3RlbUluZm8gMTkgMCBSL0ZvbnREZXNjcmlwdG9yIDIwIDAgUi9XIDQwIDAgUj4+ DQplbmRvYmoNCjE5IDAgb2JqDQo8PC9PcmRlcmluZyhJZGVudGl0eSkgL1JlZ2lzdHJ5KEFkb2Jl KSAvU3VwcGxlbWVudCAwPj4NCmVuZG9iag0KMjAgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0 b3IvRm9udE5hbWUvQUJDREVFK0NvdXJpZXIjMjBOZXcvRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9B c2NlbnQgODMzL0Rlc2NlbnQgLTE4OC9DYXBIZWlnaHQgNjEzL0F2Z1dpZHRoIDYwMC9NYXhXaWR0 aCA3NDQvRm9udFdlaWdodCA0MDAvWEhlaWdodCAyNTAvU3RlbVYgNjAvRm9udEJCb3hbIC0xMjIg LTE4OCA2MjMgNjEzXSAvRm9udEZpbGUyIDM5IDAgUj4+DQplbmRvYmoNCjIxIDAgb2JqDQo8PC9B dXRob3IoTUFOIE9GIEdPRCkgL0NyZWF0b3Io/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwBy AGQAIAAyADAAMQAwACAAVAByAGkAYQBsKSAvQ3JlYXRpb25EYXRlKEQ6MjAxNDAyMTgxNTA4MDgr MDUnMzAnKSAvTW9kRGF0ZShEOjIwMTQwMjE4MTUwODA4KzA1JzMwJykgL1Byb2R1Y2VyKP7/AE0A aQBjAHIAbwBzAG8AZgB0AK4AIABXAG8AcgBkACAAMgAwADEAMAAgAFQAcgBpAGEAbCkgPj4NCmVu ZG9iag0KMjggMCBvYmoNCjw8L1R5cGUvT2JqU3RtL04gMTUvRmlyc3QgMTA4L0ZpbHRlci9GbGF0 ZURlY29kZS9MZW5ndGggNzA3Pj4NCnN0cmVhbQ0KeJztk01v00AQhu9I/If3CAe63m+7KkWlnzRt GpKoHBCqnGSbhCR26myg+ffM2i4NakTphQP04vF6d8Yzz/uuMIggEmgOGYFHApKDawmpoLiC1FA6 gpTQYU9AmxjSwKoYQlOCpijAuZIQElxQnlDgylJZS5U4FbYQkdbY2WGtkBShzTqsxbqruWMdXyz7 /nDqZqzxGdEXsNYQMpzZ3X354g9S+NNTxNNTJBQ0aG7ESGhsmpiGBaeRaVoCYcBp3Bg8oWEheKBC QIgFFRYmwBBxIE2YCTGRlCVkAkw4CZEkrglURNihBIinIgkIv4GyINyKVIqCUJpUID2oIU1yQFuQ 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 d45KpSZMFt/0vAI0j4pwX/hdiLheASWoT8WAB99KMXh24C6xdW2Wn349SWN+iCBcU+DJwdivW4ng 8EwGm+uObqC9Lwa5RNNkUHHz+kwy3R9kJrgE8poAMRi95vZw7wP1WyVk8fc+0JpOeSqr0pNrdLa7 z7/QMm7ztUoWtucQvO9wwt9eY8kB6/pHUfPPINC/AAaKhxENCmVuZHN0cmVhbQ0KZW5kb2JqDQo0 MCAwIG9iag0KWyAwWyA2MDBdICAzWyA2MDBdICA3WyA2MDBdICA5WyA2MDAgNjAwIDYwMCA2MDBd ICAxNVsgNjAwIDYwMCA2MDAgNjAwXSAgMjBbIDYwMCA2MDBdICAyM1sgNjAwXSAgMjdbIDYwMF0g IDI5WyA2MDBdICAzNlsgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDBdICA0Nlsg NjAwXSAgNDhbIDYwMCA2MDAgNjAwIDYwMF0gIDUzWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMF0g IDY4WyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDBdICAxODJbIDYw MF0gXSANCmVuZG9iag0KNDEgMCBvYmoNClsgNjAwIDAgMCAwIDYwMCAwIDYwMCA2MDAgNjAwIDYw MCAwIDAgNjAwIDYwMCA2MDAgNjAwIDAgNjAwIDYwMCAwIDYwMCAwIDAgMCA2MDAgMCA2MDAgMCAw IDAgMCAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCA2MDAgNjAwIDAgNjAwIDAgNjAwIDYw MCA2MDAgNjAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCAwIDAgMCAwIDAgMCAwIDAgNjAw IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwXSANCmVuZG9iag0KNDIgMCBv YmoNClsgNjAwIDAgMCAwIDYwMCAwIDAgMCA2MDAgNjAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCA2MDAgNjAwIDYwMCAwIDAgMCAwIDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDAgMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAwIDYwMCA2MDAgMCAwIDAgMCAwIDAgMCA2MDAgMCA2MDAg NjAwIDYwMCAwIDYwMCA2MDAgNjAwIDAgMCA2MDAgNjAwIDYwMCA2MDAgMCAwIDYwMCA2MDAgNjAw IDAgNjAwIDAgNjAwIDYwMCAwIDYwMCAwIDYwMF0gDQplbmRvYmoNCjQzIDAgb2JqDQo8PC9GaWx0 ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDQ0NzU5L0xlbmd0aDEgODcxOTI+Pg0Kc3RyZWFtDQp4nOx8 CXhURbr2V+d0Zw9pAoSEQLo7TWePHdlpQtLZCBCwQzbSYeuQhEWBRlZBljgjLnEhjqLIqEQHFWQG ThrHSRQx7qAyIougozZu4z6AggtLzv9WdXcWlCv/nXnu89zneirvW+fU8n1Vder7quokQIyIeoE0 lJFfOq7wtopoidiI80SxDxTmF4zpHRJeTvTVCCJpQmGxvdQTcuEWom9uJBr+UGFpeW5Y1LbfETMP hJC37aWWQbrt0+OJWAukOivyJ1YOrbSvgKx6op731MyvXlgdV/U8UXpvyPtDzbIlhi3X3JJHNAHy gnrMWjh7/p5XVmURWbYSBb48u3rxQoqiYOhPgjzd7HkrZn2X9dEyorJ7iFwPzamrrj2cbH4U+jKR P2wOEkLa2CY8L8HzwDnzl1xn+TzKDl3RRDGz5rlqqrMijduJXhqC55nzq69b2OftPhtQfiPKGxZU z69bH/MYnt/Hc/iCha7FS9oT6O/QH8TzFy6qW/h+00Nj0feFRH0iiY+dtn/yZ89n2GdEZJ4JCubF iP5U7srh8csPTUpsX352kvbB4JdRNliU5xfigG0X7seg729frmZoH+zI8V8yTwlTqAR3/JJIRxZy YJRaoVekaPZLu0lLQdpN2sEQOcAby9U0S4rUaqXAgGBJ0koazXFKUdvoOowyH0mM3cQ8A/HwF23P 9jLeEmm2jZiqqqh9u2Y37ylpNPtpNi+NmDd4NwuilfQYPUQfsg+lAfQt7kvYw7SbvUnbaCuwgG6m ++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 ybwmJs92lCsv8rAAR5pM9E1wZDtd5ukF44t3bVFcnN5HuTwTv/QY37TRCnqUmlFORRJVlEiiCv5+ bnB6EpWdXMX6b++afx4u/zCIs3zrmuUuBP+PPRD8/tYQhXzM2S0YfS452Oow3/sg/zTVGWv+0gHP rB6R5bG9LXrpi8zugHhHrgJTBb8/uYrZRXJDB3zW1a1fELFqo3ctje/8rRCH12ri5WeCb2dcLSzi 23WkY1mfk9xtwRNNM1LhY/Yu5y8YLlQ0uWygl9i6PtpHCDl9ajOaT7u/eHT9SwVfSQvMi2iQrjCL 47x956Q6p8f5aavbvdNLSu0zpM6uUtV+/6De11C4wzn5xrOshtgxdpkwJK7CTkx/y8LimX5RB3P/ vC2CcabXsnd6ySrcvM8fwjnaMdwob6syYOPCn0yrf9f3wYr9Skzfa6/m0xJ5VepX3mm3fXyrfLPv zLZO1GDZpbMhoUdzPtXePFnSXMrfEnBr97lYc7fGwtGLHTL84lHLtj9c1sXn0RFd57H79FPaph73 Z8Wb3/4Xm82hZg0KZW5kc3RyZWFtDQplbmRvYmoNCjQ0IDAgb2JqDQpbIDIyNl0gDQplbmRvYmoN CjQ1IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3MDc3L0xlbmd0aDEgMTY5 NDc2Pj4NCnN0cmVhbQ0KeJzsXQl4lNW5PueffUsmIQkJA8wfhoRAQsJuWISBbOxbGEwAIZPJJBnJ 5mRCAEEjuNCIiruoVdSqVVyGwSXuKG61brW2Wq0WW9tqFat1qUUh9z3/NycEXB7vc3tre++cn3fe 93znO99/9py0IzDOGEvHh54tLq2cU/Fl56fDmbJxE2OubWWzSpcVjUq+jbGLqhjjT5XNml9yVWO5 g7EL8xhTxlSUlpX/ef8nXzFl3XbGdB9WLF5UGaqbuoWxS1TGr7FXVPpmPfnWH3qZUlTAWMXqRZVF 4/7xzv3rEes1vLUm0OxvS7ttwPuMjYgi3t2BdRE1evUTLzN20g7GDIPr2xqaP/98gZ2xUXWMWQY1 +Nvb2GDmwfszUd/Z0LShvuD3n1/C2Krb4f9yY9Bf96ecIyci/iqUT2qEwXGH8XXkL0V+eGNzZH3W Ft0UvKuYsZx1a4PhFj6Mn8NY1zMoz2xqDfgXnrTgMGO1XYwNLW/2r2/LHj0cbeE9KFdb/M3B3HVL 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 GLnD/JxI8VVvZTcoVUwX2BBuYmkN4eBaNqXJH2nBbdfKeOXSWSrLxEnSq612I3OwtHiOs/8i7kzA o6ru/n9m7mRmkplECFsCKA6bbAICigVZVFQ2Q0ShFFtNEZdBpewEMBAN4i4uiLjUBSlStGiZauvS acSIISwGzCQxQwlJGCaMNyEJuTdjpJ73c2+GENA+tf/n+b/vc57P3LnLOXN+3+/vLDfytA6RJDqZ 11uuWMmeC0RnijIpPX2i6D192o0Xi6G3TJ9ysZH/5jPGvNNOdDHPFH6hfWvrNuESySI1dhYn3MxO 5OkdCxYvEFvMz+3m5/vm54fm56fm56572ayIfPPzgPlZZH6WmZ9Hzc/j5qdqrJuiwfi02M3Prubn YPPzGvNzpvk57/5777/Xstr8XGd+Pm1+bjQ/XzM/t5qfO1pnj//0afmZn06UVNDAjsJOYfy15//u mhUfEv/rY5K4yHzvNt7MHhLPic1ip9glDolK0WCxingzUmcsWlUYf/NSqNfR/H99Y26xjGo5Prqu 5fj7aJs65Fvt5nPOLe7T554n9T33vH3yuecdXj73vM8P5573O+/+gK7nno8YKuKtbc8b29y3C8sN V517PvVxjgnkdD+RbvydkDrM8dah1nSxxrrFWiLeUH6v/F4U2ZbY3hSBuK/tj1qUhJsTfmv5KOER l8WS727nvs56rftW92vWFYlzE+dZ/564JvFJa16SNclpPZTUlNRk/YalVTe0sRcnfviTpZBSlnis TYnESuFPlMaknq2lH2UUZQJlnlk2nV8SC5M2J/2l3cZYeaNN2W6U9uInS0L79NbyePsNrUVvKcnd f6IMpozo+HKbsqWlmHfOKx13dsxvLQc6HaUcN0pn20+V5MGdkzv36/J4m7LBLLt+shR2aT5TUjqm dG0tE2Jl8k+WdLPMjB3PLdmxT+O53WYpai0ttY+k1KUOSJ2b+lrqNqOc33rqjp8qLa2n/i21MlYa zxbjV1Kbzd/KNrhwaq9RrWVqr+mtZW6szKNk95rXexhlfJ/BfSb0msfn4D67+uZfUmyWxn6zKQv6 96UM6l/ZPwqV/X8YkD/wNaP0rxz46cDIwMgg26CkQR0HfUwpGjyWkj549pBXY8V/WfbwvsOrRzx3 xQjK2JEpI2ePzLxyZ6x8euXuK4tGDaBcOWrd6MNj7GZ5Zswus5wee8XYd2PlwzGnOX93bJ15VjfO Os469t1xg8Y/Pf7TqwdfN4ty5IZ7xjzT8jTHupanJo01nps0dXLPyUMnj528bUpfs6RPmWeWzCnr przKZ+aUAsrRqSunZk89cuMCysa0DJ5KTzuQdmBKAZ+HjW+UyjQ1rXlatlm2TttnliPTVDgyTU+3 TdO5r6bPTj+cXnnTEspz0y/mua3T9JY701dO06cfm147I33m7lmzfpP8m+6/6Xu37e7Zd5fe3Xzm eM8gys757eb3XJC54KEFuQsqF6gL9IW2hcMWTlh418IFC1cufHThxoXvLvxwYd7CQ4sWLHpu0bZF DYvF4uTFExfPWfzp4uIlI5bMWfLq0plLH13qX9q4zL5s0LLrl7277PjyCcubM7tnXp+Zkbko89XM HZmlK3qu+PWKD1eUrmhe6V7ZeeWVK69ZOXfl1pWlqwasmrDqtlWbVm1fdXiV/sD4B1Y+8GmWPWt8 1qKs97N2Z51e3XX1Pau3rlbXjFqTuWZHdvq/mas+PH8+One2yV52thjzSPYbZ0vLDPJvxt7k80fc ueOkJdN/ctY5M/O0KefOHdm7zxZjdsguOlta5gVjDm23PWV3lw3Mw2Vj65g1zTnYPDLftk9nft2U tLndxsTC1jmTZ9vrveYadRM/TNp0du5sUYnZeYI5/7Y81TNp8xn1jKvGXGw+W2bcN5+PKUi7HyYe YybfTI0ys7VCereRY5lZzq4OkfNWhQlt1oGzK8Fmo98/mv23/2j2T4jN+Y+b8705y5vtUDtpAt83 nZkJ8WNbzC/mppb5p2V+i/nInMgMaLg2t3V2POMoc1zK5OxKo8ZZj3tNz67MrqQ146lG7qWnVvaa /uOcYB4sajOj/sQ823Ze/fGcGpu5d5vZ1DKLTj0zfxrzOlf41Ww1dRtXpqekXzEi7UBnW8s6Zh5Z s7o0dzpKViWfWX3OrCrJ3Tvbzq5ALVlprG3m0zbjCeru6pxs3DGuGE8Z15O7JxaeydSUrsndWQGT jfrG95arZ9fRtiup0Rdz1Yytm21WzmRaOH+d3HDO6lgYWxk7nuk995tbft34/SnpnY6mTKA/56hv qGZojFNtRuwZjVtGoqFmS6b0movekw03DSVS0ju+bPq9zfCmzagelbqDWM+ssEUtrWarKdnZaksx fsE49ppuuGJ8a8k045it9hnce1gLLStc72HmqtSmGCtcy+pmro//j8VcU9uUHz9hrrRtSmzFbS0/ rmGstP9dMdfin11aV+x/U85Xyiit6/i/KebK/rOLudv4meV8dcw9SpvyY/3MvUubYuR9i9P/Xflx y/+5dz+vtOhs7F2SNo+xT+455nRimbHrMcsz5hW7sdMxz56Z3NPYA8XuUdhBXWnsmlquGnO/8c0o 5u5olrmzMvZQdWPrzP0RuyO+7RrzjLk7yW7dxRhl67TstMPTso0djHm2NbbPafm+lV1QpXHF2NEY 9dJixdzxLDH3Rjxr3t1qfKbu4Omtxm6K2aJv2mFz35UZK+nmlb7Grss8S087bMxLsXsUdm5D2asZ OzSj3jrzG8Xcpy0w93M8a+7UWvdrU9LHWU1FThta3LSkRYkxdjMeetzS0ykFZtvGL60z2zLbPXck /tjRtnlwSXHLmbBbcmWZcqP8VJkhLlBmCbeySNYrfjFSWLlTyFnI/KYqM+QxYeGzSVj53KPMkoW8 ob8jT4s8edqSITpYfiumW+aIVMsdwmOZK9pb7hXteXIET45T7pP/EBbaqRI2nnXzbHuedfNsgtle iKdqRbzlNtGd+724P4P7F3K/F231oS0PtV+hP0eEi2876W975QH6kSX/Sn9HKVXyReWYGKqExDAl LAYqJ+RBJWL8f6jTeiGtVwob36zKrB++pzcbaOlzkSkuEJNFOxgl+ovRMFceFHfCXbBYhsUS2SiW wjJYDpmwQrjFSnlIrIIHIAtWQw7118LDsA4egUfhMXgcnoAn4SNxjfgYonz/AaTobxFggXQx2nIT TIeb4RbwimmW3aIHEXuVmeIq5VbhVG6H+8SjyhpxkfKguFjJERfZXpeHbG/Am3BI9Ld9DUUQgGIo gVL4BsogCIfhn6J/XDt5MO6oPBT3rXDHqXyvgTp5yB4nJtv7cxwu+tuv4HifPGi/H+bD72CpDNuX AdrY0caONvaVgDb298Ro+/vwV2gSox0DRA/HQLhd9HdkwBxYCItgBWTDg4BGjmfgWXgd3hTXON7h WAO1UAf10ABNgIbOO2Au3AlLRY94IUbHdxQ9zNw9Tl4nmN9O4HqT6ETW+shaH9nWl2y7mmx7iGy7 mWybQ7ZNItvG8/QW8mWwMlM+rfxSriSDLidvXqCFDMUvtypV5FlIKMpxcvCEuNXMs2M8dZht5plR cZsY0qb9ibS/jPavo/2RPD2btjfQ9l+pNZy2N9L2K7T3Ke3NFEm0cpJWTtJKO1q5hFbm08oQWhlC KwNp5RJ6eYSW+tHSXFoZRgvbzEj38O09kUIb/6CNf9BGP8vt8mPaGUI7t9POCNq5mXbGWbzyK9oa Ytkk/0bNT2jPRnvL6NldtNmBnuXQ2hNKpWykdwVKNaP1hLhUicRGbHtaHUCrXlodSavX0WpvWuxH a19T82tG3o1EOUO4YjPMv5hJjJnlJZEjVbEWHoZ18Ag8Co/B4/AEPAkFMir2wj7YDwfgKyiEg3AI voYiCEAp/FNKcQTK4ShUQCVUyb3iGISgQQbFKcZ5I2igQxNEmd2+434zfA+n4V/wA32RUrUIsJiz YpUymwz7tTyp3MYxQ560HZKq7WsoggAUQwmUwjdQBkE4DP+Eahm1nYAIfAsq1EAtnIQ6qIcGOAWN QF9sP4CUe+OS5V7HeBl1XAeTYQqkybDjFo4zYDb3b4Xb4HapOjJgDtzLvYUcF8ESvi+HTFjB+QMc szk+COv4/gjgg2M9x2c4PgvP830DvAAb4UXaf53rm/m+he/v8P09vn8CeOTAIwceOfDIEZTScRjw yIFHDjxyHKVOBVQCHjlOyKAjAt8Siwo1stBRCye5V0fb9dAAjZzjnUPn2MQ5HjnvgLlwJ35ZxdOi o7lyKeJpcncGOWysXnGc/YmzyZxNIsvzlK/EQGHhqi4mkJlBMjNIZgbJzCCZGSQzg2RmkMwMkplB MjPI02EyLUqmRcm0KJkWJdOiZFqULFLJGJ2M0ckYnYzR+b1cfi+o/EbEKb+FOWTQHbKKrAmSNUGy JkjWBMmaIFkTJGuCZE2QrAmSNUGyJkjWBHFSx0kdJ3VcDOJiEOd0XAviWhC3dJzScSqIK0HcCKJ6 FNWjqB5F9SiqR1FVRVUVRXUU1VFUR8UgKuqoGETFICoGzRFbJhxoeTUj2cna+3fW3g+UQtbag6xC rDamvhEiPEiEFaa+D3CWwll39H2IFkrELNZJD+ukh3XSwzrpYZ30sE56WCc9rJMe1kkP66SHX7qC tbI3a2VvxmwRY7aIMVvEmK1gzGqMWY0xqzFmNcasxnqazJgNMWZDjNkQYzbEmMVvMYV1cwTjtIJx Ws44rWCclitzRF/lDrhPrGUd7cE62oN1tBtrp4e108Pa6WHt9LB2elg7PaydHtZOD2unh7XTw9rp Ye30MBZDjMUQYzHEWCxi7GmMuSLGXBFjLsQa52GN87C+eVjfPKxrHsZKiLXNw9rWm7ESYn3zkP9F 5H8R+V9E/heR/xXkfwX5r5H/GutfMutfMvkfIueLyHmNnA+xBnpY/zysfx7WP4+R77IBrRvYnz0t H8aBicznFcznS3FiIk78gbtPku3XKYfYSRXJH5SAmGO6F+TpMp4qZcV8Wq7mbA51D1H3a66Op+7T 1P2SupOpW0S9Xwl7bBz9kicDPFnEk5PN/ZWRM2+bLd3J/XHcP8D9Yu6PpqXHuPs+LV1DSwW0NNR8 /htzn3jE/NRFguUC0cMyG+6D++F3sAAWwiJYAo+z0re35IpEfuUhWs+knT3m3ugN0UX5RFyufIb/ laIXq/bN7BKTWbm7skvspVQzM5ygBxGufSsuZz1fJD+jRmf2lD2NNZ3694lJrGCzyflbxSTlNnP3 NUkk0bNu9KwbPetGz7rRs270rBs960bPutGzbvSsGzU7UnM+NTtSc75ZM5GaidRMpGYiNROpmUjN RGomUjORmonU7EvNy6jZl5qXmTXd1HRT001NNzXd1HRT001NNzXd1HTHao6I1RxBJLeKAXwbYGrs M/cITagVNP4tOtwE0+FmuEUksHdLYO+WwN4tgb1bQrzx32ltKNyBOumxnUae6VGFKLL0k5WW/jAA BsIguBQGwxAYCpfBMBgOI+ByuAJGwpXwCxgFo+EqGANjYRyMh6vhGrgWJsB1cD3cABNhEkyGKTAV boQ0mAYvwyvwKrwGr8Mb8CZshrdgC/wBtsLbsA3+CNvhHXgX/gQ74D14H/4MO8EHf4EP2K3lcvxM lll2weeQB1/Abq5/KQOWfNgDBbAX9snjlv1wAL5iBzGbt5XbZKHtC3YSu+FLyIc9UAB7YR/slwHb AfhKBuLay8q4jtAJOkMXSIFUWWlfDy8BGthfk8ftW+VJ+9uwDf4I2+EvXP+cI7tN+xd8L5QB+9c8 X8p3XVY6LoSLoAdcDB550tETekFv6AN9ZcBxCfSTZY7+QC44yAUHvjuGcT6ce6PlccdVHKfLk06r rHQqYIM4sIMDnBAPCeACNyRCElwA7YB4ncnQAYjbSdxO4nYSt5O4ncTt7ArdoDvQfyf9d9J/J/13 eqAn9ILe0Af60qdh8rhzOPxCBpyjYDTXxsP1cAPcznNzON7Fvbt57h7wwjxYyr0sWA1rIBvWc/0t nn+b57fJMucfOd8ODVzTZGW8BYg1voMMxBNHfCd5PP5icmiVBXUsqGNBHQvqWFDHgjoW1LFQw4I6 FtSxoIylnQxb2kMydICO0Ak6QxdIgVToyp71IugBF4MHekIv6A19oC9cAv14y+4PA2AgDIJLYTAM gaFwGQyD4TACLocrYCRcCb+AUTAaroIxMBbGwXi4Gq6Ba2ECXAfXww0wESbBZJgCU4XxP3XrsqTB NEiXxyw3wXS4GW6BGfR7JvwSZsGvIEvWWFbDGsiGB+EhyIG18DCsg0fgUeB9w/KMbLI8C8/B87AB XoCN8CK8zBz5CrwKr8Hr8Aa8CZvhLdgCf4CtwApo2QZ/hO3wDrwLf4IdwFxrYa61/Bl2gg/+ArnM 5Z/BLvgc8uAL+BLyYQ8UwF44fxaZIX/LLD2LdeACZv6rWAcuYPa/iln7oI0Zz8aMZ2PGszHj2Zjx bMx4NmY8GzOejRnPxoxnY8azMePZdvCO8h68D3+GneCDv8AH8DdZY/sIPoZP4FP4O/jhH5ALn8Eu +BzyYL9w2w7AV8Id114kxHUUrrhO0Bm6QAqkCpf9SVljf0qq9vV838j3TTJsf4k1CQ/M2ewN7hGL /Q/co892+mynz3Zmaft78pj9fdjJPR8Ys9yHPP9Xrn3E/Y/hE84/Bfppp5/m7Pcl5wXc28txH9f2 wwH4CgqF2/41v827nZ13O3sx10pkkzlTltE33ufsYeryzmJX+c7u2s7u2n4SeGex885i553Ffgoa QQOd2JrkMUeSrHFcAO2gPaTIJkcqdIVu0B0uFAmOi6AHXAx9hdtxCfSD/nAZ14ZxHA6ssg5W15ZZ V7idVuFyKmCDOLCDA5wQDwngAjckQhJcAO2gPSRDB+goEpydoDN0gRRIha7QDboD/XTSTyf9dNJP pwd6Qi/oDX3gElnjHMg72iC4FAZzzk7BeRnfz8zEI/h+BYyEK+EXxDEKpvL9RuA91zmNeukyz3kT TIdfySbn7fTzLp47f5bmfdfJ+65zOWTRh9WwBrJ5/jF+m/FvztobOW6i3ZfgZXgF3qa9bXBmFn+H a3jo1Kj7vWyKF/JYvIW9klOq8egZn8CxPdc7CLc5s7NCxXfhWgqkAvNxfHfj75LGSI/tq7IYoQFz j7ar9fp8rq8w/45i7LdqRZx1ovy1cqP8nN1pgvG3Le7ViEHWoTJiHQEjYRxMlAetk+Re6xS4kV35 DHmE3cVhdheHE2bJvQmz4REZSXgUHoPH4Ql4Ep4C3uUS1sMz8Cw8B8/DBngBNsKLsAlegpfhFXgV fg+vwevwBrwJm+Et2CIj7oEyIhR6qltn8U68iHfo0fRfo/+adZQM0X/Nei3Hx2SF9XHeXW4VlzJ/ XcqTexNulqGEW2Am/BrukBUJ8+A+mA8LYAk8IjVi04hNIzaN2DRi04hNIzaN2DRi04hNIzaN2DRi 04hNIzaN2DRi04hNIzaN2DRi04hNIzaN2DRi04hNIzaN2DRi01yTZYVrCkyFGyENpkE63CQriF3D w5GyBIf2WU0fZb75l8MexL6NuLdZb5U7rHPhfnhM5qJBrvH+TezbiH0bsW8j9m3EnkvsucSeS+y5 xJ5L7LkJmXJHwgpYBQ/Cw3IH/cqlX7n0K5d+5dKvXPqVS79y6VeuuBoHvDjgpW9VOOClf01kUCMZ 1Eg/y+lJKT0pVWb80KjM+kFjdUnEmSGsLom4MyT2jp9HdjWSXY30rpTeldK7UnpXSu9K6V0pznhx xoszXpzx4owXZ7w448UZL854ccaLM16c8eKMF2e8OOPFGS/OeHHGizNenPHijBdnvDjjxRkvznhx xoszXpzx4owXZ7woUIoCpShQigKlKFCKAqUoUIoCpTjjFdeiQgYqZODFHlTIwI891oniQqJPI/q0 2N9bn4i9Tw9Ahc6oMBwVOqPC8NhfiX+FV3vwag9e7cGrPaiRhhppqJGGGmmokYYaaaiRgRoZqJGB GhmokYEaGaiRgRoZqJGBGhmokYEaGaiRgRoZqJGBGhmokYEaGaiRgRoZqJGBGhmokYEaGaiRgRoZ qJGBGhmokYEaGaiRhhppqJGGGmmokYYaaaiRhhppqJEhHORCIxG7ifhZIl5GxMlEuJoIl4tUNMpD nzy0KUabYnRIRoNk7j5P/HnEn0f8ecSfR/zFxF9M/MXEX0z8xcRfTD+K6Ucx/SimH8X0o5h+FNOP YvpRzFjxyrfPm+8axaXWm5jjZoGXeW4ec9y9cB/QNj0+2jrXZTFnrJF7XatkxPUAZMFqWAPZ8CA8 BDmwFh6GdcDc6GJudDE3upgbXcyNLuZGF3Oji7nRxdzoYm50MS+6mBddzIsu5kUX86KLedHFvOhi XkyKhwRwMecZM3vE7LvGGA8xxkOM8RC6Ge/pfbl7iLEbYuyGGLshxm6IsRui7xp91+i7Rt81+q7R d42+a/Rdo+8afdfou0bfNfqu0XeNvmv0XaPvGn3X6LtG3zX6rtF3jb5r9F2j7xp91+i7Rt81+q7R d42+a/Rdo+/GnDVLfoPa+1D4s9Y5y4ioXAwjIh/3K7nfhBunceM0bpzm2XKedfKsi5GSQKSDGSkJ RDs49jeg3Th0GodOE6WPKH1E6SNKH1H6iNJHlD6i9BGljyh9ROkjSh9R+ojSR5Q+ovQRpY8ofUTp I0ofUfqI0keUPqL0EaWPKH1E6SNKH1H6iNJHlD6i9BGlT1xOJDl4k483+Vav6I4/+URwByPgO0aA TiRriaRL7C8zXYy/zBDJi8Zfs/AuH+/y8S4f7/LxLp+ocogqh6hyiCqHqHKIKoeocogqh6hyiCqH qHKIKoeocogqh6hyiCqHqHKIKoeocogqh6hyiCqHqHKIKoeocogqh6hyiCqHqHKIKoeocogqh6hy GMezzHF8JVF8FftvTtfT6+fp9U7hIt79xLufWPcTVydi6sSdF4hnP/HsJ579xLOfePYLu3Upvi6T 31mXy+PWteTFU7LW+oLxl3auNlvXSl1Y+PxO9OcJ3ZpJRqyAtTJgXSec1keo/aSstm40/vcC5PfW l+T3Lva3Lva3rgvhIugBF4MHesJcnrkT7oK74R7wwjy4F+6D+2E+/A4WwEJYBIthCSyFZbAcMmEF rJTfm/E009Mqa5YME8sx6wZ50sqbnphtXUS2L4alXM0kyhWwRhZas+FBeAjWik7WdfI963qee0Ye tT4Lz8HzsEl+RHwfuaxyn0sBG8SBHRzghHhIABe4IRGS4AJoB+0hGTpAR+gEnaELpEAqdIVushYN a9GwFg1r0bAWDWvRsBYNa12jZKFrNFwFY2AsjIPxcDVcA9fCBLgOrocbYCJMgrnEcSfcBXfDPeCF eXAv3Af3w3z4HSyAhbAIFsMSWArLYDlkwgpYKT8SNjLnCCp+jYoV1o2ynlxaKxvIkyaRjgtRXIji QDMOGBlWwYqjs+LoPKGjchSVo6wwOiuMzgqjs8LorDA6K4yO+lHUj6J+FPWjqB9F/SjqR1E/ivpR 1I+ifhT1o6gfRf0o6kdRP4r6UdSPon4U9aOoH0X9KOpHUT+K+lHUb0b9ZtRvRv1m1G9G/WbUb0b9 ZlY5nVVOZ5XTWeV0VjmdVU5nldNZ5XTUjaJuFHWjqBtF3SjqRlE3irpR1I2ibhR1o6gbRd0o6kZR N4q6UdSNom4UdaOoG0XdKOpGUTfKmFtGdhtjMQtNV5Pda0USalehdiVqnxQL0NiPxn4yvZon89G6 Cq2rrCs5z5InqNVA5qtkvkrmq2S+ig//wgc/Pvjxod76tPySEVDCCChhBJQwAkoYS/uYG3bjUQCP AnjkxyM/HvnxyI9Hfjzy45Efj/x45McjPx758ciPR3488uORH4/8eOTHIz8e+fHIj0d+PPLjkR+P /HjkxyM/HvnxyI9Hfjzy45Efj6rwqAqPqvCoCo+q8KgKj6rwqIoRojJCVEaIyghRGSEqI0RlhKiM EJURojJCVEaIyghRGSEqI0RlhKiMEBWP/Xjsx2M/Hvvx2I/Hfjz247EfjwN4HMDjAB4H8DiAxwE8 DuBxAI8DeBzA4wAeB/A4gMcBPA7gcQCPA3gcwOMAHgfwOIDHATwOCC8OhnAwhIOn8HsXLp7EuTKc +xbnanGuFudqca4W/934vxP3VNxTrU9w7SmcXi//hIPVOFiNg9U4WI2DNThYT578HRfLcbEcF1Vc VHFRxUUVF1VcVHExhIshXAzhYggXQ7gYwsUQLoZwMYSLIVwM4WIIF0O4GMLFEC6GcDGEiyFcDOFi CBdDuBjCxRAuhnAxhEu1uFSLS7W4VItLtbhUi0u1uFSLS7W4VItLtbhUi0u1uFSLS7W4VItLKi6p uKTikopLKi6puKTikopL5bhUjkvluFSOS+W4VI5L5bhUjkvluFSOS+W4VI5L5bhUjkvluFSOS+W4 VI5L5bhUjkvluFSOS+ViKC7puKSbo7HFhUZcqMeFehzQccB4b6pH3XrUrUfdetStR9161NVRV0dd HXV11NVRV0ddHXV11NVRV0ddHXV11NVRV0ddHXV11NVRV0ddHXV11NVRV0ddHXV11NVRpx516lGn HnXqUacedepRpx516sUAZobTzAynGf0q63mC9QmieJIozN7zfSNsYr1/iXW7G7u67nAhXAQ94GLw QE+YyzN3wl1wN9wD7CDRugmtm9C6Ca2b0LoJrZvQugmtm9C6Ca2b0LoJrZvQugmtm9C6Ca2b0LpJ 3IPW1WhdTY9VeqwyCiKMggijIMIoiJj6nxkB6P6jzGcHbzX+svHvs70aP6rxoxo/qvGjGj+q8aMa P6rxoxo/qvGjGj+q8aMaP6rxoxo/qvGjGj+q8aMaP6rxoxo/qvGjGj+q8aMaBVUUVFFQRUEVBVUU VFFQRUGV0RBhNEQYDRFGQ4TREGE0RBgNEUZDhNEQYTREGA0RRkOE0RBhNEQYDRFGQ+RnjIYIDkVw KIJDERyK4FAEhyI4FMGhCA5FcCiCQxEciuBQBIciOBTBoQgORXAogkMRHIrgUASHIuYaX2f+V8gr 8ErFK5XZRmW2CaG9ivaGxioaq2isorGKxioaq2isorGKxioaq2isorGKxioaq2isorGKxioaq2is orGKxioaq2isorGKxkaMKjGqxKgSo0qMKjGqxKgSo0qMKjGqxKgSo0qMKjGqxKgSo+oycmEpLIPl QL4Ro0qMqmjHXKydO2bItCfMka4zp+r/aYywd1/GHpU3U0abm9FmZ7RVMNI6MdISRFrrjLKU1TgL VvNevpbfekzWkdl1PB1lbNaxOjdSazAK6yjc2GbXVEd215HddWR3HdldR3bX/S/NNnVkXx3ZV0f2 1ZF9dWRfHdlXR/bV/X/dFRlvK1GU+rL1vaVRKLFrUVz6XsxA2wK0LcC/GvyrQVvjzaYMJ+LQN4y+ YXP+W8/5Bt4RXmCntIlrL8kwuobRNYyuYXQNo2sYXcPoWoCuBehagK4F6FqArgXoWoCuBehagK4F 6FqArgXoWoCuBehagK4F6FqArgXoWoCuBehagK4F6FqArgXoWkBO1ZBTNeRUDTlVQ07VkFM15FQN OVWD7mF0D6N7GN3D6B5G9zC6h9E9jO5hdA+jexjdw+geRvcwuofRPYzuYXQPo3sY3cPoHkb3MLqH 0T3sMuJcCstgOWTCClgpw6bG38VGQlR0sH4gOls/Y8e5i7z8XGZbv5TbrKfYZ2hyvfU7WagwcyqX 8vY6RL6njJCh1n+tPFO0U34p3LF/U1jtDsoDOLaFdnfALkbA57LImkemfwFf8pv5HPfKoPUAb7pF /FqAYzFUi3jrCUaqxh5XZyfUBM2yXhHyqOIAJ6Ty9j9EVimXyVPKMBgOl0tdGS0r3RlSdd8p97vv BeYI9+84LpBB90JgTnCv4pjFcTWwh3bnACum+ylgVLrXc/95rjH3uV/kfBO8Shtb5HfuP9L+e/C+ POX+M+zkmo/zjzgSk7uQawfhEJRwXgpBvh+GozxXI4+6T0GTPJrYUdYmdoLOwNthIm+Hib25Pk/u T2RPn0i/Eh+RjYlPyVOJL8BL8JasFZNjqpbhUxRVS1C1BlVrUPU0qh5D1VJULUHVU6hagqolqKmj ZgNqNqBkA0o2oGQDKn6HihoqaqiooWANCpahYAkKlqBgGQqWoGApCpaiYBkKlp6nYBkK1qBgDQrW oGApCpahYBkK1qBgDQqWoF4N6tWgnoZ6GsrVoJiGYhqKaSiloZSGUjUo1YBSDSjVgFINKNWAUg0o 1YBSDSjVgFIlMaXKUKoGpTSU0lBKQ6kG0dO6Xa6yfiDfRyk/Ofg9Cm1FlW+tR+Td5NlS6wn5Otk9 09rITvs7OZY8260oMk+xy6cVt5xPtgeUjtKj9BB3KX3kEjK/pzJYXoNqb5H915Nzryhj5Wrlanlr 7F9nlSu/lG8os+Q8xSv/bvz7JaL6mDnpM1aJz+FL+U9+8Th+HOEXQ/zCCVqto8VKWjzJWBrNWBrD G+F2HPtMHqSWMV72mWOkWlxE7UPU3EPNY/QtRN9ctFBkjocRsoian8k91DpOrQ+p0YEaFfxeuTl+ eas2x3APxumlnA+RR6h1lF7miQvJrFNmzTwy6wvIJ2P2UvsAWVXELjLAsVgeIzuOkR3HyIxjZEYF mVFBVlSQFafIilNkxSkyIkpGRMmIKBlRQSZEyYQomXAM547h3ClcM2b+apFEf+z0fAu/t53f/Rux fgT5shldD6NnyJ0pddpvoP0G2m9wv8T5a1KnnQZho1YjPV9EjUoj79kJb2cu+YBYPpeFXA1aDzKP GBoekRF0O0i7JbRbImbxq+t5OpsxVWVmy99kFr+eRc16lGhGiWZaqEIJiRKNsXHViBKN1lK5gxZ9 ZFKhVSV7EqCjvFPpjBtdIAV6ycVKb+gjv1X64XN/uBT30F0Zx/2rzX+7fBm9uYyxV4W6jajbyNir QuFGFJYoLBl7VaiQhdISJdajxHqUWM/4q0LtZtRuRu1m1JaMvyrGXxWqN6N6M2ploXwjimW5/8RM tAM+kYvdeRz3wX44AN9AGfyTe+UcK2ijUi5OFHJ3YpzckWiH/yHuzsOjLs/9j3+TmcwkkwkoIgha FUXcuqi1tmItXai1p2prW3usVmtPbT1QaEVBC4hAF23rvoIiVStF1CpUal0Ad6vWBhIywDAJNLIn hG8IBMKa5/eaMT0/298517nOcl2/P97Xd77bs9zP/dz3554LJmkMcj4EI0WoqeE2e3Ct1dxTc29Y UzMN03E/ZoanomoeuY03rrHSHxV99os++0Wf/Vb943b6fjt9v52+367eHx1mPYpruZPtt7L9Vm+l xKgOMapDjOow905z7zT3TvPeat5bzXuruW41163iS4f40iG2dIgtHWJLB//uEFs6jLXTOLeKFR1i RYdY0VGW0eNUHnCv1X/Z6t9p9e8sX2RFX8Qr4c3y12XFN/BmeIQX7C1f6nqOb+XDuPKVYWF5AY1o wiqsDjeW/9VxDdZqc53jemzEpmgqb5lf3urzZrTxvC2OMdrD1eVb0eHzNmwPI8SmOpE7L3Ln7eBv iFGLy/e6tw/7w6LybscgC5ehHMX4leRtFT6nxKlMmJKo9jkbRpfiWW/HA3Ag+qBvOIO3ns1bz+at Z8utNyQGhmsTh7p3GI6IvpkY5HgUjhbzBuOY8K3EEOfH4jjnx+MEnz+ID4XPiZHfEVmetGpTrdpU qzaVt58rXt6SOM0zH8cnwk8SpzsOxRlhcuKTjmfiU+ESu+LsxKd9/ky4ys74Rs+/mH3SDrk2cVF0 SOJSjAhLxNffZUeEuuxIXBn22iV77ZA77ZC9vGQqL5nKS6Zmp7r/E/wCv8SvcHPUL3sLbsVtnr/H tXsxzfl03KedGc5/7fhgGJ19GI9gVrgh+9twrWw2Ofu48yfwOzwZzrKrzpLhJvPAqTxwKn1wgyw3 OfuH8JPsM/ij5553bYHnFvq8CC+6/rrzN11/S7t/du0d/MW1WixGnbbqsRQNnl/h2TxWuleA6M27 p9q1Z2VXh4V27lmy6GS792y796zsWtf4YJYPZjeAH2Y3oSW8nOWHWX6YbQMfzLZjKzpEgG3Y6fOu sCi7G3t83g8+l+VzosKUGn5Xw+9qEmFRTdKxIowTJcaJEuNqKp1XiR4Z8MGabHi5pga9fO6NA1w/ EH1wkOt9Q16mz8v0+Zr+2jvEMwMwEIfiMHzAs0e4fyQG6f8o10RY0WhKzeRQZ4dPrbkx6ldjrWus dY21rrkJN+MW9+4K19r5U0Wqs0Sqs0Sqs0SBqaLVWTUztDPTuB/U5iPan+X8t5iNR8PV0SBR4ipR 4velzPxqKZ+/IRJstONvs7MvsbOfsWvn2rVvy7k77NiX7Ni1dmW93fhnu3CRXdhg133ezrrUTppr x9xix7xhx2y0S+6xSxrsghd5/295/5d5/8u8v/g/FU7j8UuifxGvHjOS38lYS8vnylLPiAnPufY8 XpXnXnPv9bBc9Fwuc70sZm2RuZ6RA7cYbYvs9Yzs9Yz4NcvI3xCnWox8sVj0ulHnxZs14s0aI98o XueMvF3MzonZOfHkdaN/Uix4Uix40ij3GuVXi5pH9lqa/Y5I+73wjAz2jAy2VAZ7xt7cYm9ukcGW 2p+P2Z9b7M/H7M/H7M/HZLCl2Z957+e4CTeH5aL6clF9ub25RTZbKpstFeGXi/DL7c3HZLNn7M3H 7KUn+f2T/PxJPt0in+Tkkxy/bZFTcny1hZ++zi9n8ctZ/HIWX2zha2v42hq+toZvtfCtFn61hl+t 4Vevy0U5PvW6DPcMn3pMhlsqcyznH7P4Rwv/WENBLuIHL+IVCu3N8BxLr5Md6vnCZ0XzJtG8iT+8 w6rNrFrHqnV84lmRezXLviVSN7HsWyz7Ft/YzDc2iMYNonGDaNzARz7IR7pE2YIoW+ArK/nJepG1 VmStFVlr+cwy0XSlKJoXORtExHoRsZ7V17H6OtZeJwLWi4D1ImC9CFgvAtaz7DpRr17Uqxfp6kW0 vChWEMUKolheFKsVxWpFsLwItlIEWylarRStCqJTQXQqiE4F0alWdKoVnWpFp5WiUkFUKvREpVrR qCAa5UWjBqvzlsjSJLI0WaW3rNBbostq0WW1CLJatGgSLZpEhiaRoUlkaLJSdVaqzkrViQqrRYAm K1Vnpers/CYr9ZadX2/H19vx9XZ8vR1fb8fX2/G1dnut3V6w2wt2e8Fur7XbC3Z7k1Wss8ub7PIm u7zJLm9SE2+ijou6+tSwL/qYXVass35gR023o6bbUa9a5yl2zW7rOtu6zreu8+2WVuu61ro+ZU2f sqZP2RG77IJd1mKKtZhiB+yyHlN4/C5ePp2XT+fl063FFF6+i5fv4uXTefl03rybvZ5ip6d48262 eoqt1rLVWl69m73W8uTd7DOffeazz3z2Wcubd/Pm3Ww0n43ms89TvHcX753Oc3eb83xzfC3cwmO7 zGCRs+3GviM8zjdXRwPNbLuz9WbWYmYtZrbVrGrFgVYzqzWzWqPbbnS1RldrdNuNrtaothvRdiNq MaIWI2oxmu1Gs91oWoymxWhqjaJYy7ZER+hph55W6mm9ntbraRMbFmvUOr116q1Ob3V626G3Or3V 6W2H3urYYhtbbNPrDrbYpucdel6v5/V6Xs8W2/S+Q+879L5e7+v1Xqf3Yn24Xo2wWrzcHpaY9RI9 d+qxSSx7XsRdIeIW64NnSxE35anOnhqqtef/MH0kcWF0Sslyze40udNcOivWdntLdqzoeWubszbt L9d+BzWcp2nbWHiPeWZYIkIFTZpCGoOcD8HMsFUbq0srU+/pRlmkOMbOaIg23nDnOfbbpq0XPLHh b/V9Kd9E4ksalciEF8zqfLP5LjtuY8fV7LiaHYv19Wr222YMLxjDG8bwhjG8wZZ/X3cfisPeV38P 8vxge3GI40zPP+haseYuM+c46m98HcbUYUybjWlzzzc47UbfYlztxtVuHO3G0W4M7fru0HeHvjv0 u1m/m/W7WX+b9bdZX+366dDH5miw1heY/Z/M/K33RdkcOz+pp52lqJop/UuRn/es5UqzH1H8Fz1/ iz5m/JZeF+h1gV4X/LuRpxhpBnmuGGWGOBYjxkzP/mPEqCpl0e10wG61dcq6XhCu7PnXHUv0/M3S vxg9xbhXe/JZq1arLlhu/C+x0tz3RZBiZsiz1ExrXcy7G1hrJmvNNJ+XtHqT1p6yirW023IWnMmC M61kLSvOtCPydkTeitaa30t2Rd4cV5vjanNcbVVrabDlNNhyemv5P0SOvFWutcq1/xY5BmljcJhp 7i+Z92qrXFuKHoeyeiOrN5a+jdghiuwOrxn1FpZvNOItRlz8DmcLazeydqNRbjHCLazcyMqNrNzI yo2s3MjKjSzcqKctLNzIuo2s28i6jazbaFftEHX3yH68h4ftCC9F5bLgHkppd5SgRt501uFsYzTI WayG2UWfxPRJLFN2yZRdMmVXz3eErTTLVjp+l4zXKtO1ynRdMl0Xvb5Ltmul0XfRFTFNvkt265Ld umS3Lrp7F929S2brktm66I5YZmulPWKZpkum6ZJduqIquXy3kTwgd8dydlHXbdBrbAUfsYKPlKJK lWzfmegrknwotJlBi6faEh+Leoswap7oZP3ko6R21mmn+J3rruIMzDhb+gahtfg8S/S1nz4Wdrle /FbWE95bEx3srDj7TrPvNPvO0swvohUuDcveN/NOM+8szbrOsR5L0YgmmJ2ZdZpZp5l1RkfqbTH7 7mDfFey74v2Vub7b9LKebXfoYb0e1v9bNf506Ru/9Wy7g21XsO2Ov6vQVzjPl74FLFXqbLtC7+vZ dsX7q/WozMx3RIMTNT71DQ9SSzG1FFNLsTH90Zj+yFo7KKYWiqn47doWdtpMGcVWYJ8VeMIKPKGO 7KOOLP7ryKLqaaF6Wozrj9RNC3XTQt20UDct1EwLNdNiPH+kZFqomNiY/khRtFAULRRFCzXREqWN 5vd63q7HXXrcrrfdentHb+9ER7v7LrttNMaVxrjSkzt7vsP+vyv0McruDH79GXaYFTay4R423PNv q/S0a/OdP++4gNJ60/H9q7bCeR5/W71Vnmn2/Jqw8u9WsR+rNbNaM6s1s1QzSzUb9197vpNqZpFm FmlmjWbWaGaNZtZoZo1m1mhmiWaWaGaFZlZoZoVmVmiOBprnKnNcZY6rzLHdHHPm2GCODebYQKkW va7BfBqoylaqstVcVlGWRQ9sMJcGc2mgJFvNo8E8GsxjlTmsMocGc2gwh4bS/6I8OvHt6OhoenR5 uC/6Hr6Pq8ND0YRwRzQR12ESrsfaMD1ah/XY5pnd4fZoD/ZiH/aH28uOC3Vlx+MEnIgP4kP4MD6C k3AyTsFHcSo+htPwcXwCp2MozsAncSY+hWH4ND6Dz+JzGI7P4yx8AWfji/gnfAnn4Fychy9jRNS/ 7OXwUtkr4dmyV/EaXscbeDMsKnsLb+PPeCcsSj4Y7kg+hIdR63wxlsBck90I4faKA8J9FX3C9Aoq u4LKrqCyK/rjEAxAc7ijos0zW7A13JE6HqdhVLgvNRo/xI8wLjyUugbsnrot1KXqwqKUiic9JCxK H4vjwrPp43EKPur8k7goTE9fjEvD7elpmIVm5+9iDaxZuiU8lG5Fu3udzneG2yvLQ11lAklUIAVK sZJSrKxCBtXIoga90BsH4ED0wUE4PSyqHIpv+/x9xymOjzrOCc9W7gh1VdqqOog+viTqExZHB0H0 iw5GP/THsTgOx+MEnIgv4Ryci/PwZXwF5+Or+Bq+gW/i8vAAz32A5z7Ac6+PxoaZ0Thcg2vxY0wI c3jzHN48hzfP4c1zkr8Ki5M34WbcgltxG27HHbgTd+Fu3IN78aD3HsLDYY5Vf6BiRVhc0YRV+Cua Xd/guBFt7m/BVtf2h8WpFNKoQgaHYACOwRCwQ4odeMec1KmOpzme4fgFXIJL8W1chlHhAZ7zAM95 gOc8wHOu5znXp8w3Zb48aE7lj4q2ie4IddGduAt34x7ci9l4FHPwGB7Hn/EO/oJaLMYS1KEeS9GA HJYhj7XhaTHhaTHhaTHh7Wg7OrEDO9GF3WGuODFXnJgrTswVJ+YmN4W6ZAtasRltUJ0kY7RjKzqw DSqWZCeK73UjhLn229NpsSBt76ft9bS9nrbP0+eFt9Nfd7wAF3nmYlwa5qZ/4HwsxuFa/BjX4Qbc CPstzUZpNkqzUZqN7Ke56d84znKc67gA7JBmhzQ7pNnBXnvaXnvaXnvaXnvaXnvbXns7vRltaPdu p+vsYd/NLftwlIwOjCqQQhqVqELx17urkS3+xCR6YWjULzoDl4eJfHwiH5/Ix8fx8ZF8fCQfH8nH R/LxkdF4LUwIo/n5aH4+mp+P5uejo59GvaOf4ee4ATfiF/glfoWbcDOejw6PXsDaMMGKTrCiE6zo 3VZ0jhWdY0XnWNE5VnROVPwF6d1hklWdZFUnWdVJVnVS2f1hWdkMPIBf40E8hIfxGzyCWfgtZuNR zMFjeBxP4Hd4Ek9hLubh93ga8/GHsKz8pKh3+clRv/JTHYfh7DCx/Ivh6vIv4XznI8LU8pFhVPkP MCqMotm+lLg4jKXbvpT4tuPY8OfEuFCfqIsqEvVR30QD1btMVb48yiTWhjmJdbTI+ui4xAbHjcXf BnLcHPVJjo0OTI7DNbgWP8Z4TMBEXIdJuB6T8WAYLV6MFi9GJ5dGvZMNyGEZlmMF8liJAhrRhFVg T94+ibdPEmsmVhwYlvH6CWLM6IrNUUZ8mSi+TBRfRlfsjQ5MJcC3Un1wEI7G8WF06gTHk/HRqJ+Y Mjr1cZ9HhYnix0TxY6L4MVH8GCd+jBM/RoofI1N8KTUBfCl1X1iWur/0P+iXpT+Aw3EEjsTJOC/M sdMm2GkT7LRJ6TFR7/RVmIKpuAPTXH/Q8eHocLtpUvoJn5s9/y7WgM/ZOXfbOXfbOXPsnDnpLVFV Oka75zvd53920KR0V9S7sm9YVnkw+qE/DsEADMShOAzGWmmslcZaaayVg3AUjsZgHIPvautyfA+T nF+PyWFZVVlYlrkwXJ25CJPCqMxk2DcZ+yZj32Tsm4x9k7FvMrfgVtyG22G+mTtxF+7GPbgX0zAd 9+F+zMADmIlfg30yD+Fh/AaPYFbUu3oirsMkXI/JYNtqtq3+Cezvavu72v6utr+rjbPaOKuNs9o4 q42z2jirjbPaOKuNs9o4q42x2hirjbHaGKuNsdoYq42x2hizJ0a9e1Uhg+riXzVJLLFT1opGxU/F 3x7pX36taJYt/XWBFNKoRPGvKGZQjWzpF+yzolmWAihQAAUKoEABFCiAAgVQoAAKFECBAihQAAUK oCDyHSTyHUQJtFICrZRAKyXQSgm0UgKtlEArJdBKCbRSAq2UQKsoeYUoeYUoeUX0ryGORmAkfoBR GI0f4ke4EmNwFa4OI0TUK0XUK0XUK0XUK0XUK0XT4aLpcNF0uGg6XDQdLppmRNOMaJoRTTOiaUY0 zYimGdE0I5pmRNOMvNsk7zbJu03ybpO82yTvNsm7TVHx+445eAyP4/logMg7QP6N5d9Y/o3l31j+ jeXfWP6N5d9Y/o3l31j+jeXfWP6NResxovUY0XpMtFEtuwktaMVmtGELYrRjKzqwLUwT2WeL7LNF 9tki+2yRfbaoPl5UHy+qjxfVx4vq42n6PE2fp+nzNH2eps/T9HmaPk/T52n6PE2fp+nzNH2eps/T 9HmaPk/T52n6PE2fp+nzNH2eps/T9HmaPk/T52n6PE2fp+nzNH2eps/T9HmaPk/T52n6PE2fp+nz NH2eps/T9HmaPk/T58u+EvUrOx9fxdfwddwfcjJRTibKyUQ5mSgnE+VkopxMlJOJcjJRTibKyUQ5 mSgnE+VkopxMlJOJcjJRTibKyUQ5mSgnE+VkopxMlJOJcjJRTi0xXy2xUC2xUC2xUC2xUC2xUC0x Xy0xXy0xXy0xXy0xv+wvUaasFouxJMrIYllZLCuLZcuHFv+PquPnHM8Ok2Wz82Sz80rZ7OLQVn45 Rshu78tq5aNDm8x2psw2UmY7U2YbqRa/LXF1eDKxILyaeDHqlXhF9luinq9XpzdE/WW5VlkukVih vn8v01XIdINLvzHZ6vpmmWdslJXlsrJcVpbLynJZWS4ry2Vluawsl5XlsrJcVpbLUtKtlHQrJd1K SbdS0q2UdCsl3UpJt1LSrZR0KyXdSkm3UtKtyWkhTk7HfbgfM/AAZuLXeDAMlzmHy5zD1V3z1V3z 1V3zZdGMLJqRRTOyaEYWzciiGVk0I4tmZNGMLJqRRTOyaIbOjOnMmM6M6cyYzozpzJjOjOnMmM6M 6cyYzozpzJjOjJM7QltyJ7qwC7uxB3uxD/aEzDxeZh4vM18hM+dk5jHqv7z6L6/+y6v/8uq/vPov r0ooqBIKqoRWVUJBBh9esS7EKoWCSqEgk18hk19RYUwVxiSjD5fRs6qGQkW38xDiVIQylCMRZWX6 rIqioKIoqCgKKoqCzJ+V+bMqi4LKopA6zLMfwNGuHeN8CMRaVUaBMhhOGWRTJ7nPB6mDg1QdBQph OIWQVXkUVB4FlUdB5VFQeRRUHgXK4QrK4QrK4QrK4YqUOJoSR1PiaOpqjMW4MIKaGEFNXElNXElF DFfP5imJHCWRS/269ItM/VLz8IfSrzL1S73hWBfmUxm5lLVU9+ZTXVE/iiNHceQojhzFkVMLz1cL z1cLL1QLL6RAcurhherh+ekzooyaeL66IFYXxOqCWF0QqwuaqJTZ6oJYXRBTK2OolTHpb4W29CW4 NIxXH8TpUT7bU+kf4ke4EmO0eRXMS+3QpHaI1Q6x2iGmcDIUTkYNEash4vSvPH9T6VcFY6ono56I 1ROxeiJWT8RU0HgqKEMFDVBXxJTQeEooo7aI1Rax2iJWW8Rqi1htEVNIYyikMRTSGAppTHqdttdj A8T6tFhPNU2jmqZRTbOpptnU0nhqaQy1NJtaGk8tZdT6ebV+Xq2fV+vn1fp5tX5erZ9X6+fV+nm1 fl6tn1fr59X6ebV+Xq2fV+vn1fp5tX6e6spRXTmqK0d15aiuHNWVo7pyVFeO6spRXTmqK0d15aiu HNWVo7pyVFeO6spRXbnKU4zpozg9zK8cim9r+7vOL8f38H3XrnD8V4zASPwotFJoOQotR6HlKqd4 5zbXH/XsnLCw8jGfH8eOkK+Kon4UXK7K3KoOCvOrDo4yma+FtZmv4xu4MJxH2Z2X+ZbPPw5tmfGY iL8pvak+/xw3RlmKL0vxZSm+LMWXpfiyFF+W4stSfFmKL0vxZSm+LMWXpfiyFF+W4stSfFmKL0vx ZSm+LMWXpfiyFF+W4stSfFmKL0vxZSm+LMWXpfiy/x8VX/bvFN/B0a3hk2WXRueWXRZ9rew70Y/L /iX6fNl3o0+WXR79c/nZ0YXlI6JvJC4In01cGD6TeCHMTrwYzk2sCW/Thn0TIlxiQ7gjsSm8mWiJ Dk20qrc2h53REdGt3a9FT4Sl0ethqdY/1fNrsKdp/UStn6j1T5eNCDvl1vV6Uc2pyi4IQ/Vypl7G JRaGBYlFeLG7LfFyeEaOW5F4NbyReC3cqvef6XlXYn3YqPeher9N7wm9/1rvr0WVicVhVqLOmFTy iaXhu4mG8Hwi563loVFWXEWnPhH+ZGx/8uQ35c7Fnp7m6YmJpd3dnn7Y01+UR5/xxrXeuL/0244f MdpJsvkHZO8vlp8rk48II8p/GCXKH6eTXwv/Uv5mmF6+OvpY+Q4ZuW/UO/GR8NvEwigrS3/EDH6v pzeLf6k8sVStuSz8QZau0Hq3GeVk6ok9mTrRU5MmzGxjosWsWl3fHLaU/XOUDM9HFUghjUpUIYNq ZFGDXugdFkQHYGhojM7AT8O86Gf4OW7AjfgFfolf4SbcjFvZ8PlQH70Q6svKQ2NZAklUIIU0KlGF DKpRgwNwIPrgIPTFweiH/jgEA3A4jsCRGISjcDQG4xgMwbH4SlhVdj6+iq/h65iE6zEZUzAVP8FP 8TP8HDfgRvwCt4eVZXfgTtyFu3EP7sW0sLL8pDCv/FQMw/nhufJfhkL5r0KBl19gVdr42T4+Ns9K tPGxL/OxfYmd3ZsSXXbErpBO7O7uSuzpbkzsDanEvu6Nif1hWKLb9RAGJCu6NyVT4bPJdEgnK7u7 klXdjclMSCWruzcms2FYssb1Xp4bG55PjsM1uBY/xnhMwERch0m4HpPxm9CYfASz8FvMxqOYg8fw OJ7A7/AknsJczMPv8TTm4w94Bs+FVcnn8QIWYCEW4UW8hJfxCl7Fa3gdS8O8ZANyWIblWIE8VqKA RjRhVZhXsTc8n0qA/6YqwoJUH8eDcDROwMn4aGhMfdzx5rAqdS+mOzfP1G99Np+U+aTMJ2U+qbmu zcPTmI9n8bzrL2ABFsLYU8ae+rPP7+AvPtdiMZZgOVaElamCexuxGR3Yhu3oxA50hVXpXuiNA3Ag Dgkr0wMwEIfiMJwaGtMfx5gwL30VpmAq7sCDeDjUp59w7ArzKo8NqypPDI2VH3Y8yfE8fNnnb4aV ld91/3J8D790fbrr9+F+zMAT2BtWVkVhVdWBjvZXlX1VNRCHhcbMd0MhMxKj8ENcibGw3zP2e8Z+ z9jvGfs9Y79nbsGtuA23w3gzd+Iu3I17cC+mYTruw/2YgQcwE7+GOWYewsP4DR7BrDCv+p9CofpL OAfn4jx8GV/B+ZgYnqu+DpNwPSZjCqbiJ/gpfoaf4wbciF/gl/gVbsLNuAW34jbcjjtxF+7GPbgX 0zAd94XnsieGeb2qwnO9MqgOz0VJuWKeyN+aWBZ9WFzeF90TTQgzoom4DpNwPXaHgvq5oH4uqJ8L 6ueC+jlWP8fq51j9HKufY/VzrH6O1c+x+jlWP8fq51j9HKufY/VzrH6O1c+x+jlWP8fq51j9HKuf Y/VzrH6O1c+x+jlWP8fq51j9HKufY/VzrH6O1c+x+jlWP8fq51j9HKufY/VzrH6O1c9x8Ve4yv5k nG+GNjVrm5q1Tc3apmZtU4dOV4dOV3c2qDsb1J0N5bPCptK/j3zvXx29W94V3pXN8rLYjMSS6Aj5 slkGu1kNN0MNN0MNN0MN16aGa1PDFeungvqpoH4qqJliNVOsZorVTLGaKVYzxWqkGeqgGeqUGWqS GWqIGWqIWI3QpjaI1QFt6oC29AmhkD6x9HucbbR/UcsX6OwCbV2ghQs0cIH+jenfmP6N6d+Y/o3p 35j+jenfmP6N6d+Y/o3p35j+jenfmP6N6d+Y/o3p35hebaNX2+jVmEZtqxyn7Sk+P1r81bQQ05sx vdlW1dd+ujBMpzGn05QNNGVDdlLYlL0ek8Ommr7h3ZqD0Q9H4EhMdf2R8G5ULqv8Tl6n4xIvRKcn FkSXJF6KTk28HB3Cvs8mXqWkXouOTSyOzmPr89T1FRTDp9T2fRK56BR2/yvlcDids8bVtdEJ9MJ5 9MKQxKboLO2+2vNd9ol6eiU84fm7Sn3Oc28kVbEg6uXa286WFH+X8v/9Ld2yEdGwf//3dI3nZLvj k3o9Rz78ojG8d+Vk2bLL1c/Klgtky9bSbxRvLv41SlcPc/ap0neK/T17jDEU/xbBhuhDnviwsyXR MDPs697h5lr81bcLQ21ibDTU+F9NnkmvlbvylrN3PC030YTtzlY5GxXVONvj7K3o2CgZDYsqkEIa lahCBtXIoga99HhBdHDiIhrvUowypwV04Mt05iuhPjk2GpYch2twLX6M8ZiAibgOk3A9JkfD1PLD 1OzD1OzD1OjD1OjD1OTD1N/D1N7D1NvDSn//ooa67dTTKrPYkHjJShb/mskr4Y/U7WZzH8smLxjX Ik+ZrbnXRH3K6qKjy+qjk1jmUnb4XOIiT10cXZy4tPQbcxcnRoVXir9KlLgmrEncG52WmBZ9XD+x lT6GknkqeXp0SnJodBJrXRwd7o3D9XOq1RwbHamnLcX+Sz3V9PxdkzcT3/L2JZ6/zPE7jmN5WF1Y SSO30ce7S/6zPKr0ViJKFf8Siqf7ebKfJ6s8GXuiPeoXrRVFaahoPd10lZ6Ka3pNaKC726x6bxG3 vtRezgou85Y2i4q4ok/Yp4bfp4bfp0bep0bep0bep0bep/bdp88Lwqbi/3jS4gl2SrrU2rLQGfX/ uz6/JWZdhtHmNpYSXxI6jK7dPGIed7C+d3jrDf1W63fXf9pvtX7XFP82i9b66LdCizu02KbFTi1W aa2jZxb77LMLXC3+XuC3KPnLcJU7Y6MB3qwy4pQ3d3pznzdrjKW7aDVv7rUr1kZfiNZhPXbz7D3Y i33YLzpcoHK5MJyU+JZocUn07cRljt9xHK32ucp4rgmPJK7jF/dGnyj+1WwWr9Pj0NLaLA0zS73l wnJ7rq8qZ0+Pj5yS1HayGyE6tqJP9IX0RbgYl0bHpqdhFpqdv4s1MM50u2udjjuNrfj7j+1Gttuc dxvZCea928hOMO+B5l2MGJXmmzHXjYkV0QElr1vojVe9sc4bA72xzhsDvfEJTx9gzBtKnrc07DXu Xd5cV3orV/q7BBfp72KefKnjtx3HiYproqNEvHYxJiMyDhAZDxTvFpb+ok5x/QqeSrjSbh0u8OnC 0t4o/hpev8TVvOpa+W6DcW/SY0uIS/7W7L113stovVLL5e4UogHR5aEj+h6+j6ut/gXW8yLjuhTj eGbx6bW8ZANLbzSmFvVlq1Y2y5NnRv0rDggdFW3YEjpSozAaP8SPMA7XaLdXz98Eymu5oOVC4mqz Gifmr7GOa3nROjuoNFtxeBMbtYS/lGrx/sa31/j2Gt/entkXv1NerZXVWinXygnGeIBWurTSrZXi L81XauHd4t8jMr69xrfX+PYa317j22t8e41vb/Sh6PLonOh7+D4mRMOjibgOk3B9NFyPvfX4QTGr goXPF7MqWPl8MetRln6apRfx0zf56Rf56TmJx8Md5vSODDHkvdHIW8XRbKImTo+G8tGhyTNDPvlg NDz5EB6OhlccEJ1T0ezY5rgFW6PhqeNxGkZF56RG44f4EYrjqzSqnT1+U97jN+WltSpasCVsLH0b 8ZRxz+55ql/PU/2MO/bkKaVvIFpCA88Y1f2aWnCL2q9ZrbdFbdecPK57PV8b1R272u5Ke/K48Cmt jupendjJznu9vU9s2B8WJytCl7pwV7I6dHpysSfPKr37irv1rtS7kim9Gyf26G8vq+wPy9SY3cmq KOXdbk8tU0t2e3KYuDSqe4NeulWpnUbWltjtuFev+3jme2/u02u36rTTiNuSlY4Zo6h2/b2W9pnB Dl43Sl3bFZVppV0r3VoJWthU6jsVlXm73dvd3g7e3NQzhuOLduq+3RjWePtobzd6e2dijx1bHP0+ fryfx3XTCSHsN5Y1Wjtaa41a25msCrnSrKqtczY6QKXcquX9xvRkMYuGci3uMo5Vie6o3Fu79L0q WePzcWFQ8YnuJZ7YqL+ipQqe2KjNopUK2tjKuv+wXla/Z528/Z+sT+nZ0rp49j9ZD3P8H66DePpf tL8o879sd3P8D+xduvPv2jnqlewbVSUPNr5DokxyoNYO9c5hNMMHfD7cvSPcO8q9wc6PcW+Ie8fK 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 fCKfRBv5p/xT2sw/41NpC5/OZ9B2PovPop38Rz6bdvGf+M+0h8/lc2kfn8/n036hRUgHRLJIoUPW wxwZ52GOnIc5X5QX5ZlyHuYC51UuQdQWtVnovMolOq9yyc6rXIrzJ5cqmopmLE3cLlqwIvZbOZZu vb6xTOv1jZ3tTfKmsqbW6xu703p6Y/dYT2/sXj/ZL8Ra+Wl+Brvf+ntjD/uL/RWsvfX3xjpZf2+s s/X3xrpYf2/sKevvjT3r7/YPsp7Wxxt7wfp4Y0Osjzc20vp4Y6Osjzc2xvp4Y+Otjzc21fp4Y9Os jzf2k2wun2ULrHc3zqx3N+5Z727ct97duLLe3XggR8nRPNH6deMp1q8bT7V+3Xhx69eNl7N+3XhF OUsu5JWtRzd+vvXoxuvKtXIjr289uvFG1qMbv8Z6dOPXWo9u/AHr0Y0/Yb+P410CHnDeNZCB4k8F CUEC7x4kBcm8R5AWpPFngvQggz8blAhK8F5BmaAs7209rvE+1uMa72s9rvF+QfWgOh9g/a7xgdbv Gh9k/a7xl4KGQSM+xPpd4y9bv2t8uPW7xl+1ftf4SOt3jb8e3Bu04qOt3zX+RtAuaMfftt7X+Fjr fY2Ps97X+Pigd9CbTwj6Bn35u0G/oD9/z3pf4x9Y72v8Q+t9jX9qva/xKcGHwVT+WfBFMJd/G8wP FvDFwW/B73xpsCRYy1cE64OdfJP1ysb3Wq9sfF9gIozvt17Z+CHrlY0ftl7ZBItkREqK0PpjE6mR spFKIi1SJXK2KBapEakhSkVqRWqJ0pE6kXqiTKRB5CJRIXJJ5BJRNXJZ5ApxVuSqSGNRLXJNpImo Ebk5couoFXko0lbUiZaOlhf1rXc30ch6dxNXWm9t4irrrU08Yr21iSestzbRzXprE70Tbki4S4y3 X+2JKdZbm/haK50kfrB+2sQ83UzfJ7ZZP23iiPXT5nnWT5unrJ82L2r9tHkJ1k+bV9j6afOKWz9t Xgnrp80rbf20eVX0GD3eq2r9tHk1rZ82r6710+ZdaP20eQ2tnzavkfXT5l1p/bR511o/bd511k+b d4NeoVd6Ta2XNe8262XNa269rHl3Wi9r3n3Wy5r3oPWy5rVJ5ImB91CiTkz0HktMSUzzOljPat6T iXsT93pdkiiJeV2Js5VAvURYfEmUTIwKYReUgnHYo3SM3T5G9TOQXgG7oooYBQOqCpSMAA/rkQYe 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 jrROS6fKi9alhoSX9D8y+rG8Vf+8Fpk12yWb758rUbXOPptYtql60NYHY6PW7IR0/grXJmRrL7rm 3XbnGDrESHNqP/8klYSBPdS7JG1XQv8FUwT9Bg0KZW5kc3RyZWFtDQplbmRvYmoNCjQ2IDAgb2Jq DQo8PC9UeXBlL1hSZWYvU2l6ZSA0Ni9XWyAxIDQgMl0gL1Jvb3QgMSAwIFIvSW5mbyAyMSAwIFIv SURbPDIzOUQ2QkVGQzJEQjhCNENBQjQyQ0NBMDQ2RTkzMDkwPjwyMzlENkJFRkMyREI4QjRDQUI0 MkNDQTA0NkU5MzA5MD5dIC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDE2Mj4+DQpzdHJlYW0N CnicNdC/DsFQFAbwc6taRRulBonZLBHmUgZ9BYvFZrEzmr0B7yGewOoxRGsSWx3fxx3OL/fm/MsV 0VMURmMo8mVHLsDkoLEH4QA0e2QBWgGIHNDm43AJRisQ38B4CyZr8gJJRM5gapO3iKVLdKVKaqRO PPJL8bVg9vzfDLFIibjEITYpkwoJtMu8g+npAdyv4NEH2Qbk+BdzzMDJE/kA7bEa6w0KZW5kc3Ry ZWFtDQplbmRvYmoNCnhyZWYNCjAgNDcNCjAwMDAwMDAwMjIgNjU1MzUgZg0KMDAwMDAwMDAxNyAw MDAwMCBuDQowMDAwMDAwMTI1IDAwMDAwIG4NCjAwMDAwMDAxODggMDAwMDAgbg0KMDAwMDAwMDQ5 NSAwMDAwMCBuDQowMDAwMDA0MjI5IDAwMDAwIG4NCjAwMDAwMDQ0MDMgMDAwMDAgbg0KMDAwMDAw NDY0NiAwMDAwMCBuDQowMDAwMDA0Njk5IDAwMDAwIG4NCjAwMDAwMDQ4NzggMDAwMDAgbg0KMDAw MDAwNTEyNiAwMDAwMCBuDQowMDAwMDA1NDY3IDAwMDAwIG4NCjAwMDAwMTM2NjQgMDAwMDAgbg0K MDAwMDAxMzkyNSAwMDAwMCBuDQowMDAwMDE2NTk1IDAwMDAwIG4NCjAwMDAwMTY3NjQgMDAwMDAg bg0KMDAwMDAxNzAwNCAwMDAwMCBuDQowMDAwMDE3MTQyIDAwMDAwIG4NCjAwMDAwMTcxNzIgMDAw MDAgbg0KMDAwMDAxNzMzOCAwMDAwMCBuDQowMDAwMDE3NDEyIDAwMDAwIG4NCjAwMDAwMTc2NTYg MDAwMDAgbg0KMDAwMDAwMDAyMyA2NTUzNSBmDQowMDAwMDAwMDI0IDY1NTM1IGYNCjAwMDAwMDAw MjUgNjU1MzUgZg0KMDAwMDAwMDAyNiA2NTUzNSBmDQowMDAwMDAwMDI3IDY1NTM1IGYNCjAwMDAw MDAwMjggNjU1MzUgZg0KMDAwMDAwMDAyOSA2NTUzNSBmDQowMDAwMDAwMDMwIDY1NTM1IGYNCjAw MDAwMDAwMzEgNjU1MzUgZg0KMDAwMDAwMDAzMiA2NTUzNSBmDQowMDAwMDAwMDMzIDY1NTM1IGYN CjAwMDAwMDAwMzQgNjU1MzUgZg0KMDAwMDAwMDAzNSA2NTUzNSBmDQowMDAwMDAwMDM2IDY1NTM1 IGYNCjAwMDAwMDAwMzcgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDE4NzEzIDAw MDAwIG4NCjAwMDAwMTkwODcgMDAwMDAgbg0KMDAwMDA2MDM2MiAwMDAwMCBuDQowMDAwMDYwNzIw IDAwMDAwIG4NCjAwMDAwNjEwNDEgMDAwMDAgbg0KMDAwMDA2MTM3MiAwMDAwMCBuDQowMDAwMTA2 MjIyIDAwMDAwIG4NCjAwMDAxMDYyNDkgMDAwMDAgbg0KMDAwMDE4MzQxOCAwMDAwMCBuDQp0cmFp bGVyDQo8PC9TaXplIDQ3L1Jvb3QgMSAwIFIvSW5mbyAyMSAwIFIvSURbPDIzOUQ2QkVGQzJEQjhC NENBQjQyQ0NBMDQ2RTkzMDkwPjwyMzlENkJFRkMyREI4QjRDQUI0MkNDQTA0NkU5MzA5MD5dID4+ DQpzdGFydHhyZWYNCjE4Mzc4MQ0KJSVFT0YNCnhyZWYNCjAgMA0KdHJhaWxlcg0KPDwvU2l6ZSA0 Ny9Sb290IDEgMCBSL0luZm8gMjEgMCBSL0lEWzwyMzlENkJFRkMyREI4QjRDQUI0MkNDQTA0NkU5 MzA5MD48MjM5RDZCRUZDMkRCOEI0Q0FCNDJDQ0EwNDZFOTMwOTA+XSAvUHJldiAxODM3ODEvWFJl ZlN0bSAxODM0MTg+Pg0Kc3RhcnR4cmVmDQoxODQ4NzkNCiUlRU9G --===============0380801058==-- From brolley@redhat.com Mon Mar 10 10:17:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 53F0E7F3F for ; Mon, 10 Mar 2014 10:17:08 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3D686304039 for ; Mon, 10 Mar 2014 08:17:05 -0700 (PDT) X-ASG-Debug-ID: 1394464619-04cb6c5678403790001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id UvEaW4MpJButXPEU for ; Mon, 10 Mar 2014 08:17:00 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2AFGwtq006460 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 10 Mar 2014 11:16:59 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2AFGwrv029321; Mon, 10 Mar 2014 11:16:58 -0400 Message-ID: <531DD79E.1020006@redhat.com> Date: Mon, 10 Mar 2014 11:17:50 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> <913305437.21662865.1394094773997.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump In-Reply-To: <913305437.21662865.1394094773997.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394464619 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 03/06/2014 03:32 AM, Nathan Scott wrote: >> * For this case where the response is "Unable to connect: ... >> Connection refused", the loop should exit immediately. > That doesn't sound right - did you mean "Permission denied"? We expect > to get connection refused (i.e. pmlogger is not yet listening) for some > time, for pmlogger processes logging far-away hosts in particular. > > > At the end of the day, none of this is acceptable behaviour for someone > upgrading a perfectly working system of course. We can also expect that > some people will continue to use existing configuration files - we can't > assume any change there (via pmlogconf), it needs to Just Work (and it'd > be preferable to improve security for those folks with unchanged configs > too, but that may not be possible & that's fine). There are people who > generate or otherwise supply pmlogger config files of their own crafting > - e.g. predating pmlogconf - those environments need to continue working > after the upgrade. You were right, there was a bug lurking. When __pmConnectLogger() uses local:[path] to connect, it is supposed to try unix:[path] followed localhost. This was working ok for the case when connection via unix: could not be established. However when the connection was established but terminated due to insufficient access control permissions, __pmConnectLogger() did not go on to try connecting as "localhost". This caused a problem for installations using the old access controls disallow * : all; allow localhost : enquire; The first clause disallows unix:* and the allowed connection as "localhost" was never attempted. There was also a bug which caused "connection refused" to be returned in this situation. As a result, pmlogger_check looped in a futile attempt to make a connection that would never be accepted. Dave Dave From brolley@redhat.com Mon Mar 10 10:23:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EAECD7F3F for ; Mon, 10 Mar 2014 10:23:57 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 87DF5AC003 for ; Mon, 10 Mar 2014 08:23:57 -0700 (PDT) X-ASG-Debug-ID: 1394465033-04cbb054b6206350001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id TX8y6tN0rr18tcnw for ; Mon, 10 Mar 2014 08:23:53 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2AFNqKv023792 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 10 Mar 2014 11:23:53 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2AFNqZo030032 for ; Mon, 10 Mar 2014 11:23:52 -0400 Message-ID: <531DD93C.7070706@redhat.com> Date: Mon, 10 Mar 2014 11:24:44 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: PCP Updated: __pmConnectLogger fails to connect as "localhost" for local: when access for unix: is denied Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: PCP Updated: __pmConnectLogger fails to connect as "localhost" for local: when access for unix: is denied Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394465033 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On the brolley/dev branch of pcpfans ..... commit 5fb01b56fef929df01a9c005a85f1843aff6cc2c Author: Dave Brolley Date: Mon Mar 10 11:02:06 2014 -0400 Fix __pmConnectLogger() access control bug for the "local:[path]". When pmlc uses local:[path] is specified, __pmConnectLogger() should attempt connection as "unix:[path]" and, if this fails, it should try again as "localhost". This was working ok for the case when connection via unix: could not be established. However when the connection was established but terminated due to insufficient access control permissions, __pmConnectLogger() did not go on to try connecting as "localhost". Also, -ECONNREFUSED was being returned in this case instead of -EPERM. From pevans@redhat.com Mon Mar 10 11:32:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5D1567F3F for ; Mon, 10 Mar 2014 11:32:29 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id DE887AC005 for ; Mon, 10 Mar 2014 09:32:25 -0700 (PDT) X-ASG-Debug-ID: 1394469144-04cb6c56784098b0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id EOeSJPWUFvBkm0Wl for ; Mon, 10 Mar 2014 09:32:24 -0700 (PDT) X-Barracuda-Envelope-From: pevans@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2AGWNTM019761 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 10 Mar 2014 12:32:23 -0400 Received: from [10.36.6.187] (vpn1-6-187.ams2.redhat.com [10.36.6.187]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2AGWLx9017077; Mon, 10 Mar 2014 12:32:22 -0400 Message-ID: <531DE915.2010207@redhat.com> Date: Mon, 10 Mar 2014 16:32:21 +0000 From: Paul Evans User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130625 Thunderbird/17.0.7 MIME-Version: 1.0 To: Nathan Scott CC: PCP Mailing List Subject: pmdagfs2: Miscellaneous updates Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pmdagfs2: Miscellaneous updates Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394469144 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Changes committed to git://github.com/pauljevans/pcp.git dev src/pmdas/gfs2/help | 50 ++++++++++++++++++++++++-------------------- src/pmdas/gfs2/pmdagfs2.h | 2 +- src/pmdas/gfs2/worst_glock.c | 4 ---- 3 files changed, 28 insertions(+), 28 deletions(-) commit 4ea7be1e30b0dc2fce0008cb66caf68f89ff45b9 Author: Paul Evans Date: Mon Mar 10 16:21:36 2014 +0000 pmdagfs2: Miscellaneous updates Corrections and slight updates to the text contained in the help text for the PMDA. Spelling and Grammar issues corrected and expansion of the gfs2.tracepoints.rs.* help definitions. Removal of a small code formatting niggle in pmdagfs2.h Removal of log printing testing code from worst_glock.c that made it into the last release. Only a small update with a few small changes this time, let me know if there are any issues and as always feedback is welcome . Cheers, Paul From nscott@redhat.com Mon Mar 10 19:22:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 01D4F7F3F for ; Mon, 10 Mar 2014 19:22:45 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 92971AC001 for ; Mon, 10 Mar 2014 17:22:41 -0700 (PDT) X-ASG-Debug-ID: 1394497359-04bdf05dab44e590001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id onQEvu7xDzBAkAVe for ; Mon, 10 Mar 2014 17:22:39 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2B0MdBH018034 for ; Mon, 10 Mar 2014 20:22:39 -0400 Date: Mon, 10 Mar 2014 20:22:39 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <1356961210.24500231.1394497359439.JavaMail.zimbra@redhat.com> In-Reply-To: <1910237841.24495132.1394495119386.JavaMail.zimbra@redhat.com> Subject: pcp updates: getopts (wip) MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: getopts (wip) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: getopts (wip) Thread-Index: +FMQs/+9NCFK6JhnBMwDKMHuG0LHcQ== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394497359 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3775 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/nathans/pcp.git dev qa/728 | 4 qa/src/getoptions.c | 58 +- src/include/pcp/pmapi.h | 119 ++++-- src/libpcp/src/context.c | 4 src/libpcp/src/getopt.c | 182 +++++++-- src/pmclient/pmclient.c | 250 +++--------- src/pminfo/pminfo.c | 362 ++++++------------ src/pmprobe/pmprobe.c | 266 +++---------- src/pmstat/pmstat.c | 909 +++++++++++++++-------------------------------- src/pmstore/pmstore.c | 131 ++---- src/pmval/pmval.c | 725 +++++++++++++------------------------ 11 files changed, 1109 insertions(+), 1901 deletions(-) commit a43c17855a06f5126c476e199a36feb4542c7fc8 Author: Nathan Scott Date: Mon Mar 10 18:14:54 2014 +1100 Further common getopts work, converting several core client tools Added a flag into the pmOptions structure to indicate whether any custom namespace has been loaded (needed by pminfo). Duplicate namespace names option added also. Push the pminfo handling of a corrupt end-of-log into the common code, as all tools may as well make the most of a corrupt-looking log like it does. Conversion of several tools over to the pmGetOptions API: pminfo, pmprobe, pmstore, and pmval. commit ab862aba95b9b52f6e0e8846f5796384fc36384e Author: Nathan Scott Date: Sat Mar 8 20:31:24 2014 +1100 Further common getopts work, particularly allowing option overrides Several additions here: - Add -H as a standard option, and move the hostsfiles parsing and host list setup logic into libpcp - allow for client tools to override general options, via callback - make -H/-K/-L options available but not in the default option set - perform post-processing for env-only setups also (time windows) - add an override() function to pmOptions structure, which allows a client tool to intercept use of a general option if needed pmclient and pmstat are now converted over to the new world order. As a bonus, open-coded tv_sub in pmclient is replaced, and a bug in pmstat guimode handling is resolved (local: use was not setting up the timezone correctly, and sigsegv could result). Several coding style inconsistencies in pmstat also cleaned up. commit 9a1ebab3feeeab38adc66e5628c454bdb9cb3bb7 Author: Nathan Scott Date: Fri Mar 7 14:27:24 2014 +1100 Small naming improvements for pmGetOptions macros Split apart the all-encompassing macro into sub-option macros, since most tools will need to define a subset for use, not all. Flags now use PM_OPTFLAG-prefix convention for clarity. From nscott@redhat.com Mon Mar 10 22:16:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4B1567F50 for ; Mon, 10 Mar 2014 22:16:28 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id D2B9BAC003 for ; Mon, 10 Mar 2014 20:16:24 -0700 (PDT) X-ASG-Debug-ID: 1394507780-04cbb054b622d730001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id 9C5cqQkuoPEUzDKG for ; Mon, 10 Mar 2014 20:16:20 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2B3GJsp018564; Mon, 10 Mar 2014 23:16:19 -0400 Date: Mon, 10 Mar 2014 23:16:19 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Paul Evans Cc: PCP Mailing List Message-ID: <990210114.24588050.1394507779625.JavaMail.zimbra@redhat.com> In-Reply-To: <531DE915.2010207@redhat.com> References: <531DE915.2010207@redhat.com> Subject: Re: pmdagfs2: Miscellaneous updates MIME-Version: 1.0 X-ASG-Orig-Subj: Re: pmdagfs2: Miscellaneous updates Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pmdagfs2: Miscellaneous updates Thread-Index: 2msZIaJJUriMA+sr5SG4Un3k9GlMWg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394507780 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3778 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > Changes committed to git://github.com/pauljevans/pcp.git dev > [...] > Only a small update with a few small changes this time, let me know if > there are any issues and as always feedback is welcome . Looks good - I should've picked those diagnostics up on review, not sure how they snuck in. You might want to start updating copyright dates (year) too with each change - not now, but for future changes just keep an eye out to see if its up-to-date or not yet for the current year. Pretty soon it'll not be needed again till next Jan :) cheers. -- Nathan From nscott@redhat.com Tue Mar 11 01:12:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D4C2F7F3F for ; Tue, 11 Mar 2014 01:12:16 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id CE5588F8033 for ; Mon, 10 Mar 2014 23:12:13 -0700 (PDT) X-ASG-Debug-ID: 1394518332-04cb6c5677432db0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id KkO7Rscp5Wy1qHYp for ; Mon, 10 Mar 2014 23:12:12 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2B6CBWc006563 for ; Tue, 11 Mar 2014 02:12:11 -0400 Date: Tue, 11 Mar 2014 02:12:11 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <882033231.24615492.1394518331524.JavaMail.zimbra@redhat.com> In-Reply-To: <323789996.24595897.1394511709376.JavaMail.zimbra@redhat.com> Subject: pcp updates: pevans + scox merges MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: pevans + scox merges Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: pevans + scox merges Thread-Index: L8MP8yVK44nyUcHF3yXYyMIOQy609A== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394518332 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3780 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev man/man1/pcpintro.1 | 62 qa/751 | 52 qa/751.out | 136 qa/752 | 23 qa/752.out | 132 qa/group | 3 qa/src/.gitignore | 1 qa/src/GNUlocaldefs | 2 qa/src/rtimetest.c | 467 +- src/libpcp/src/.gitignore | 2 src/libpcp/src/GNUmakefile | 36 src/libpcp/src/check-statics | 26 src/libpcp/src/getdate.c | 7292 +++++++++++++++++++++---------------------- src/libpcp/src/getdate.h | 46 src/libpcp/src/getdate.y | 1814 +++++++++- src/libpcp/src/gettime.c | 98 src/libpcp/src/internal.h | 2 src/libpcp/src/rtime.c | 451 +- src/libpcp/src/setenv.h | 108 src/libpcp/src/timespec.h | 74 src/libpcp/src/xalloc.h | 542 +-- src/libpcp/src/xmalloc.c | 246 - src/pmdas/gfs2/help | 50 src/pmdas/gfs2/pmdagfs2.h | 2 src/pmdas/gfs2/worst_glock.c | 4 25 files changed, 6694 insertions(+), 4977 deletions(-) commit ee121b7fb4aaaaf4df95da0c3932706707b64e79 Author: Nathan Scott Date: Tue Mar 11 17:10:50 2014 +1100 Remake qa/752 output after test rename and forced TZ commit f322c1a8ef784be48bc76c9a7d56ecde84f463b3 Author: Nathan Scott Date: Tue Mar 11 14:42:33 2014 +1100 Cleanups to newly created rtimetest.c test code Remove the duplicate definition of __pmParseTime - we're already pulling that in via impl.h, no need for it here too. Use same function prototype style throughout. Added the generated rtimetest binary to the .gitignore. commit 7f153e573c04fe512e56c28acff1988c8f59fb8e Merge: 4ea7be1 08ccbcd Author: Nathan Scott Date: Tue Mar 11 14:04:03 2014 +1100 Merge branch 'scox/dev' of ../pcpfans into dev commit 08ccbcd173f52b6921a8fc335ded77770a1a0c64 Author: Nathan Scott Date: Tue Mar 11 13:45:36 2014 +1100 Post-review, pre-merge cleanups for glib getdate use Packaging builds fail (as mentioned in earlier review ;) with this: gmake[5]: *** No rule to make target `getdate.y', needed by `getdate.c'. Stop. This is because the source files are not correctly added into the build. Fix this, make the makefile match with pmie (as discussed), remove a no-longer-needed header, and make some cosmetic changes in the name of code consistency in rtime.c code. commit 4ea7be1e30b0dc2fce0008cb66caf68f89ff45b9 Author: Paul Evans Date: Mon Mar 10 16:21:36 2014 +0000 pmdagfs2: Miscellaneous updates Corrections and slight updates to the text contained in the help text for the PMDA. Spelling and Grammar issues corrected and expansion of the gfs2.tracepoints.rs.* help definitions. Removal of a small code formatting niggle in pmdagfs2.h Removal of log printing testing code from worst_glock.c that made it into the last release. commit dbe74ebf96d0372eb39ac3de5a937dc341d67b98 Author: Stan Cox Date: Mon Mar 3 20:53:41 2014 -0500 Use pcp time zone aware datetime functions. * get_date.y (get_date) Use __pmMktime instead of mktime. Cannot rely on gmtime_r, so wrap locking around gmtime * rtime.c (__pmParseTime): Free errMsg. commit 3327a62f64a357bf79cf4d1f73f8b4ba4eb7a579 Author: Stan Cox Date: Fri Feb 28 18:46:39 2014 -0500 Renamed from 751 commit f85e3808a4271e548e1cc29fc9e935d28e0a316f Author: Stan Cox Date: Fri Feb 28 18:45:34 2014 -0500 Renamed to qa/752 commit 1ba3f1fcc98964b2c60867503844206f933c5b8f Author: Stan Cox Date: Fri Feb 28 18:23:38 2014 -0500 Incorporate pcp coding style into extended date parser. * (gettime.c, xalloc.h, xmalloc.c, setenv.h): Remove * qa/src/rtimetest.c: Add pmParseTimeWindow tests. * get_date.y (get_tz) Remove TZ= parsing. (get_date): Likewise. * rtime.c (__pmParseTime): Formatting change. commit 9b27004ae9fd855667debdd843aaf64f8db3d3da Author: Stan Cox Date: Mon Feb 24 17:40:29 2014 -0500 Treat datetime terms referring to a specific date as absolute. * rtime.c (have_relative_date): Consider day specific formats to be absolute instead of relative. * pcpintro.1 (ctime): Add description of datetime strings to ctime description. * qa/751: Redact out current time references. * qa/src/rtimetest.c: Add new tests. commit 7ef03c90217b3672b40d8d4411b0eb5ec347af9f Author: Stan Cox Date: Tue Feb 18 15:27:36 2014 -0500 Add the gnulib get_date module to the pcp datetime parser. Add the gnulib get_date (getdate.y, gettime.c) module to pcplib/rtime.c::__pmParseTime. First try the existing mechanism. If that fails try get_date. xalloc.h, xmalloc.c, setenv.h, and timespec.h are used by the parser. The parser is defined in getdate.y. get_date, the public interface, is defined in gettime.c. From kenj@internode.on.net Tue Mar 11 03:22:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 58B287F3F for ; Tue, 11 Mar 2014 03:22:23 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 443308F8035 for ; Tue, 11 Mar 2014 01:22:19 -0700 (PDT) X-ASG-Debug-ID: 1394526133-04bdf076f018ad60001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id BdGPT22E189ppahZ for ; Tue, 11 Mar 2014 01:22:14 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApMBAH/GHlN20adJ/2dsb2JhbAANTYNBwgmBM4MZAQEBBDhAARALGAkWDwkDAgECAUUGDQEHAQG2SaIuF45cB4Q4AQOZd5Q8 Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 11 Mar 2014 18:52:13 +1030 Message-ID: <531EC7C8.3060109@internode.on.net> Date: Tue, 11 Mar 2014 19:22:32 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "Frank Ch. Eigler" CC: pcp@oss.sgi.com Subject: Re: pmmgr build failure on 32-bit Fedora release 20 [was 17] References: <53101471.4000200@internode.on.net> <5311157B.9010004@internode.on.net> <20140228231759.GA18123@redhat.com> <5316AD5C.3030408@internode.on.net> <20140305150207.GB27666@redhat.com> <5317BE58.6020603@internode.on.net> <20140306020106.GA6053@redhat.com> X-ASG-Orig-Subj: Re: pmmgr build failure on 32-bit Fedora release 20 [was 17] In-Reply-To: <20140306020106.GA6053@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1394526133 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3783 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On 06/03/14 13:01, Frank Ch. Eigler wrote: > > Thanks. For better or for worse, F17 has already lost upstream > support, as has F18 for that matter. F19 and F20 are supported > (and have libatomic, so the other build fix would kick in). > OK ... my build fails on 32-bit F20! I have libatomic by the looks of it ... kenj@vm23:~/src/pcp$ locate libatomic /usr/lib/libatomic.so.1 /usr/lib/libatomic.so.1.0.0 /usr/lib/gcc/i686-redhat-linux/4.8.2/libatomic.so But it is not included in the link kenj@vm23:~/src/pcp/pcp-3.9.1/src/pmmgr$ make g++ -fPIC -fno-strict-aliasing -D_GNU_SOURCE -fstack-protector-all -D_FORTIFY_SOURCE=2 -fPIE -Wall -O2 -g -DPCP_DEBUG -DPCP_VERSION=\"3.9.1\" -I../../src/include -I../../src/include/pcp -o pmmgr -Wl,-z,relro -Wall -L../../src/libpcp/src -L../../src/libpcp_pmda/src -rdynamic -pie -Wl,-z,relro -Wl,-z,now pmmgr.o -lpcp -lpthread pmmgr.o: In function `__exchange_and_add': /usr/include/c++/4.8.2/ext/atomicity.h:49: undefined reference to `__atomic_fetch_add_4' Adding -latomic to the line above lets the ld complete correctly. So this is a bog standard 32-bit F20 iso installed on a 64-bit AMD CPU machine. And ... kenj@vm23:~/src/pcp/pcp-3.9.1/src/pmmgr$ rpm --eval %_target_cpu i686 What now, Frank? From kenj@internode.on.net Tue Mar 11 04:07:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1FF747F3F for ; Tue, 11 Mar 2014 04:07:07 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id BAE51AC003 for ; Tue, 11 Mar 2014 02:07:06 -0700 (PDT) X-ASG-Debug-ID: 1394528821-04cbb054b623de40001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 7D9C0PKeoMsDXpzx for ; Tue, 11 Mar 2014 02:07:01 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApMBABnRHlN20adJ/2dsb2JhbAANTYNBw0CDWEAwDRYYAwIBAgFYBgIBAbZCojAXjnmEIgSuMw Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 11 Mar 2014 19:37:00 +1030 Message-ID: <531ED247.1030007@internode.on.net> Date: Tue, 11 Mar 2014 20:07:19 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - misc Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp updates - misc Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1394528821 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3784 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev debian/rules | 3 +++ qa/admin/check-vm | 2 +- qa/admin/pcp-daily | 4 ++-- src/pmie/examples/GNUmakefile | 8 ++++---- 4 files changed, 10 insertions(+), 7 deletions(-) commit 5ce8bf2f6e26dfb847a6235dbe9abb59c2a5a0cb Author: Ken McDonell Date: Tue Mar 11 20:05:53 2014 +1100 qa/admin/pcp-daily - add a few more VMs commit d53bdd281fe85f3a215f9c4353d85f7d316e75de Author: Ken McDonell Date: Tue Mar 11 20:03:42 2014 +1100 qa/admin/check-vm - devel rpm change for avahi Day zero mistake for rpm packaging only ... it is hiding in avahi-devl not libavahi-devel (the latter does not exist it appears). commit e3a1c8d8690086f49955bb44194b4d1b52c253f1 Author: Ken McDonell Date: Sat Mar 8 18:24:46 2014 +1100 pmie/examples/GNUmakefile - sed -i is not portable -i is not a supported option for sed(1) on my NetBSD QA system ... use the equivalent construct that has worked since 1975. commit 23f5aa2a419089ef62c989fa620942527e0c24c4 Author: Ken McDonell Date: Thu Mar 6 06:10:56 2014 +1100 Rule change for debian python build When building for multiple versions of Python, back-to-back "make installs" will fail, so add "make clean" after each "make install". From fche@redhat.com Tue Mar 11 07:05:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EE6D87F3F for ; Tue, 11 Mar 2014 07:05:14 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 806FEAC004 for ; Tue, 11 Mar 2014 05:05:11 -0700 (PDT) X-ASG-Debug-ID: 1394539507-04bdf05dac46e910001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id P1hpONOuCcB4E5bk for ; Tue, 11 Mar 2014 05:05:07 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2BC53H6018412 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Mar 2014 08:05:03 -0400 Received: from fche.csb (vpn-239-99.phx2.redhat.com [10.3.239.99]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2BC52dO028488; Tue, 11 Mar 2014 08:05:02 -0400 Received: by fche.csb (Postfix, from userid 2569) id 2F31F58165; Tue, 11 Mar 2014 08:05:02 -0400 (EDT) Date: Tue, 11 Mar 2014 08:05:02 -0400 From: "Frank Ch. Eigler" To: Ken McDonell Cc: pcp@oss.sgi.com Subject: Re: pmmgr build failure on 32-bit Fedora release 20 [was 17] Message-ID: <20140311120502.GA13756@redhat.com> X-ASG-Orig-Subj: Re: pmmgr build failure on 32-bit Fedora release 20 [was 17] References: <53101471.4000200@internode.on.net> <5311157B.9010004@internode.on.net> <20140228231759.GA18123@redhat.com> <5316AD5C.3030408@internode.on.net> <20140305150207.GB27666@redhat.com> <5317BE58.6020603@internode.on.net> <20140306020106.GA6053@redhat.com> <531EC7C8.3060109@internode.on.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <531EC7C8.3060109@internode.on.net> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394539507 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Ken - > OK ... my build fails on 32-bit F20! Ouch. > But [-latomic] is not included in the link > > kenj@vm23:~/src/pcp/pcp-3.9.1/src/pmmgr$ make > g++ -fPIC -fno-strict-aliasing -D_GNU_SOURCE -fstack-protector-all > -D_FORTIFY_SOURCE=2 -fPIE -Wall -O2 -g -DPCP_DEBUG > -DPCP_VERSION=\"3.9.1\" -I../../src/include -I../../src/include/pcp -o > pmmgr -Wl,-z,relro -Wall -L../../src/libpcp/src > -L../../src/libpcp_pmda/src -rdynamic -pie -Wl,-z,relro -Wl,-z,now > pmmgr.o -lpcp -lpthread > pmmgr.o: In function `__exchange_and_add': > /usr/include/c++/4.8.2/ext/atomicity.h:49: undefined reference to > `__atomic_fetch_add_4' Can you transcribe/look at the top level configure's output, and *atomic* parts in config.log, config.status, and src/include/build* ? Can you confirm that your pmmgr/GNUmakefile has LLDLIBS ... $(LIB_FOR_ATOMIC)? - FChE From kenj@internode.on.net Tue Mar 11 14:59:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 25E5D7F3F for ; Tue, 11 Mar 2014 14:59:18 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 267FD30406B for ; Tue, 11 Mar 2014 12:59:14 -0700 (PDT) X-ASG-Debug-ID: 1394567952-04cbb054b626b7a0001-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id YCTtIUO1FC5x6qQ8 for ; Tue, 11 Mar 2014 12:59:12 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhAcAApqH1N20adJPGdsb2JhbAANTYtYtn2DDIE4AwEBAQE4gloBAQEEOEABEAsYCRYPCQMCAQIBMRQGDQEHAQG3MqF0F45cB4Q4AQOuMw Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Mar 2014 06:29:11 +1030 Message-ID: <531F6B2E.4050602@internode.on.net> Date: Wed, 12 Mar 2014 06:59:42 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "Frank Ch. Eigler" CC: pcp@oss.sgi.com Subject: Re: pmmgr build failure on 32-bit Fedora release 20 [was 17] References: <53101471.4000200@internode.on.net> <5311157B.9010004@internode.on.net> <20140228231759.GA18123@redhat.com> <5316AD5C.3030408@internode.on.net> <20140305150207.GB27666@redhat.com> <5317BE58.6020603@internode.on.net> <20140306020106.GA6053@redhat.com> <531EC7C8.3060109@internode.on.net> <20140311120502.GA13756@redhat.com> X-ASG-Orig-Subj: Re: pmmgr build failure on 32-bit Fedora release 20 [was 17] In-Reply-To: <20140311120502.GA13756@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1394567952 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3797 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On 11/03/14 23:05, Frank Ch. Eigler wrote: > .. > Can you transcribe/look at the top level configure's output, and *atomic* > parts in config.log, config.status, and src/include/build* ? Can you > confirm that your pmmgr/GNUmakefile has LLDLIBS ... $(LIB_FOR_ATOMIC)? oops ... mea culpa. I had pulled your commits from the fche/i686 branch of the pcpfans tree into the local git for the F17 tests, but never pushed this back to my main tree, so when I went to F20 I did not have these commits 03d84b1 rpm building: stop overriding rpmbuild --target=FOO 3174b76 pmmgr: -march=i386 build fix I've now pulled them into my tree proper and my 32-bit F20 build finishes with pmmgr built (using -latomic) and packed. Apologies for the distraction. Nathan, at your next git pull from my tree you should see these two commits flow, so no need to chase 'em in Frank's fche/i686 branch. From kenj@internode.on.net Tue Mar 11 14:59:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C363D7F52 for ; Tue, 11 Mar 2014 14:59:20 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id C43CD30406A for ; Tue, 11 Mar 2014 12:59:20 -0700 (PDT) X-ASG-Debug-ID: 1394567952-04cbb054b626b7a0002-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id wruHnFlpnsc9xryE for ; Tue, 11 Mar 2014 12:59:18 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgUcAApqH1N20adJPGdsb2JhbAANTYNBiBe7QQMBAQEBOINZMA0WGAMCAQIBMScGAgEBtzKhdBeOeYQiBJl3lDw Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Mar 2014 06:29:18 +1030 Message-ID: <531F6B36.8040503@internode.on.net> Date: Wed, 12 Mar 2014 06:59:50 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - pmmgr on 32-bit rpm builds Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates - pmmgr on 32-bit rpm builds Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1394567953 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3797 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- These are Frank's commits needed to make builds work on 32-bit Fedora/RedHat rpm builds (and possibly other platforms). Changes committed to git://oss.sgi.com/kenj/pcp.git dev build/rpm/GNUmakefile | 3 ++- configure | 43 +++++++++++++++++++++++++++++++++++++++++++ configure.in | 4 ++++ src/include/builddefs.in | 3 ++- src/pmmgr/GNUmakefile | 2 +- 5 files changed, 52 insertions(+), 3 deletions(-) commit aecf436b68634afc6a7711e74b992283a52a0bc5 Merge: 24058ff 4bb764e Author: Ken McDonell Date: Wed Mar 12 06:52:20 2014 +1100 Merge branch 'fche/i686' of git://sourceware.org/git/pcpfans into dev commit 4bb764eb6a4266a9569c62aec2de5df3903d84b1 Author: Frank Ch. Eigler Date: Fri Feb 28 10:58:42 2014 -0500 rpm building: stop overriding rpmbuild --target=FOO We can trust the distro running rpmbuild to build a self-compatible set of packages. commit 034d85ad6aac383c85fa1a8c372f44bf33174b76 Author: Frank Ch. Eigler Date: Fri Feb 28 10:52:11 2014 -0500 pmmgr: -march=i386 build fix Use -latomic, provided by some versions of gcc, to supply atomic non-builtins for obsolete processors. This allows pmmgr to build on 32-bit fedora despite the pcp build/rpm/GNUmakefile -march=i386 override. From nscott@redhat.com Tue Mar 11 16:21:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 276E67F3F for ; Tue, 11 Mar 2014 16:21:35 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 28681304066 for ; Tue, 11 Mar 2014 14:21:34 -0700 (PDT) X-ASG-Debug-ID: 1394572890-04cb6c567846e890001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id ZdNOQOPsopxGEJJ5 for ; Tue, 11 Mar 2014 14:21:30 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2BLLQcv016296; Tue, 11 Mar 2014 17:21:26 -0400 Date: Tue, 11 Mar 2014 17:21:25 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell , "Frank Ch. Eigler" Cc: pcp@oss.sgi.com Message-ID: <1322230163.25595355.1394572885929.JavaMail.zimbra@redhat.com> In-Reply-To: <531F6B2E.4050602@internode.on.net> References: <53101471.4000200@internode.on.net> <5316AD5C.3030408@internode.on.net> <20140305150207.GB27666@redhat.com> <5317BE58.6020603@internode.on.net> <20140306020106.GA6053@redhat.com> <531EC7C8.3060109@internode.on.net> <20140311120502.GA13756@redhat.com> <531F6B2E.4050602@internode.on.net> Subject: Re: [pcp] pmmgr build failure on 32-bit Fedora release 20 [was 17] MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmmgr build failure on 32-bit Fedora release 20 [was 17] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pmmgr build failure on 32-bit Fedora release 20 [was 17] Thread-Index: 5+Zio+zla1S6w6B5WsxJL3ecAfNntA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394572890 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3798 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > [...] > Nathan, at your next git pull from my tree you should see these two > commits flow, so no need to chase 'em in Frank's fche/i686 branch. > That's great - thanks Ken. This is the best kind of merge - two birds with one stone & I know two people have tested it already too! cheers. -- Nathan From nscott@redhat.com Tue Mar 11 17:33:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 973997F3F for ; Tue, 11 Mar 2014 17:33:06 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4A59AAC003 for ; Tue, 11 Mar 2014 15:33:03 -0700 (PDT) X-ASG-Debug-ID: 1394577176-04bdf05daa49c190001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id 6PzTtcfaACbtBxxS; Tue, 11 Mar 2014 15:32:56 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2BMWoOw029310; Tue, 11 Mar 2014 18:32:51 -0400 Date: Tue, 11 Mar 2014 18:32:50 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Martins Innus Cc: pcp@oss.sgi.com, Ben Myers , Max Matveev Message-ID: <771728214.25616223.1394577170807.JavaMail.zimbra@redhat.com> In-Reply-To: <5318EEA3.8040806@buffalo.edu> References: <52F3A564.4060007@buffalo.edu> <742242243.21951337.1391769716120.JavaMail.root@redhat.com> <530D0904.2090804@buffalo.edu> <1661706871.16390260.1393364346293.JavaMail.zimbra@redhat.com> <5314EA02.9060906@buffalo.edu> <1369468338.20153383.1393911292559.JavaMail.zimbra@redhat.com> <5318EEA3.8040806@buffalo.edu> Subject: Re: [pcp] nfsclient pmda MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] nfsclient pmda Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: nfsclient pmda Thread-Index: 5lCSgmglujzIz29UlPKOk2mAe1+7ew== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394577176 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3799 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > > (die() is a fairly drastic measure to take BTW - that could be made > > more robust perhaps) > I was trying to think of another way to handle this. If > /proc/self/mountstats is busted, then something is likely very wrong > with the system. If we can't open a user supplied file, not sure what > the fallback would be. You're right, I don't think there's much we can do (we could treat it as "No data available" - so empty instance domain), but indeed it is a more serious issue that requires radical intervention. If it ever did happen it would be good to have a logged timestamp with the message, if you want that you can use $pmda->err(...) to get it. > > I don't see qa/972 in the 3.9.0 src, and don't see that variable in any > qa test. Is it in a newer tree? Its in the "dev" branch of the git tree, git://oss.sgi.com/pcp/pcp [ http://oss.sgi.com/cgi-bin/gitweb.cgi?p=pcp/pcp.git;a=summary ] > > Sorry, was a typo on my part. Meant > > nfsclient.ops.getattr.count > vs > nfsclient.ops.count.getattr > > > Just the ordering of the last 2 elements. Max had a question on which > would be more useful. I have no opinion. > Ah - I don't have a strong opinion either way. Perhaps the former "reads" a little better, to me anyway, but I think either would be fine. > -Should options.vers be a float or string since the values could be 3, > 4, 4.1? I would recommend using a string, that is what is done in other places for version numbers anyway. Sometimes separate metrics are presented for the major & minor version parts, but that approach is pretty uncommon. > -How much validation should be done in the regexes? One of 2 remaining > TODO's is a ipv6 regex which would be quite long. Do we even care, or > should I just take whatever is on the right side of the "="? Not sure, but by default I would vote for simplicity - the latter option sounds the simplest. > -Other TODO is if we should look for deprecated options? I found one > (intr), but I'm sure there are more. I wouldn't worry about it, up to you though. > -Finally, this is only tested on linux (CentOS 6.4). I have no access > to Solaris, IRIX, *BSD, etc. Not sure how this maps to them. There is no /proc/self/mountinfo on those other platforms AFAIK, so just testing on Linux sounds fine. cheers. -- Nathan From nscott@redhat.com Tue Mar 11 19:51:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A78AC7F3F for ; Tue, 11 Mar 2014 19:51:25 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 52344AC003 for ; Tue, 11 Mar 2014 17:51:22 -0700 (PDT) X-ASG-Debug-ID: 1394585476-04bdf05dac4aae70001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id buHApdaIvTYqiOYy for ; Tue, 11 Mar 2014 17:51:17 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2C0pDYs011559; Tue, 11 Mar 2014 20:51:13 -0400 Date: Tue, 11 Mar 2014 20:51:13 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1924983593.25657501.1394585473440.JavaMail.zimbra@redhat.com> In-Reply-To: <1322230163.25595355.1394572885929.JavaMail.zimbra@redhat.com> References: <53101471.4000200@internode.on.net> <20140305150207.GB27666@redhat.com> <5317BE58.6020603@internode.on.net> <20140306020106.GA6053@redhat.com> <531EC7C8.3060109@internode.on.net> <20140311120502.GA13756@redhat.com> <531F6B2E.4050602@internode.on.net> <1322230163.25595355.1394572885929.JavaMail.zimbra@redhat.com> Subject: Re: [pcp] pmmgr build failure on 32-bit Fedora release 20 [was 17] MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmmgr build failure on 32-bit Fedora release 20 [was 17] Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pmmgr build failure on 32-bit Fedora release 20 [was 17] Thread-Index: 5+Zio+zla1S6w6B5WsxJL3ecAfNntJk/4LOm X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394585476 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3803 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > ----- Original Message ----- > > [...] > > Nathan, at your next git pull from my tree you should see these two > > commits flow, so no need to chase 'em in Frank's fche/i686 branch. Little review comment; this bit could be further tidied... +# We used to override --target=FOO, but it's better to let the +# local build distro defaults do their jobs. pack_pcp : rpmmacros $(SPEC) DEFS=`grep '^--define' rpmmacros`; \ eval $(RPMPROG) -ba $$DEFS \ - --target $(TARGET_CPU)-$(TARGET_VENDOR)-$(TARGET_OS) \ That was the last reference to TARGET_CPU and TARGET_VENDOR (all the way back to configure AFAICT)... they could possibly be removed now? cheers. -- Nathan From nscott@redhat.com Tue Mar 11 20:08:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A93157F3F for ; Tue, 11 Mar 2014 20:08:16 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id A913D8F8081 for ; Tue, 11 Mar 2014 18:08:16 -0700 (PDT) X-ASG-Debug-ID: 1394586492-04cbb054b6283fd0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 43XxnExhq45u86ab for ; Tue, 11 Mar 2014 18:08:12 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2C18B3O013880; Tue, 11 Mar 2014 21:08:11 -0400 Date: Tue, 11 Mar 2014 21:08:11 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <98587086.25660473.1394586491367.JavaMail.zimbra@redhat.com> In-Reply-To: References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> <5318966A.2080600@redhat.com> Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Thread-Index: S0z8vjugk09kx6nZo4vUXyfpq972NQ== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394586492 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3803 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > > brolley wrote: > > > [...] > > I suggest teaching it something similar to what is allowed for pmcd, > > if needed. i.e. > > > > allow users userlist : operations ; > > disallow users userlist : operations ; > > allow groups grouplist : operations ; > > disallow groups grouplist : operations ; > > The reason we can't have exactly that is because we don't have > user/group databases/authentication in effect for the pmlc-pmlogger > connection. (I don't think we really want to go there either.) > > > I agree with Nathan that same-uid and same-gid should always be > > allowed full access. > > This is not obviously appropriate. GID's can be shared amongst many > people, and we definitely don't want to hard-code that kind of trust. Indeed. Checking for just the same uid should suffice for full-access. I think we'll also need to allow uid==zero, else we'll need to not risk breaking init scripts. If/when the full-blown authentication exchange is done (like pmcd), we should add the user/group ACLs in here too, which would help with the groups-having-lots-of-people issue. It would be good to have this ... needs TLS on the socket and optional addition of the Auth PDU into the protocol exchange. > The same-UID one is arguable. A person may want to prevent accidental > runtime modification of his logger, even by his own future processes. That doesn't make sense to me. Said person cannot prevent himself (?!) from sending signals to his own pmlogger, which can already cause change (e.g. start new volume via sighup, termination via sigkill, etc). cheers. -- Nathan From fche@redhat.com Tue Mar 11 20:18:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0E2937F3F for ; Tue, 11 Mar 2014 20:18:26 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 083558F8084 for ; Tue, 11 Mar 2014 18:18:25 -0700 (PDT) X-ASG-Debug-ID: 1394587104-04cbb054b9284920001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 8aaBAcwpXeWkQAHr for ; Tue, 11 Mar 2014 18:18:25 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2C1IOYf001076 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 11 Mar 2014 21:18:24 -0400 Received: from fche.csb (vpn-239-99.phx2.redhat.com [10.3.239.99]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2C1IOU7023929; Tue, 11 Mar 2014 21:18:24 -0400 Received: by fche.csb (Postfix, from userid 2569) id 634B958173; Tue, 11 Mar 2014 21:18:23 -0400 (EDT) Date: Tue, 11 Mar 2014 21:18:23 -0400 From: "Frank Ch. Eigler" To: Nathan Scott Cc: Dave Brolley , pcp@oss.sgi.com Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Message-ID: <20140312011823.GB24997@redhat.com> X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> <5318966A.2080600@redhat.com> <98587086.25660473.1394586491367.JavaMail.zimbra@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <98587086.25660473.1394586491367.JavaMail.zimbra@redhat.com> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1394587105 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - > [...] Checking for just the same uid should suffice for > full-access. I think we'll also need to allow uid==zero, else we'll > need to not risk breaking init scripts. Yes, except that not all pmloggers will run from init scripts. Maybe just leave such policies to the config files instead of hard-coding. > If/when the full-blown authentication exchange is done (like pmcd), > we should add the user/group ACLs in here too [...] (I guess, if someday someone can show a need. I wouldn't rush.) > > The same-UID one is arguable. A person may want to prevent accidental > > runtime modification of his logger, even by his own future processes. > > That doesn't make sense to me. Said person cannot prevent himself (?!) > from sending signals to his own pmlogger, which can already cause change > (e.g. start new volume via sighup, termination via sigkill, etc). Yeah, I know it's a stretch. But if we'll make it configurable, this would fit in fine. (Plus sighup/sigkill are more noticeable/traced than pmlc-driven changes.) - FChE From nscott@redhat.com Tue Mar 11 20:18:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1D0A97F3F for ; Tue, 11 Mar 2014 20:18:39 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0A89E8F8081 for ; Tue, 11 Mar 2014 18:18:38 -0700 (PDT) X-ASG-Debug-ID: 1394587116-04bdf05dab4ac790001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id pvqJItd4rH9ECiVQ for ; Tue, 11 Mar 2014 18:18:37 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2C1Ia6o015888; Tue, 11 Mar 2014 21:18:36 -0400 Date: Tue, 11 Mar 2014 21:18:36 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <1136652819.25662772.1394587116596.JavaMail.zimbra@redhat.com> In-Reply-To: <98587086.25660473.1394586491367.JavaMail.zimbra@redhat.com> References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> <5318966A.2080600@redhat.com> <98587086.25660473.1394586491367.JavaMail.zimbra@redhat.com> Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Thread-Index: S0z8vjugk09kx6nZo4vUXyfpq972NezH/G1o X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394587116 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3803 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > ----- Original Message ----- > > The same-UID one is arguable. A person may want to prevent accidental > > runtime modification of his logger, even by his own future processes. > > That doesn't make sense to me. Said person cannot prevent himself (?!) > from sending signals to his own pmlogger, which can already cause change > (e.g. start new volume via sighup, termination via sigkill, etc). Oh - also, this person wishing to protect himself from ... himself ... can also make use of the division of mandatory/advisory metric logging states, which are conceptually like the immutable bit on files (can't change them while the bit is set, but you can unset the bit, then change 'em). So I think we're in good shape here & should go full steam ahead with the same-uid-gives-full-access-automagically mode. cheers. -- Nathan From nscott@redhat.com Tue Mar 11 20:29:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7C54B7F3F for ; Tue, 11 Mar 2014 20:29:39 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 63EDE8F8071 for ; Tue, 11 Mar 2014 18:29:39 -0700 (PDT) X-ASG-Debug-ID: 1394587777-04cbb054b7285300001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id PgFNVCXe8hxieAHF for ; Tue, 11 Mar 2014 18:29:37 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2C1TbCl017463; Tue, 11 Mar 2014 21:29:37 -0400 Date: Tue, 11 Mar 2014 21:29:37 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <607107727.25664580.1394587777213.JavaMail.zimbra@redhat.com> In-Reply-To: <20140312011823.GB24997@redhat.com> References: <53075D46.6090807@redhat.com> <1734063835.17483667.1393481715436.JavaMail.zimbra@redhat.com> <53175AAC.5050706@redhat.com> <5318966A.2080600@redhat.com> <98587086.25660473.1394586491367.JavaMail.zimbra@redhat.com> <20140312011823.GB24997@redhat.com> Subject: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP Updates: pmlogger AF_UNIX socket for normal users; qa version check bump Thread-Index: l5vZkv13eHI+l7AN8Qzv4gffO1bGtA== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394587777 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3803 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > > [...] Checking for just the same uid should suffice for > > full-access. I think we'll also need to allow uid==zero, else we'll > > need to not risk breaking init scripts. > > Maybe just leave such policies to the config files instead of hard-coding. It needs to Just Work, by default, and in a backwards compatible way. There is no need for any extension to configuration files to support this, it is unneeded complexity (and will require additional coding, testing, bug fixing later ... for no added value whatsoever). cheers. -- Nathan From nscott@redhat.com Tue Mar 11 22:49:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 843A07F50 for ; Tue, 11 Mar 2014 22:49:48 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 14B5EAC001 for ; Tue, 11 Mar 2014 20:49:44 -0700 (PDT) X-ASG-Debug-ID: 1394596179-04cbb054b928b7e0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id lD8F291BndDQBXir for ; Tue, 11 Mar 2014 20:49:40 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2C3ndbr013177 for ; Tue, 11 Mar 2014 23:49:39 -0400 Date: Tue, 11 Mar 2014 23:49:39 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <1704915522.25701218.1394596179559.JavaMail.zimbra@redhat.com> In-Reply-To: <14169541.25689089.1394594685309.JavaMail.zimbra@redhat.com> Subject: Community PCP meeting - conference call details - this week! MIME-Version: 1.0 X-ASG-Orig-Subj: Community PCP meeting - conference call details - this week! Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Community PCP meeting - conference call details - this week! Thread-Index: dUxJvtDWAUSzfiJ/ZD0uRjY332R5Rw== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394596179 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3806 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi all, Details for this weeks call (open to everyone) are as follows: - Phone number to call from your location is here: https://www.intercallonline.com/listNumbersByCode.action?confCode=6409801839 - When prompted, enter the conference code: 6409801839 - Starting at 7am on Friday in Melbourne, track your local start date/time here: http://www.timeanddate.com/worldclock/fixedtime.html?msg=PCP+Meeting&iso=20140314T07&p1=152 Topics being discussed remain unchanged from earlier mail: - build processes - git-tar vs make src-link - qa .out files vs pcp releases - pcp-gui + pcp-doc + pcp -> tree merge planning - release schedule - once-a-month useful? sustainable? - path toward grand-unified archive+live capability - intermediate steps? - virtually-glue-archives-together enough? would it require new context type? - tail -f on archives - acceptability of server/proxy process for full capability? - path toward data durability - do we really care? - whither the fche/fsync patches? - streamable archive format? - platforms - is windows status quo (mingw) going anywhere? - worth trying cygwin (posix) builds again? - which unixes/distros are of interest? release binaries for them? - how do we share build/testing load? - how to gather evidence about compatibility assumptions (sgi addons vs. multilib)? - how to entice distro reps into presence in pcp community? Talk to you soon! cheers. -- Nathan From t-bounce-8c3494e4-a9d2-11e3-8080-808080808080-pcp=oss.sgi.com@bzn-host.eu Wed Mar 12 05:39:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.0 required=5.0 tests=DEAR_SOMETHING,HTML_MESSAGE, T_DKIM_INVALID,T_REMOTE_IMAGE autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 24D1E7F52 for ; Wed, 12 Mar 2014 05:39:37 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id DD38AAC003 for ; Wed, 12 Mar 2014 03:39:36 -0700 (PDT) X-ASG-Debug-ID: 1394620772-04bdf05dab4c6970001-S8gJnT Received: from send1.bzn-host.eu (send1.bzn-host.eu [37.235.56.36]) by cuda.sgi.com with ESMTP id 9SNOBWwT0L35ChZy for ; Wed, 12 Mar 2014 03:39:33 -0700 (PDT) X-Barracuda-Envelope-From: t-bounce-8c3494e4-a9d2-11e3-8080-808080808080-pcp=oss.sgi.com@bzn-host.eu X-Barracuda-Apparent-Source-IP: 37.235.56.36 Subject: Price Reduction - Industrial property for sale in Romania DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=bzn-host.eu; s=default; t=1394620857; bh=P1lWDt+FawsmyMDzXDvuqwidqoXdZ3mmrQnJCb+jVJ4=; h=List-Unsubscribe:From:Reply-To:To:Date:From; b=rJhhjpl3H896ES8WTZZmRCLy4PnmEU9es+kGpHGeTPmKIcxLjD4NBbruuVPdc4Obg zs2ZfvZ0SEIM0E9mcKemfTtdWmXjySoJ5FCAdHFx7Pq+AgCLPmtfIiZqoxpIaANhkg 79ezPiOlEOBG+XjTM0an2QrIzSF/VwF00Oobpzfs= X-ASG-Orig-Subj: Price Reduction - Industrial property for sale in Romania X-Priority: 3 Content-Type: multipart/alternative; boundary="===============0160539386511448616==" MIME-Version: 1.0 Message-Id: <20140312103911.71788.8c3494e4-a9d2-11e3-8080-808080808080.crbrmail@bzn-host.eu> List-Unsubscribe: From: office@business-romania.net Reply-To: office@business-romania.net To: pcp@oss.sgi.com Date: Wed, 12 Mar 2014 10:39:11 -0000 Sender: office@business-romania.net X-Barracuda-Connect: send1.bzn-host.eu[37.235.56.36] X-Barracuda-Start-Time: 1394620772 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.40 X-Barracuda-Spam-Status: No, SCORE=0.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085b, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3812 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.40 BSF_SC0_SA085b Custom Rule SA085b --===============0160539386511448616== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [1]: http://www.business-romania.net/ # Price Reduction - Industrial property for sale in Romania Dear Sirs, We are sending this email to get to your attention a property, on sale in Romania, that can be ideal for opening a deposit, a production facility or a big showroom. It is a Former Factory near Comanesti city at approximately 200 km from Moldavian border and 300 km from Bucharest, with good roads leading both to Moldavia and to Bucharest. The property consist of: 1/ 49.200 sqm of land 2/ 10.000 sqm of industrial hall 3/ 1.600 sqm of warehouses 4/ 2.200 sqm of office building The total of 49.201 sqm of land is situated at entering in Comanesti city with 3 ways of access, at 100 m from the DN12 Bacau - Brasov road and at 50 km from the European road E85. Industrial hall of 10.000 sqm has a medium height of 10 m, and on the ground it is concrete. 4 Warehouses each of 400 sqm with a total of 1.600 sqm, on the ground is concrete Office building on 3 levels with 740 sqm on each level that contains: - 12 offices / level - conference center(cafeteria) with 600 sqm - 3 rooms fully fitted to living with wood on the ground - 7 bathrooms All the buildings were built in the early 70a=E2=82=AC=E2=84=A2. Comanesti is a city with a population of 24.000 inhabitants, the nearest airport is in Bacau city at approximately 55 km. The main cities nearby are Bacau (175.000 inhabitants), Piatra Neamt (106.000 inhabitants), Focsani (98.000 inhabitants). The railway tracks are at 150 m from the property and the national road that leads to it is in very good condition(recently rebuilt). The property is outside of city and doesna=E2=82=AC=E2=84=A2t need any non-pollution certif= icates, is connected TP the mains(the transforming station is inside the former factory), being fully operational, installed power 1000 KW. For new building permits you can talk directly with the local authorities for all the approvals needed. PRICE: 1 mill Eur Looking forward to your answer. Best Regards, Catalin Rusu Rusu E Catalin PFA Sos Nicolina nr 40, 700687 - IASI ROMANIA VAT 30548758 F22/2172/14.08.2012 Mobile: +40 735 886 201 Fax: +40 372 877 165 ceo@businesses-properties.com office@business-romania.net www.businesses-properties.com www.business-romania.net This is an informing email and it shouldn\' t be spam. If you don\' t want to receive emails from business-romania.net send a reply to this email with the message DELETE or click the link at the bottom of this email. If you no longer wish to receive messages from us please click the link below, or copy and paste it in your browser: http://tr.bzn-host.eu/tr/u/0312gQnaYqpUeUAbyMX5FyzNwC14 --===============0160539386511448616== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable

Price Redu= ction - Industrial property for sale in Romania


Dear Sirs,




We are sending this email to get to your attention a property, on sale in R= omania, that can be ideal for opening a deposit, a production facility or a= big showroom.

It is a Former Factory near Comanesti city at approximately 200 km from Mol= davian border and 300 km from Bucharest, with good roads leading both to Mo= ldavia and to Bucharest.

The property consist of:

1/ 49.200 sqm of land

2/ 10.000 sqm of industrial hall

3/ 1.600 sqm of warehouses

4/ 2.200 sqm of office building

The total of 49.201 sqm of land is situated at entering in Comanesti city = with 3 ways of access, at 100 m from the DN12 Bacau - Brasov road and at 50= km from the European road E85.

Industrial hall of 10.000 sqm has a medium height of 10 m, and on the grou= nd it is concrete.

4 Warehouses each of 400 sqm with a total of 1.600 sqm, on the ground is co= ncrete

Office building on 3 levels with 740 sqm on each level that contains:
- 12 offices / level
- conference center(cafeteria) with 600 sqm
- 3 rooms fully fitted to living with wood on the ground
- 7 bathrooms

All the buildings were built in the early 70=C3=A2=E2=82=AC=E2=84=A2.
Comanesti is a city with a population of 24.000 inhabitants, the nearest ai= rport is in Bacau city at approximately 55 km.

The main cities nearby are Bacau (175.000 inhabitants), Piatra Neamt (106.0= 00 inhabitants), Focsani (98.000 inhabitants).

The railway tracks are at 150 m from the property and the national road tha= t leads to it is in very good condition(recently rebuilt). The property is = outside of city and doesn=C3=A2=E2=82=AC=E2=84=A2t need any non-pollution c= ertificates, is connected TP the mains(the transforming station is inside t= he former factory), being fully operational, installed power 1000 KW.
For new building permits you can talk directly with the local authorities f= or all the approvals needed.


PRICE: 1 mill Eur


Looking forward to your answer.




Best Regards,
Catalin Rusu


Rusu E Catalin PFA
Sos Nicolina nr 40, 700687 - IASI
ROMANIA
VAT 30548758
F22/2172/14.08.2012

Mobile: +40 735 886 201
Fax: +40 372 877 165
ceo@businesses-properties.com
office@business-romania.net
www.businesses-properties.com
www.business-romania.net



This is an informing email and it shouldn\' t be spam. If you don\' t want = to receive emails from business-romania.net send a reply to this email with= the message DELETE or click the link at the bottom of this email.

If you no longer wish to receive messages from us please click the link bel= ow, or copy and paste it in your browser:
http://tr.bzn-host.eu/tr/u/0312gQnaYqpUeUAbyMX5FyzNwC14



=C2=A0
--===============0160539386511448616==-- From t-bounce-839e4a4a-a9dd-11e3-8080-808080808080-pcp=oss.sgi.com@bzn-host.eu Wed Mar 12 06:59:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.0 required=5.0 tests=DEAR_SOMETHING,HTML_MESSAGE, T_DKIM_INVALID,T_REMOTE_IMAGE autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 76E577F62 for ; Wed, 12 Mar 2014 06:59:34 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 636BA8F8078 for ; Wed, 12 Mar 2014 04:59:31 -0700 (PDT) X-ASG-Debug-ID: 1394625568-04bdf05dac4cbc20001-S8gJnT Received: from send1.bzn-host.eu (send1.bzn-host.eu [37.235.56.36]) by cuda.sgi.com with ESMTP id bYklIG1ZuYzpLnNj for ; Wed, 12 Mar 2014 04:59:28 -0700 (PDT) X-Barracuda-Envelope-From: t-bounce-839e4a4a-a9dd-11e3-8080-808080808080-pcp=oss.sgi.com@bzn-host.eu X-Barracuda-Apparent-Source-IP: 37.235.56.36 Subject: Price Reduction - Industrial property for sale in Romania DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=bzn-host.eu; s=default; t=1394625567; bh=h+Wo0N6lPKI4pJRBqzDaxflc+lsNlrGr+7qe/iaxXDQ=; h=List-Unsubscribe:From:Reply-To:To:Date:From; b=kMnPAI+OqOd/7UrSlcOAs42+ENp8gbe1nqQ+d6lLGYAznYr4PPpqMYcMjHAUf7B7K OaFEfEf6zlyC1bm9pOkjfrvvRKgTdZesfFQFaJXu5Oi4KA8YqkpIULM8Ifv9m5nKz2 a3GrrDSr6WtRtTXqaddihQkYiOdBNWmEbvPeJ9dI= X-ASG-Orig-Subj: Price Reduction - Industrial property for sale in Romania X-Priority: 3 Content-Type: multipart/alternative; boundary="===============4528659835778082876==" MIME-Version: 1.0 Message-Id: <20140312115741.54051.839e4a4a-a9dd-11e3-8080-808080808080.crbrmail@bzn-host.eu> List-Unsubscribe: From: office@business-romania.net Reply-To: office@business-romania.net To: pcp@oss.sgi.com Date: Wed, 12 Mar 2014 11:57:41 -0000 Sender: office@business-romania.net X-Barracuda-Connect: send1.bzn-host.eu[37.235.56.36] X-Barracuda-Start-Time: 1394625568 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.40 X-Barracuda-Spam-Status: No, SCORE=0.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085b, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3814 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.40 BSF_SC0_SA085b Custom Rule SA085b --===============4528659835778082876== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [1]: http://www.business-romania.net/ # Price Reduction - Industrial property for sale in Romania Dear Sirs, We are sending this email to get to your attention a property, on sale in Romania, that can be ideal for opening a deposit, a production facility or a big showroom. It is a Former Factory near Comanesti city at approximately 200 km from Moldavian border and 300 km from Bucharest, with good roads leading both to Moldavia and to Bucharest. The property consist of: 1/ 49.200 sqm of land 2/ 10.000 sqm of industrial hall 3/ 1.600 sqm of warehouses 4/ 2.200 sqm of office building The total of 49.201 sqm of land is situated at entering in Comanesti city with 3 ways of access, at 100 m from the DN12 Bacau - Brasov road and at 50 km from the European road E85. Industrial hall of 10.000 sqm has a medium height of 10 m, and on the ground it is concrete. 4 Warehouses each of 400 sqm with a total of 1.600 sqm, on the ground is concrete Office building on 3 levels with 740 sqm on each level that contains: - 12 offices / level - conference center(cafeteria) with 600 sqm - 3 rooms fully fitted to living with wood on the ground - 7 bathrooms All the buildings were built in the early 70a=E2=82=AC=E2=84=A2. Comanesti is a city with a population of 24.000 inhabitants, the nearest airport is in Bacau city at approximately 55 km. The main cities nearby are Bacau (175.000 inhabitants), Piatra Neamt (106.000 inhabitants), Focsani (98.000 inhabitants). The railway tracks are at 150 m from the property and the national road that leads to it is in very good condition(recently rebuilt). The property is outside of city and doesna=E2=82=AC=E2=84=A2t need any non-pollution certif= icates, is connected TP the mains(the transforming station is inside the former factory), being fully operational, installed power 1000 KW. For new building permits you can talk directly with the local authorities for all the approvals needed. PRICE: 1 mill Eur Looking forward to your answer. Best Regards, Catalin Rusu Rusu E Catalin PFA Sos Nicolina nr 40, 700687 - IASI ROMANIA VAT 30548758 F22/2172/14.08.2012 Mobile: +40 735 886 201 Fax: +40 372 877 165 ceo@businesses-properties.com office@business-romania.net www.businesses-properties.com www.business-romania.net This is an informing email and it shouldn\' t be spam. If you don\' t want to receive emails from business-romania.net send a reply to this email with the message DELETE or click the link at the bottom of this email. If you no longer wish to receive messages from us please click the link below, or copy and paste it in your browser: http://tr.bzn-host.eu/tr/u/0312bJ5jjFp8X2RKX8BQBiaUVY14 --===============4528659835778082876== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable

Price Redu= ction - Industrial property for sale in Romania


Dear Sirs,




We are sending this email to get to your attention a property, on sale in R= omania, that can be ideal for opening a deposit, a production facility or a= big showroom.

It is a Former Factory near Comanesti city at approximately 200 km from Mol= davian border and 300 km from Bucharest, with good roads leading both to Mo= ldavia and to Bucharest.

The property consist of:

1/ 49.200 sqm of land

2/ 10.000 sqm of industrial hall

3/ 1.600 sqm of warehouses

4/ 2.200 sqm of office building

The total of 49.201 sqm of land is situated at entering in Comanesti city = with 3 ways of access, at 100 m from the DN12 Bacau - Brasov road and at 50= km from the European road E85.

Industrial hall of 10.000 sqm has a medium height of 10 m, and on the grou= nd it is concrete.

4 Warehouses each of 400 sqm with a total of 1.600 sqm, on the ground is co= ncrete

Office building on 3 levels with 740 sqm on each level that contains:
- 12 offices / level
- conference center(cafeteria) with 600 sqm
- 3 rooms fully fitted to living with wood on the ground
- 7 bathrooms

All the buildings were built in the early 70=C3=A2=E2=82=AC=E2=84=A2.
Comanesti is a city with a population of 24.000 inhabitants, the nearest ai= rport is in Bacau city at approximately 55 km.

The main cities nearby are Bacau (175.000 inhabitants), Piatra Neamt (106.0= 00 inhabitants), Focsani (98.000 inhabitants).

The railway tracks are at 150 m from the property and the national road tha= t leads to it is in very good condition(recently rebuilt). The property is = outside of city and doesn=C3=A2=E2=82=AC=E2=84=A2t need any non-pollution c= ertificates, is connected TP the mains(the transforming station is inside t= he former factory), being fully operational, installed power 1000 KW.
For new building permits you can talk directly with the local authorities f= or all the approvals needed.


PRICE: 1 mill Eur


Looking forward to your answer.




Best Regards,
Catalin Rusu


Rusu E Catalin PFA
Sos Nicolina nr 40, 700687 - IASI
ROMANIA
VAT 30548758
F22/2172/14.08.2012

Mobile: +40 735 886 201
Fax: +40 372 877 165
ceo@businesses-properties.com
office@business-romania.net
www.businesses-properties.com
www.business-romania.net



This is an informing email and it shouldn\' t be spam. If you don\' t want = to receive emails from business-romania.net send a reply to this email with= the message DELETE or click the link at the bottom of this email.

If you no longer wish to receive messages from us please click the link bel= ow, or copy and paste it in your browser:
http://tr.bzn-host.eu/tr/u/0312bJ5jjFp8X2RKX8BQBiaUVY14



=C2=A0
--===============4528659835778082876==-- From minnus@buffalo.edu Wed Mar 12 09:49:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7CCE77F69 for ; Wed, 12 Mar 2014 09:49:19 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id DE39BAC003 for ; Wed, 12 Mar 2014 07:49:18 -0700 (PDT) X-ASG-Debug-ID: 1394635754-04cb6c56774b4aa0001-S8gJnT Received: from mtareserve1.acsu.buffalo.edu (mtareserve8.acsu.buffalo.edu [128.205.6.19]) by cuda.sgi.com with ESMTP id Q2jKWH55LWZIoyeH for ; Wed, 12 Mar 2014 07:49:14 -0700 (PDT) X-Barracuda-Envelope-From: minnus@buffalo.edu X-Barracuda-Apparent-Source-IP: 128.205.6.19 Received: from localmailB.acsu.buffalo.edu (localmailb.acsu.buffalo.edu [128.205.5.200]) by mtareserve1.acsu.buffalo.edu (Postfix) with ESMTP id 1185E408; Wed, 12 Mar 2014 10:49:14 -0400 (EDT) Received: from localmailB.acsu.buffalo.edu (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id 0B472AF5F; Wed, 12 Mar 2014 10:49:14 -0400 (EDT) Received: from localmailB.acsu.buffalo.edu (localhost [127.0.0.1]) by localmailB.acsu.buffalo.edu (Postfix) with ESMTP id 461AFAF52; Wed, 12 Mar 2014 10:49:13 -0400 (EDT) Received: from smtp.buffalo.edu (smtp1.acsu.buffalo.edu [128.205.5.253]) by localmailB.acsu.buffalo.edu (Prefixe) with ESMTP id 2FCC2AF50; Wed, 12 Mar 2014 10:49:13 -0400 (EDT) Received: from gilmour.ccr.buffalo.edu (gilmour.ccr.buffalo.edu [128.205.40.13]) (Authenticated sender: minnus@buffalo.edu) by smtp.buffalo.edu (Postfix) with ESMTPSA id 21F659ABB; Wed, 12 Mar 2014 10:49:13 -0400 (EDT) Message-ID: <532073E8.9070607@buffalo.edu> Date: Wed, 12 Mar 2014 10:49:12 -0400 From: Martins Innus User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] nfsclient pmda References: <52F3A564.4060007@buffalo.edu> <742242243.21951337.1391769716120.JavaMail.root@redhat.com> <530D0904.2090804@buffalo.edu> <1661706871.16390260.1393364346293.JavaMail.zimbra@redhat.com> <5314EA02.9060906@buffalo.edu> <1369468338.20153383.1393911292559.JavaMail.zimbra@redhat.com> <5318EEA3.8040806@buffalo.edu> <771728214.25616223.1394577170807.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] nfsclient pmda In-Reply-To: <771728214.25616223.1394577170807.JavaMail.zimbra@redhat.com> Content-Type: multipart/mixed; boundary="------------000807020404020508090204" X-PM-EL-Spam-Prob: : 8% X-Barracuda-Connect: mtareserve8.acsu.buffalo.edu[128.205.6.19] X-Barracuda-Start-Time: 1394635754 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3816 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. --------------000807020404020508090204 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Nathan, OK, thanks for all the feedback. Attached is hopefully a pmda ready for inclusion. I did my best on a qa test with a canned mountstats file. Maybe someone with more knowlege on what exactly should be tested for can add some more tests if necessary. Its unclear to me exactly why there are "???" instances, but the 716 test shows the same thing, so is that expected? Thanks Martins --------------000807020404020508090204 Content-Type: application/octet-stream; x-mac-type="0"; x-mac-creator="0"; name="nfsclient_zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nfsclient_zip" UEsDBAoAAAAAAApVbEQAAAAAAAAAAAAAAAAKABAAbmZzY2xpZW50L1VYDADTcSBT03EgU8Jq FABQSwMEFAAIAAgAClVsRAAAAAAAAAAAAAAAABIAEABuZnNjbGllbnQvZG9tYWluLmhVWAwA 03EgU9NxIFPCahQAU05JTcvMS1Xwcwt29vF09QtRMDPiAgBQSwcICkPUphcAAAAVAAAAUEsD BBQACAAIAApVbEQAAAAAAAAAAAAAAAAXABAAbmZzY2xpZW50L2RvbWFpbi5oLnBlcmxVWAwA 03EgU9NxIFPCahQAU05JTcvMS1Xwcwt29vF09QtRMDPiAgBQSwcICkPUphcAAAAVAAAAUEsD BBQACAAIAApVbEQAAAAAAAAAAAAAAAAVABAAbmZzY2xpZW50L0dOVW1ha2VmaWxlVVgMANNx IFPTcSBTwmoUAIWRT0/jMBDFz/hTjASHRoJmQbArgTiE/oFIaRslqRCnyo0nxNrEjmynqN+e cVoEu0K7Ug/185vn35ucslOY6G5v5GvtYFQGcPXj8hLyx3hMN1HTwHBjwaBFs0NBMl0UtbTQ Gf1qeAv0tzKIYHXl3rjBO9jrHkquaEhI64zc9g5BOuBKhNpAq4Ws9iRQUq8EGnA1gkPTWtDV cHhcruERFRreQNpvG1lCIktUFoHTy16xNQrY7r2dcuaeID8SwFxTLndSqztASQ4DOzSWznD1 8cQx7xyIaMSdhzYUpDs/FhDrHhruPie/b/5ZUIBUQ3CtO2pTUyRVfpO0wy1Cb7Hqm3MgJ6U8 x8XTal1AtHyB5yjLomXxckdeV+veAe7wkCTbrpEUTJ0MV27v0RezbPJE/ughTuLixRMbmMfF cpbnMF9lEEEaZUU8WSdRBuk6S1f5bAyQI/5nsxRVDV+HFijQcdlY35kVq3QaZ3AP43E4/JhU ZdMLhLPR4S4IrSnDoxpue9kIgZVlLI4WJyf3oCpbUhHlGEsX04gmvHo2Sifpxgv5Zgg5G5E/ YEmeTeZxMsvJEyvrOG0ww1bvELpW8INr3DWM0SO8b9wtlDWWvzdCt1wq9gXvYR0n02xNWYGX h6xbOI6x0xPKWuZFlCQBXLTw6+YGLoTnOkAG3zr+QvqH++f19Z/EX8zh91U2XdnBJ+EH81E+ nhj72pf0w4fpWmVD60TXSsEIZbpaRPFyk86yxK8gYO9QSwcIQTGBGzICAADtAwAAUEsDBBQA CAAIAApVbEQAAAAAAAAAAAAAAAARABAAbmZzY2xpZW50L0luc3RhbGxVWAwA03EgU9NxIFPC ahQAhVHLbtswELzrKwZIDwkQ2Imvhg+q64cA1xYkGYFPBiWuIqIUKZCUU/19V2qC5FCgN+7O 7uzM8C66w9p2g1OvTcB99YDF0/Mz8l0yYyTWGhPi4ciTu5HkNgNFozw6Z1+daMHP2hHB2zq8 CUdLDLZHJQwvSeWDU2UfCCpAGDm3Dq2Vqh64wUy9keQQGkIg13rYeip2xzN2ZMgJjbQvtapw UBUZTxB8eez4hiTKYRxnnu2oIH9XgK1lXhGUNUuQ4gmHGznPNRYfJ975HsGK7kUYRTsmst24 9sBaB2gRPjf/7fzToIQyE3FjO3bTMCVbflOcYUnoPdW9fgRPMstLUuxP5wLx8YKXOMviY3FZ 8mxobB9AN/rLpNpOKyZmT06YMIzSf26y9Z7n4+/JISkuo2KHbVIcN3mO7SlDjDTOimR9PsQZ 0nOWnvLNDMiJ/pMsU9XT73CAkoJQ2o+eoxm+pev0+iPJ5hSqeVd1MzK3j3a+j7PNBGpVzrtW Ck6nmvkmipRoV6b2FXswIRqhqzKcaC0qWi0i6e2V017VQvNxKai15kujI6enMrieIm+rXxS+ wBNfTqHvpldifBBaR/SbQ3+K/gBQSwcIbM0RF8EBAADYAgAAUEsDBBQACAAIAApVbEQAAAAA AAAAAAAAAAAYABAAbmZzY2xpZW50L25mc2NsaWVudC5jb25mVVgMANNxIFPTcSBTwmoUAFNW 8fUP9QsJDnEMCY4PcAzxULBVUNLPyM9N1c/NzMsrLdYvSC4AYV1jPUs9A/3CRP28tOLknMzU vBL93PzSvJLiksSSYr3CRCVrLgBQSwcI5cEEvUwAAABNAAAAUEsDBBQACAAIAApVbEQAAAAA AAAAAAAAAAAaABAAbmZzY2xpZW50L3BtZGFuZnNjbGllbnQucGxVWAwA03EgU9NxIFPCahQA 7T17X9tGtn/Dp5ildLFTxzxDUliausRJuZsAP+w0zZZdrSyNbS2ypOiBcUPuZ7/nnJnRwwhb MipO72/TAtJo5sx5zZkzrzPfrH7Djl1v4luDYchqRp3tbG1vs86bkyZ8adk2oy8B83nA/Wtu QjJ86A6tgHm+O/D1EYPHvs85C9x+ONZ9fsgmbsQM3YFCphWEvtWLQs6skOmOuen6bOSaVn8C CQApckzus3DIWcj9UcDcPr28OX3P3nCH+7rNzqOebRnsrWVwJ+BMh5oxJRhyk/UmmB3gvEYM OhID9toFuHpouc4h4xbk8Nk19wN4ZzuqCgmvwQCjmh4i0j4Acj0sVgdcJ8zWw6RkPuUJgSaz HAI8dD2gZggggeSxBTzscRYFvB/ZDQY5AcqHk+7PZ++7rHX6kX1oXVy0TrsfDyFvOHSjkPFr LiBZI8+2ADDQ5OtOOEHU37Uvjn+G/K2fTt6edD8ixj57fdI9bXc67PXZBWux89ZF9+T4/dvW BTt/f3F+1mk3GetwPoezAKpP0gEGmjzULTtAmlcBdYZEGuEhPQM2juUMAvF2fnx+cHD+7lXr UOS81v2AfRrX2Lo3MnX2o27bmusF7EfDHY1cRzxf77qOPZHPe+rvNj7UAQ6yGah3glB3DEDG HenAW+D2FmEIIJnTD5gBzHFCwE0Pg1WQHmPrkCxSNcuBYuyIbRG8EShESBmRXS5pRN+ygSUu ioZKr787e3/a7XRb3Y523ur+DIXXNkHUxmbA7f5mAmKNQB67Tt8aRD6pGQELCDsX9MW3TOAQ 8dt2DZEDZJeAaMBzENoTKhHyIMTsXuR7bsCDVRLDhK0ThjXko2ZQbbUNYLeG3O5or04uNuqs yTY2Y6KTpybm32iwjamUOvu8yuQ/fg0q8G/ATlT0b2iLQEPA/sKe9kXS4eoXonTIjSvGnWsU rqX3ACmhKDFP06y0+qwG+tO3HNDc9fbpL5/XTl93jt+etE+72hSL174wxGglh/VzSyJuJDbH RUKO2Pk7rX1xobXOz39pX3ROzk5jTRJIDvVgiEp0xSeAmSua2AZRsUEKDiKoYRolea5FuoXJ 9QbjzQFaxI3NoTviG9CeEC7UG3EEqQvgPu830MiJ1k9JwHVoSU5ASuv2AUQYIwQWSk+w8UaW qTn6SCjjt0OgqEaNAcqcQ6PiLFcZqb4gxEYbQ26wUL9CclyHM08HmYZD340GQ1k9igubdhD1 WNJiPKxEwzq0FHiQTrb5RKEXEXFAdcANof2gDlw3hiIj0EPNYRKEHE06cRrBiBRgXhvzqsIA 1wfAaP0ApA16A7+u+AFjGya/BtvEfo3hug7C+Sgy94NwAqb2HyiODoglU2sNYSB1dTDXKErd NC2sT7cRhCSDBDWGfByAgwIbuhdGPjBnBYy4w0jfoBX9DZrSHR29vV1dWZF27ukP0Ohra/gY M5T1wYQKsARsGsABW//LWp399a8AxrQ4WzvWnY3w/ryXDuQGhVhB08BvPNcHg0wvUCUaS3gb D8lk/I1K/kBti3IQV6FRaVgeyDddjkoBqktffO5hB49cEqx+CbmwIcuC/8s2/yVlUbvsPKmn 5CETUgJpPtkUFa9ILLHi7UNMQFRGoUcpO5SicMcU/EL4AYKAGTkMZOhjlKZwaj6Br7W9+ktS e+ynj5LKV9aHnxX0LwD+85dD9g38pvbqwP+uMwHAQdx07xR6+sPnlP0UtGwgqIT7M0skdkSU IvoYFvrCuA0NWuAp26Rr2+4YGy2SByj6HLUByQ9ccpP6MnfMMkgn/YXiE8zPrIEDdgC8Ig6g KDeVSysI/HP4jXj6soo/pA/BleXJigmk6TLHDQkQ9mNuIoZAagZ+jq28hC85ryqQsMGjCu6q 02WI6QeXYa35pL5OQhOSP5VNEXzEPgcmhBZ4YYBJOObQMIR7JrFEmhEP/RpaGvVLPT0QWon4 okI02HWQXyjgobTVUEtfOD19PbJDYdYD9lLgcw6Nw/Uim7BQ4KnpgG2H/gGseyhydv0JIg66 COIYw6++Dy4ICnfNcdcY2vZA5HwTYUfrcz0Ae4R4y6qDpIaR7nmoDbEsv1mdqWySxiYANcHB 5qRya/547bBYuWDiGFRmq2AB8GpGopbtgiVMyy9fCIUoaNktSgq467/zUrSMS5folS4B4reh SZdiseHzwchapJB+U7IQCKd8TVioZE0+N9BDngiZDnXfLCpW8I2tcnUZoVtK13SjVHZw7a9K wrdL5feBv54dBaUKBcBTboCDVa6dQf9/HXdwRQuBsyhZvBYaXnFBymqKyhGNhqhmf6u4noFp dgTrdouyjgsFWAMnck15IjAEYbsMx6txPwKDeJrfgHH96fu3b8G3D9xiNVAXCp6oL+qJnMDj htWHQX5R5hGE2CgW5YZ0RUryXZRKZJzhyR7xpGBDpNeE7hhQy7aLQYCEcqhbAzEyL1XKdt2r yEsaz1pRqeAo39ZigwD9vcMlkQXUjgaZwkfcRif175x75GK8fPlyVfrNP5Iw0GeCbIFnW2Ft o4HDku26qAddGBqCoY8t87JaUiw99Md/UMSAwayX5D6UDuZJIJwiGAyA24VTYOjMoEvmCsfn 5UuZs4NDN5ygEmM36Hj4jZjSQI82giEvOXzYXgbgckUDoTDClwGPsJZClbzCmu/e+mPwB1n9 M3nK5V2e9W0hNOFk02zEdCXo64g6ilYRe0fb82A7Lvk45cAnbtHWfPjQKZSvIeN7zauERlK1 33ae7v2zdtn8bevp9/+sv6yXqS7x2uaLg9y1o9ql+V05khI3b32eVMYLVjEuXkVvwSp6xasQ HuQCdaRcz7mVKJ9zgWoy7mrBivSbhSuSjmeBioRvu1BFKbe4YEULUpRypedWVMOlllv0nUu2 mIzvXcBQkstdro7ESy9gKsFBLwddefQFzKRe0sTrRlHI2M2Xgx07BoXwtssibheFrQYUJdUm PQwpUEsyAinZyWZHLkXokYOWss0gNdSZVwu5v0c1GN7cRqZ365sjvWSDSPzn+S0O0VrAfCQz k/MaHQ2lFqghGYLNrUKOvBbp0VNjtrnVwGDtqOaAj3kLo7XbK7/3jH5Z9Nu7ta/4hH5Z9Nu7 DbyrEf2y6DeI07ly3LFTUkfVEHG+LOOx3pGY4kSXloZOu/HIaYEhY8F6hQsXS2DhimNHbq48 4iFmFdUWV+hkjHpUwwaKDVWPQhdb6z6+7T8UlUz7nY1MMs6dlvleqYqnx8sFumqAUU6T1Yh6 bjcdD6XLwc+OwOfVkhp5Q6uG0fMtOBJlO9mpwft8riXDdlmpDuakj++3C7g+05MASf2ryaBb LLrAEFgf8LxVEUjOLIqwe/7djw5AiJvOdCmq2dC93AUZTH9g3QBC71m2FVo8mI0EGNI8HCD5 gSgAhMi3wsns6mmTTf66lPiSwQJkWJuxMkgFmhYMzbmPuyosUw9BBg0sNwNTWc6E3/5kkYI6 bi0oXUwPcb6pdLHrfoBL02XyixZZpoRuGDwIypSIPKTCI6UvXgqnjBYtUwq9MahiaeziQqWq GvAQValUmYCHqA5livRhJDAsVUBMnpVRG7SgZQRjcz0ozmHDdQa45cp1xroVFi4meRX6UQly +E3IHZMEWrwiy7bBHuB6cfEyQ/CYUEPLlSiHmMltHexqnR1RtyZmoTfZppyFjlf8e5OQ3zWt lyGllzCslJ+md5sw1hvp9nxMRREiq2QZqgZGutwooBLpasqVoWpoL22BVpeupmgZshvNYqog 8kolmCvWG88Pc6SKydNCxQULsV9MLVak4dE+ICyGu81w608wtPphTZSQyxm0OJDk4Z/EEmNd bBOZpTVYqBn4hhhDEAtm8YCy9yzH1AzaCliwBBgRB8S+WCExE1+sjGXavFSBAAxOUDQzqO51 4cw93dRurDLAP2lRYeBXtjvA7EoPV4Q+CHVYgWHUeyfCzTEXr961WNvmI3Lg7nMQC3iKEkcg yhhGzlU8v/VQkNSeKobpc8+eVAwzdEMYr+CMlgaS+kOgelVB9SLbjiqD1rduqgOG8/BjfVIZ brRrVBvpfjDU7aqgYtMlHVIAV7Pj4qyljUyytCUN7YNxzBjhh0KLzeBDAcUmsgoZKPP5cKSk aX0wUmmzOxeY/HePZe4en4NGScO8QCdajapnO9lqYKY64aT53NsnFesb/9vv/LffeQiw/4f9 DkrvT9/x3BkZVAVQDQIeCi8zongosP92s8WQUt1s0ZFTqncoViRr/YtWk7buxcpMW+8FSnlF SynrWyy3tK7FMsfWsyDsKetYfMAsrd+i7lXmqFDe0R2P+09dj05AWUFoGYFI9fnT+NgKnj30 3CCw8KgJHralgynXuw12vYc/zW1xipCHdNQHz1OuipM7QXzGR51DUWdTXQ/nJ1lNHfBVR76y DFlLGAJ5mrIUPq/R8gzVdX8vUwyaQ7sGKgRImx2isEqQNJOn4RG7yoGi4awQ6KeIR7xCeH74 EJIdnoXGb7gRhVn8ZFOYnpe80zDi2clv2Ae+AW2C9jPzgDY6W2Fy4syeMMDD4MnJOseVZ7zo GK84Ohyg/mN9Tcb+JwpCZrtQHfT5lo1HSk0Xz++N9NAYyqJ43pDOluLb9R41LzxGMNSvuQiE EBiQAb9nz3ECQasrm/+6DJ7Ufms9/Yf2zyf1A1a7NJ/Ui/+OiV8RrZeOGuMq9eXbeJ162uW6 K1Etab75FvC+IqqNliuVNMRy5dKtbZGSokmVKynbTblC1DhmFkk1AC3bAuJ50tr6ToOtgzVf B2u+/gx+9uHnOfy8gJ/v66keg1qKYbug86Ra4oQ/Rn7goKd4NNYADacTiKD+vQnzDC853e3z vs+DoTo2KZqBKInFerpxBSAAmgQCnQlwxZ+I0nFDZOBuW9eWGUGuyZ1j6AIeqGqSlHsynQ7H r1AEAHECGzta3eAi8kNtPSlOCQ12+e2wTvTm1KfF+H+mI9W1dcOGJs19YCC4VSP84+AB1yP2 o3bI5CFssb4NaRSiATNoIimndlEeROHzMPIdVpPhCk5OO90G26qr6Auyv61J4HV14DsOD6Cq ixOmca1Pm1gQH50vfy82vLERx2gedB71gMmyTAFhCEIAunToCItCWGIEqpkg86XB6PwJxYlA bYjDgTz9weFjcfwDI6agBFW4FmZgQAlNhvXwI3RKREwWLMh6kWWbq+jCuLgZoCHOOdN5FPih A1O6Dbr4KbJ8MeFywMBAMwwwgm8NAiWhY5yC0AVoPbLyZMujUY/7GP8gVh7gaRbxWuLJbTTY /o6ISiIYF7CByxCfhjz1judcTB4YviU2AmHWgQyx8jRm8Naq1FPdBD+SINViQda2Gtv1Boaw 6H48b2ud7sXJ6ZvGnXgmaCkgT6f9jvSmdQqqQzAix4IWsdWI/6tj1vQKrji9Tqnt1PMGUDYb r50/FK/UGXn68g7f2XmSsCFYTwefEmZuk9E6k+fxQM6uD93nAaTRgTzQODziLYMaoHlDhzeI wCVoovnB5q8FQ3cs7Ikmd3ARUN9lt8wfr2K4CseAZ4QIb/JgTzpBHapJ0vJPziBUOh7ybQSP 4+SxJx9TQMUZD/oaH8VIZ4iPTWQT5RGHu4lTOfHkALzh6AebGG5yS1NkhG6G4gz9uC8j+9VO v6pt4um0ZEt3JqfcgJ2k5e2yJvz8MIO+2L78rY3sUfuMiVeV7QYGewkoYpPGXk6mkuUJh9ht 8hvdAFcP7CM2b3F0j1p8ck4UXn7C0RLrEcdG+oS0kd9A78cwAgEAB2cVCoioNtrb9pvW8Udo Ot32xevWcVsFLKKNpGuWt4cPt5a3T3/Th0ZVTtK7NKOS3bh3U2dtlr3FnMgEpppSn2FDiQMU YLQvHUakiuQ9diZITvasHtUkymC9FdbwWMci0PBT6KgtoklS/j7Q9Pc5OzYp5s/ZqzP4Y2JU E0PHA4p6H63GTnO/uQP+Efj94KAbKFS951IYGBwFvIQyYHf8WwfNj7860zBuFzTY08OcwmZy umDeZnRxcDQn72tUYGUeO/dmm2f9twta/z+SyPh0Z05uf4zODVhsUmx2X7b5ZO6myHy/u/Po gsQdcjk5e65rcxghUk8kaBRFMNKWuRipe8slVZxCnUGr6FErIvbZcomNT93OoDd2IioieX/p LZbOjOTnVMEUFyPt+XKlKQ4c55kh/CDlByMdGBdBb7MYiS+WS+L4PhLH1ZH4/XJJ7N1HYq86 Ere3lkujPPCdl5e+VETl9pK7EnXePCe3+lYRpTtfA6X6zf2U6jcVUbpkTyg+cZ9LqfhWEaXL doTUkf97Ka1Mps+W7hLEkQdycuNcBLrxNDWhMrIeH+rXlrsoyfvLFa6IgjDD6xMzLxW5fNtL dowwKsMMWnFSqSpKl+wf6TOHaXplg7TtJTtJdARrBqViYqsaWneW7Cxh/IyZQrUro3TJDlMc yGMGufEsblU0L9l1SgUVmTXBksxTV0X3kh2pOMjJLFmrefiqaN5buqMhojXcM/lAHw3XPmBq 8hsXGhakdclTS/fJNiXPB7qNO0v2oUTImZys9KEiGpc9pSQj3uRNKolPFdH5YuktEyPn5GSE 5KIkpiO4zCH3+6WTm4Ttyckef6xGurtL9qCSSEH30YofK6J1yT5UEp7oPlqrs8C7y199S4VA upde/FqqDe8VacO7u0snPlnSziMn+VqceIx3PIfsJU9LQUIe+rhuX41OL9lvSsJS5elzvCGh GlqXvxaXDoqVUyD1uSKSn38FJMdhuHIpVl+LEoxbqQY8tflsZyYPdmhjiCAAb08pQv4cBmwT +cjVk3fA1fZxLisyzMCIQ7lZWgO8WY11uOHiwa3cPMJWYTiwFNW78NxyJjg8RAC4o1PccYYB wWdyZHeJW2UyAclych7P+S4VAL3UhBV7C7Nib4msiAOj5eTqyG/sta1f3z/pvqripqWY8Wwm wc8aBfy1lZWYwmPcENe+uENh3AQog3Z22q6LcnejFE3HYZP5wO84OesAC89etS/av7Tenrxq ddvwdcNyDLGRWNzhqGm4OzQBoBFANh5yB2rw8fIokWLhFT4ql0n8mc2KAlNh1bLiTmi5LC9e tU+7Fx9nMgNZITqJFEdSvGCiivK8KDA9VjEvstHypjjR6rZOTufwISmtyduZNLkpFvkhrvMT XSndUqnUZIM1ARzuUi7DnwJuYLX8mQoLmOVPq4umag5/ftc9jegPqH/FbZeOSV9EkL5UQ0Lu 0PWLyBuqme6IzeEebuDv4c1f5dhXwMusln0qPGKWb7+87pydt0/vYRjeV6jRfX+KUfhiWn66 gdHdmnSEA8OMudDWlEJh5kLMKDCRVzkzZOzHO+x4e3b29/fnMy0NHrDjtAgsgcynsMA0XuUU yliVMgdetloA0QLrl5UjmgqRWQ7ZAouQlSMbR+Ysh2qRHVd/GK5llaDIxqnKkU0ikZZE9tG9 lmwE1JLYPrpfkY68WhLXR+/jUxFfS6K6jP5URJotiegy+rq+3L9fCtFldFlyUqQUnsvosVRE 35KoPnp/NRVJuBy6Rfa9VItuJoJxSWQfvctKR04uieuj91jpiM0lcX30/iqJFF0S00fvrVIR qkui+ui9lYiMPY2ljISdmizbn4n5foGp4zl4xzh3zlvHbe2nj922nBmcQvxubO3sUO307OJd 6+1Fu/UKYXRwwIYDdnF4Hs/rC9IQAB7r1z3PtgxdHDi8tnQa3dPHYBJgRAGDTr3CYM/v6waf K8T97GTZ/t4fz4tM0PA8Zny4OOl226cz+YFAwG7dyxKqJMMTMZovwZjdx2ZMOjL61LTZyUX7 uLuYktCRfJzcUBMZIppCPCt0JqGzvq0PCrBlbzn6MoMvD9GX0K2SN8+WojIyYn2WNZ32xS/t i2IqQypCX/sBE9BUCBFMETVS08JX4gyVw9gg4JYFBTizvxytmcGaMloTuiXZI8xPCf48fzB/ ivakqXsLsmxBXTlvvcnjBpURuiLJ1NScDE6Zpt+LEPvikYnN+DaSWhR/eya5SviK4niuRJGc mjwRXgjGIkw5Ic8pzskHLgKPhUOf8yQ8IG06xC1MGFUnMr0GCw34hRtlm1DqtUXdONuiWXrX 4XhXtB5itLOQLNikyVh34kE6ZqC4yNSMHR5uBpHje8YmooPwNuO6mgY7ICxFhEjPh/5QoyhP gOosmT0vHDanxBrqlKwy0WblV+AJC9zINziTyRupVxUhTgCYq3jPH3FhcDrercxgiA3gfQby wa9swEONSEEfJciZrseMGuTCTJqOEyAH7HLN7eEiGxFPpWkphw0s8JLZxfmxMEJoqixgFXBJ fRu6QXi5VoBTjzdcyonlO80s1AKZI49FN4EGObS+5VjBUJMZcaMArvaQtivwqOpRgC0HtxBY 0ljrLKkpYwew3prP66puVsP9dPhlPLREGDcdaoLGjdFmBDC6MlzezW7JvZjNAgx/vFHf3VjH Mst/rH7fQsOnW8Q+JELmQ653otFIMvwuTxvMCpEfQej6ckGSrIsoICErxgtGYWjHaITcRPdc iQ2VFczuyEPDOHTHDAdogFKAEclASAq50FVFinC33EC1zO6gPOYmgZ+VGVMGmOEnJj9t/KzI w8VX4B+tv8YRMZMuIlmcxTMjwMVOwmXiJRgPg0LQprk9LYRAbEUqwq7Hm9xNxbbO3SKVsQHE kJEljMDJlBFAnVQZWORh16DeDHfk2Zx0CyCJEIueUYQRjzd5nIrNnWf+4AsHQ3Mv5ZJErvmf glAs/VNAZBXdD5sMRp2U2YrQ/ngT0tlw4tPkwwchSl2YBwvXgDAsF+2D3/iAtKao1KnPlNQL owRWAj7q/gStBq51g35QC3N9a2A5upwcgGKCfREBIr6qPTmQDO3uRPQQcUZyyaBusFbclFMx WK1slA6GI+vhRovIMZWzkrRqRTGjTSuxTIvI5vtH86BT4dlzGyi4tj76xGqso8gcw3gdxfP6 5Nd37QM0/FxFjiRjFPqREVKsUhbokwCdmlmgLtcagqs9EUYMO94IBKcsHynGtBWwACwVwuSn P2BlghT23RFLpZH9Acc9kw1a4uGlQ8Wp0yJUMcYcCLTnu1fcKSKo7Hr5Hy8pjK0qIuDL7zKB UdhcFoWWbf2u9mUr4VDQTysQvvQMhoIYp9kp4+0nDJX1NT/Z3AH+iQL4MqXlYgcgtiTkHPbq mkARey2TZ/IRDJEZkt1rnspfSAgP2ClcSiI57eNOS0ouHMjfE6wmtwuQtfPVkJW5FOHBdO1+ NXRlLm54MF0Fpk4fi7Cp2yUeTFqBmc+lkOY9nLQCU5ePRZq8p+PBJBWYbXwsksRlIg+m6MVX YzLUhScPJun7r4akqUtZHkoZbcj4OihLLo6ZT5S4pyWZ3n1B07uv1GUWKuRiIKZ740susBQM HT5w9h+8vOKtReMGPqJZD3R2+mKqF+Hj7NIYxxQ4s+TBwAKG73gOIJ5OknU02SmencM7L3Ck QtPDYwQjY8iLq2VkOG69Bx5TU+GvX4MwdZyBBsdKXE1DWODtNDJU+4/op7sO3jbDjlhtA6M0 41r7QG1pw9Pk8aPagIzRtMRGXUarQ7blTB0M2xCLDmxDzsfDGA9SxFMwGYkCmAtdvDtFxaYP qC/OBupl0doOZsALHfoufvD0cGi4Tp8qAEqsMCU+YjFRroi93sW0mNh+gH4tlh1dEXh8cFwz VaUI7QKvI8yQwG69etV+RcD3MJj+iEMtgufoXott9eyAiRoajODjH4DeYCnY8IKQWYzhXowd XSmRcE4LcNCLvjzbMLnNB0L+4hWGWO4knYPfGEPdGXDNMhOu4RECsRaqRGwoYZscp48VW3Gm mnaLyZktkIQ+caNQslgCFGmQN8mQ4CS2xYm/oXqIEiXSfNeNIYld/uIvTjb2LX8Uv5vu2Bn4 usnjFAwbLxQShm62bo3iKREFUG52ozMTUJzLzA4fC402FKUBjj8dQ+glLfdpeEZP6T2FMSKI 8CaMiWXKj+o1jTBKux/k60lzuyHut5GaInTfZHqg9AithLzDJhi6kW2K+OaJbmzHyiGXGxxH C92sZghVSOPa9zmnqVsu3mNx2wBc0sdirgB3NdX+QoAWl0SiCA95OxXikbYfjXT7aihVbiR4 IwC8doNuwzhi24erycVXWs7NV7N6lhfyYo7vviuwu2fhMTcUnHVfj8ySTF+BdvqqgdEck1xt iG266zWEWepFIy9e9BFLIZrl0vIcMfrrJl7ePHSHfjl5QNoYyLVWn9OFTD08DE0R/+EFOrFM XrxwDRnxJyA9vj7pDvEj/T8oZvkdqf/1119Fjz/CPqEkcXMnkhbfQjGDvNQtT3cIFPskgDi1 njHSnYlMpWtkeFrVaZrWjFDkE4/H63COiftxoASu94wiYyhmfGwXZ36z5fAlCkPh9YjlOh6O Xf8KZ2dxZhG8M5OLqSxcCEXX5v3bc4I3hC4W/KeGuldJTTQyT59gXX8iYdDFWfcIg4K65slC riGY5eRBrCOhPEQeShYEDQTCvi5hTK/uvUuW92bIQlxFpsQwglZtyUU2Md0qOS1nT1EqOAtu c2cQDsk0Yjh6XazYK/JxZpM6fzEb2uN9spBpw6hmRFm6xuafgWF4DVsuu5BPtGpDKyWAtxcv knYTnWLfqe1XuNbpGBO1ZK+YhzGL/2w8UffMzeSLyCRn7ZEjNMklFCjNALFGTsM+C3DC9S7p 9uby5svq6l8TMnOvf8PR/BQn8ErIhKX3XQP3+Uvj7kZycJHFRXC1y1TFlJKEPIkzxbfF3c0d f0oB9yPncPX/AFBLBwhsnvgAeB8AAGqzAABQSwMEFAAIAAgAClVsRAAAAAAAAAAAAAAAAA4A EABuZnNjbGllbnQvcG1uc1VYDADTcSBT03EgU8JqFADLSytOzslMzSvhNDOy0rLS4gIAUEsH CNWOIQsTAAAAEQAAAFBLAwQUAAgACAAKVWxEAAAAAAAAAAAAAAAAEwAQAG5mc2NsaWVudC9w bW5zLnBlcmxVWAwA03EgU9NxIFPCahQAy0srTs7JTM0r4TQzstKy0uICAFBLBwjVjiELEwAA ABEAAABQSwMECgAAAAAAClVsRAAAAAAAAAAAAAAAAA0AEABuZnNjbGllbnQvcWEvVVgMANNx IFPTcSBTwmoUAFBLAwQUAAgACAAKVWxEAAAAAAAAAAAAAAAAEAAQAG5mc2NsaWVudC9xYS83 OThVWAwA03EgU9NxIFPCahQAdVTvT9swEP08/xW3tJpgUpK2aL8oZapKEUjQdbR8GlOWOldi LbGN7bCisf9954TRrqL50sR3fvfu3r22XkO8EDK2OWvBdDSFr0OYo3UwURF8+PSRTscrNFxY hGyhyyyFil5/CZeDyxGmaAoQpS6wROlSJ5QEtQS5tLwQdMJahDBS+sGI29zBHt+HXqd7AFeY wVnqIoozi3eDH4vUokxLhHbnB0OeKwiIiqqcrhxwg6mjG4sHaFN2wAj0Fh1Yl8osNRksReHQ WBZBFHNVlkpG2qis4m7zqMnaPOE58p+Mad9FiBD43mgKh4fTy5NhAMdxhvexrIoCesdvuuwb tD9T3h104Ds8PkIilTOVhKAGeL4IJZUuECgKQhLJosCMSDuTaghMCeES2q7U0ds+4Eq4gPC6 0IMD6L5jLGlo7u2z3wzosdT4DXvl6dl+m4okvsYsOTm/6t9sfQcbmZYboV3fa/YsR6SLOsfj Ev2mUpJVpTZoq8KxP4xlqkyFHLzvsQZhsI1AY/AN/Fc5fk6Inwo3E9oFQQKitJVByLHQ4HDl /Ciss4xnEOwCD1jbVpkiAc+bucLRWqJttVhrVO8NGEVCTC8nM1bDjq8uEv81qM/jypraArWG /8gfNwL5DM/1mvZCVQZoTCFPpSRJSlVJRxyIsSPDDIJ2jgY3qeJKK0NOOp2NLs7Hk3ly+eV6 Mp/Nh/NZMh3Oz+iKvxmvkaK7lNaE6hHvwlvRx/2WG2fBwz+1/+TEUK5ZQigQjo7GMgvVMjwV tH5+CGuVmdIoQQuNL7fMyFAZWg5Ksvp3rVdNUCtBdt6KKO0dbyPrjJC3u6JkRad2Be+9b5fo eP5yxe3QVsld4abmrmhdtLam5PSX06x81GEb42PMWxM67C9QSwcIp7yWk5kCAAAjBQAAUEsD BBQACAAIAApVbEQAAAAAAAAAAAAAAAAUABAAbmZzY2xpZW50L3FhLzc5OC5vdXRVWAwA03Eg U9NxIFPCahQA3ZRLa+MwFIX3/hWHrDobv2LSjigJhcCQRYe26axCFo4tZwTWA+s6tP++soMf lGa8mkKrjS2fz9bR8b16vIOuydSErOIp8RyHV1z/vPHyg5F5uoQ2XMEIwxHUtgoOQgWGVyUa VRU2KwVX5JvS21JaEVrt4X59x6b4boEjp5zbDFr1j9r5AEtdKzJaKPIe7jdrhkXsh37swY11 SimeXw1nsFQJdQQ2aq3lGUL4UtyEzWjhLZepIpFZBqEsuXvgjxLk5korfml9bUhoZf3zAoOH yI8+3YOpNOmxhTj5dA8nXtmxhcX/c1Bwyv5eLoUr+6OvBiOfuK1Lgu/7ULU0UuQMzR86A7i6 dZ9OJV+6d5x+SkuGBO5SSHIgTqWwtNuz1mDjCrsQusJqtdo3WM2xfX7a/P41AqIpIJ4C5h8D lwL4oBa7EJpy/GcIDvheIQzNMGTg+mEihDj5Xin07TiEsJjKYPE1IzifFRlvW9rtcXTAeDsg 3LcEQ4hmawyzQCoKXGSnZNYAUQdE74EkaoG4A+IeEIVtpXknzcdSofWst+e9AVBLBwg5lzHM nwEAAE4HAABQSwMECgAAAAAAClVsRAAAAAAAAAAAAAAAABcAEABuZnNjbGllbnQvcWEvbmZz Y2xpZW50L1VYDADTcSBT03EgU8JqFABQSwMEFAAIAAgAClVsRAAAAAAAAAAAAAAAACQAEABu ZnNjbGllbnQvcWEvbmZzY2xpZW50L21vdW50c3RhdHMucWFVWAwA03EgU9NxIFPCahQA7Vlt c9pIEv4Mv2K+7W4Va+ZVM0OVP/iwnKWCwQd49/YThUEk1JmXQrKT3K+/p0cSNjJyJXuuvdur hDBI89LT093TT3d7kTyu5gnbb7fZMmXr7cMmSxZsu2Ft9mmVfWTLNPuyK8ebi3z2br+dH80N Hc/nU0c5O/2SVkij52h2mFFOx0+23lVWoPNoRTnp2aJd9mJJm/oqy9BVLjq5TTv9uD5ac7RP PmMxk/WiSj5n6jCd5NC+e0jbD+ndC4kdBp4vx3tlu/WCH0tvvp9l84/1mxY8iqNVj7N97YrN dpO85A5aaS/T9t1qs1xn0/UqPVbxs/6Dph82+928um37fnXX3oASxqa71S5ZHivlqbuks1qm P29m6VmWpNlZsnjotFcVRa0qNECepdkse0z26bk4E83GForuNPafWqFLtfbp6l/JuZI2cq1P z543s/V9sjmXxrRm833yYb3aYHb+OPt8HnE8L1b70F0+5/0fZ/tFC5LKtufZfNfKVutki37e 2ifZfrZJz2UrTebnEGMrsD5bLPbngp8Joc7w4/Pegr3wvNvuM+zCi7cD6fvtfHY/RfvPc1JV szH7kHQaQhphtFfNxny2w1mpPeef1XJuW5+y9cN9dm6EbC2yZ6e9C8/82ambDTDZaSzvZ49b sNfapcnDYlu+NhvJY7IhSQprnWHWWaUck14zqbgWTBhlFZNaS81cJJ2SLLLaSmaZEI5pIzln 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 --------------000807020404020508090204-- From kenj@internode.on.net Wed Mar 12 16:47:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AB0F27F57 for ; Wed, 12 Mar 2014 16:47:01 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 428C7AC001 for ; Wed, 12 Mar 2014 14:46:58 -0700 (PDT) X-ASG-Debug-ID: 1394660812-04bdf05dac4fe790001-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id SF42WzHmGsvY0ht4 for ; Wed, 12 Mar 2014 14:46:52 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AusTANnUIFN20adJPGdsb2JhbAANTINBg12EOroZgTYDAQEBATiCWgEBAQQjFUABDAQLGAICBRYLAgIJAwIBAgExFAYNAQcBAbhNdqFKF4EpjTMHgm+BSQEDmXeUPA Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail04.adl6.internode.on.net with ESMTP; 13 Mar 2014 08:16:51 +1030 Message-ID: <5320D5ED.5010504@internode.on.net> Date: Thu, 13 Mar 2014 08:47:25 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] pmmgr build failure on 32-bit Fedora release 20 [was 17] References: <53101471.4000200@internode.on.net> <20140305150207.GB27666@redhat.com> <5317BE58.6020603@internode.on.net> <20140306020106.GA6053@redhat.com> <531EC7C8.3060109@internode.on.net> <20140311120502.GA13756@redhat.com> <531F6B2E.4050602@internode.on.net> <1322230163.25595355.1394572885929.JavaMail.zimbra@redhat.com> <1924983593.25657501.1394585473440.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pmmgr build failure on 32-bit Fedora release 20 [was 17] In-Reply-To: <1924983593.25657501.1394585473440.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1394660812 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3824 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 12/03/14 11:51, Nathan Scott wrote: > > > ----- Original Message ----- >> ----- Original Message ----- >>> [...] >>> Nathan, at your next git pull from my tree you should see these two >>> commits flow, so no need to chase 'em in Frank's fche/i686 branch. > > Little review comment; this bit could be further tidied... > > +# We used to override --target=FOO, but it's better to let the > +# local build distro defaults do their jobs. > pack_pcp : rpmmacros $(SPEC) > DEFS=`grep '^--define' rpmmacros`; \ > eval $(RPMPROG) -ba $$DEFS \ > - --target $(TARGET_CPU)-$(TARGET_VENDOR)-$(TARGET_OS) \ > > That was the last reference to TARGET_CPU and TARGET_VENDOR (all the > way back to configure AFAICT)... they could possibly be removed now? Good catch Nathan. I am testing a change that (a) removes 'em from builddefs (b) stops munging with the (pre-defined) $target_cpu and $build_cpu definitions in configure.in I'll push the commit if this works. From kenj@internode.on.net Wed Mar 12 16:50:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8942D7F57 for ; Wed, 12 Mar 2014 16:50:16 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8594C304053 for ; Wed, 12 Mar 2014 14:50:16 -0700 (PDT) X-ASG-Debug-ID: 1394661014-04cb6c56754d3a10001-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 4Njs0bZaMyPjHpp6 for ; Wed, 12 Mar 2014 14:50:14 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuATAOPVIFN20adJPGdsb2JhbAANTItYuhmBNgMBAQEBOIJbAQEEODAQEQshFg8JAwIBAgExFBMIAQEQuD6iQBeOYxaEIgEDrjM Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail04.adl6.internode.on.net with ESMTP; 13 Mar 2014 08:20:13 +1030 Message-ID: <5320D6B7.3040408@internode.on.net> Date: Thu, 13 Mar 2014 08:50:47 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: Re: [pcp] Community PCP meeting - conference call details - this week! References: <1704915522.25701218.1394596179559.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] Community PCP meeting - conference call details - this week! In-Reply-To: <1704915522.25701218.1394596179559.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1394661014 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3824 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- The agenda is already chockers, but ... I'd like to see us discuss or agree how to move forward on the following additional items: - pmlogger writes ... option for logical record buffer flushing instead of stdio buffer flushing - changes to handle reading truncated archives more gracefully (no fatal errors) - pmlc access control changes - Martins Innus' pmlogger_daily optimization - Frank's archive with mark records performance black hole From nscott@redhat.com Wed Mar 12 19:52:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 97ACF7F6B for ; Wed, 12 Mar 2014 19:52:50 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 14BAFAC001 for ; Wed, 12 Mar 2014 17:52:46 -0700 (PDT) X-ASG-Debug-ID: 1394671960-04cbb054b62e3540001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id X7tPd82bTc5oQatD for ; Wed, 12 Mar 2014 17:52:40 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2D0qetJ007319 for ; Wed, 12 Mar 2014 20:52:40 -0400 Date: Wed, 12 Mar 2014 20:52:40 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <600636444.26375337.1394671960355.JavaMail.zimbra@redhat.com> In-Reply-To: <847504010.26375259.1394671850754.JavaMail.zimbra@redhat.com> Subject: pcp updates: fche, kenj, minnus merges MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: fche, kenj, minnus merges Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: fche, kenj, minnus merges Thread-Index: urfuMw+20PUvospPZHH8Br0EuY29RA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394671960 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3828 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev build/rpm/GNUmakefile | 3 configure | 43 + configure.in | 4 debian/rules | 3 qa/798 | 90 +++ qa/798.out | 99 ++++ qa/GNUmakefile | 2 qa/admin/check-vm | 2 qa/admin/pcp-daily | 4 qa/group | 1 qa/nfsclient/GNUmakefile | 16 qa/nfsclient/mountstats.qa | 203 ++++++++ qa/nfsclient/nonfsmounts.qa | 36 + src/include/builddefs.in | 3 src/libpcp/src/check-statics | 35 - src/libpcp/src/logutil.c | 8 src/libpcp/src/pmns.c | 41 - src/pmdas/nfsclient/GNUmakefile | 6 src/pmdas/nfsclient/Install | 1 src/pmdas/nfsclient/pmdanfsclient.pl | 823 +++++++++++++++++++++++++++++------ src/pmie/examples/GNUmakefile | 8 src/pmmgr/GNUmakefile | 2 22 files changed, 1236 insertions(+), 197 deletions(-) commit 475dc0f7ecbdd0e4ba5ccf713edf0c25a69490f5 Author: Nathan Scott Date: Thu Mar 13 11:48:12 2014 +1100 Updates to the nfsclient PMDA - testing, add into build Small tweaks to test qa/798 as follows: - do early-exit handling like the other tests, such that the test always fails (non-zero exit) if ended early. - removed an (accidental?) re-setting of $script variable - run dbpmda in a loop, allowing multiple mountstats test cases to be fed in easily - add a test case for pmdanfsclient with no NFS mounts Added nfsclient scripts into the build for the next release. commit a3ead8fc1a6d34d9d0e71f559444a44f6ec020ef Author: Martins Innus Date: Thu Mar 13 11:36:58 2014 +1100 Updates to the nfsclient PMDA, readying it for release A series of updates to pmdanfsclient perl code, following up from earlier review as well as adding many new metrics. Additionally, test qa/798 is added to exercise the PMDA, which is easily extensibly with new mountstats files to exercise its various forms. commit ffb61f32ec786bd6149084ecfb81875d0b6e6e63 Author: Nathan Scott Date: Thu Mar 13 09:57:33 2014 +1100 Remove some inappropriate calls to exit(1) in libpcp Several places where libpcp would call exit(1) on error paths in libpcp are replaced by more appropriate error handling. A trivial cleanup or two in the namespace code as well. commit d556868b17d1708f5b68cb05f5718d13b66e07d8 Author: Nathan Scott Date: Thu Mar 13 09:36:08 2014 +1100 Updates to the check-statics libpcp script for getdate changes Add comments to each of the newly added statics for getdate to describe why each is considered thread-safe. Also, found that the yytos symbol was not present in debug builds (without -O2) - Stan points out this generated symbol can be optimized away. commit aecf436b68634afc6a7711e74b992283a52a0bc5 Merge: 24058ff 4bb764e Author: Ken McDonell Date: Wed Mar 12 06:52:20 2014 +1100 Merge branch 'fche/i686' of git://sourceware.org/git/pcpfans into dev commit 24058ff7196f9b105a4f9fa162e804d68c046928 Merge: 5ce8bf2 ee121b7 Author: Ken McDonell Date: Tue Mar 11 20:07:45 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev commit 5ce8bf2f6e26dfb847a6235dbe9abb59c2a5a0cb Author: Ken McDonell Date: Tue Mar 11 20:05:53 2014 +1100 qa/admin/pcp-daily - add a few more VMs commit d53bdd281fe85f3a215f9c4353d85f7d316e75de Author: Ken McDonell Date: Tue Mar 11 20:03:42 2014 +1100 qa/admin/check-vm - devel rpm change for avahi Day zero mistake for rpm packaging only ... it is hiding in avahi-devl not libavahi-devel (the latter does not exist it appears). commit e3a1c8d8690086f49955bb44194b4d1b52c253f1 Author: Ken McDonell Date: Sat Mar 8 18:24:46 2014 +1100 pmie/examples/GNUmakefile - sed -i is not portable -i is not a supported option for sed(1) on my NetBSD QA system ... use the equivalent construct that has worked since 1975. commit 23f5aa2a419089ef62c989fa620942527e0c24c4 Author: Ken McDonell Date: Thu Mar 6 06:10:56 2014 +1100 Rule change for debian python build When building for multiple versions of Python, back-to-back "make installs" will fail, so add "make clean" after each "make install". commit 4bb764eb6a4266a9569c62aec2de5df3903d84b1 Author: Frank Ch. Eigler Date: Fri Feb 28 10:58:42 2014 -0500 rpm building: stop overriding rpmbuild --target=FOO We can trust the distro running rpmbuild to build a self-compatible set of packages. commit 034d85ad6aac383c85fa1a8c372f44bf33174b76 Author: Frank Ch. Eigler Date: Fri Feb 28 10:52:11 2014 -0500 pmmgr: -march=i386 build fix Use -latomic, provided by some versions of gcc, to supply atomic non-builtins for obsolete processors. This allows pmmgr to build on 32-bit fedora despite the pcp build/rpm/GNUmakefile -march=i386 override. From nscott@redhat.com Wed Mar 12 20:02:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 289B27F57 for ; Wed, 12 Mar 2014 20:02:10 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2C602304059 for ; Wed, 12 Mar 2014 18:02:06 -0700 (PDT) X-ASG-Debug-ID: 1394672522-04cb6c56774de1c0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id yeLLwgXLcxaoC5D3 for ; Wed, 12 Mar 2014 18:02:02 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2D1207T008613; Wed, 12 Mar 2014 21:02:00 -0400 Date: Wed, 12 Mar 2014 21:02:00 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Martins Innus Cc: pcp@oss.sgi.com Message-ID: <1993360416.26377806.1394672520559.JavaMail.zimbra@redhat.com> In-Reply-To: <532073E8.9070607@buffalo.edu> References: <52F3A564.4060007@buffalo.edu> <530D0904.2090804@buffalo.edu> <1661706871.16390260.1393364346293.JavaMail.zimbra@redhat.com> <5314EA02.9060906@buffalo.edu> <1369468338.20153383.1393911292559.JavaMail.zimbra@redhat.com> <5318EEA3.8040806@buffalo.edu> <771728214.25616223.1394577170807.JavaMail.zimbra@redhat.com> <532073E8.9070607@buffalo.edu> Subject: Re: [pcp] nfsclient pmda MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] nfsclient pmda Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: nfsclient pmda Thread-Index: hTXlQRfIMvaAozQzOhUooRrDDKsGDA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394672522 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3827 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > Nathan, > > OK, thanks for all the feedback. Attached is hopefully a pmda > ready for inclusion. Looks good! Its merged now. I've updated the test a little too, please check qa/798 in the dev branch of git://oss.sgi.com/pcp/pcp.git - you can also run "./check -g pmda.nfsclient" and that will run all of the nfsclient tests (if ever more are added, or if you don't want to have to remember the test number). Also, just realised there's no pmdanfsclient man page. The perl PMDAs usually use the "pod" facility to do this - do you want to have a look into this Martins? See src/pmdas/kvm/pmdakvm.pl for an example - it's straight forward, we wont need more than that here I expect. Once the pod stuff is in place, a small update to the makefile (see kvm again) is also needed to ensure it becomes part of the pcp packages. > I did my best on a qa test with a canned > mountstats file. Maybe someone with more knowlege on what exactly should > be tested for can add some more tests if necessary. Its unclear to me > exactly why there are "???" instances, but the 716 test shows the same > thing, so is that expected? Very nice, thanks for doing the test. Yes, this is expected - the reason is that dbpmda provides a very direct mapping (one-to-one to PDUs) to the pmcd/pmda interface. For a fetch PDU - pmFetch(3) - we do not necessarily have the instance names available, and only the internal IDs are returned via a fetch. So, in this case, dbpmda will print "???" for those external names. The test exercises the indom lookup later on through, so we know that the mapping works. Its good to keep the order you have there, as we do want to test fetch PDUs arriving before instance PDUs, for example. I think if the instance name lookup happens first, before fetch, dbpmda may be smart enough to print out the names (i.e. it may cache them) ... not sure off the top of my head though. cheers. -- Nathan From kenj@internode.on.net Thu Mar 13 04:21:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BDFD97F7E for ; Thu, 13 Mar 2014 04:21:07 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A85388F8033 for ; Thu, 13 Mar 2014 02:21:04 -0700 (PDT) X-ASG-Debug-ID: 1394702458-04bdf05dac524600001-S8gJnT Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id AYinigimzUAJfnEc for ; Thu, 13 Mar 2014 02:20:59 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ah0UAA54IVN20adJPGdsb2JhbAANTItYuh+BMQMBAQEBOIJbAQEEMgEFMBARCyEWDwkDAgECATEUEwgBARC5A6JWF45jFoQiAQOuMw Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl2.internode.on.net with ESMTP; 13 Mar 2014 19:50:58 +1030 Message-ID: <5321789D.6010105@internode.on.net> Date: Thu, 13 Mar 2014 20:21:33 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: Re: [pcp] Community PCP meeting - conference call details - this week! References: <1704915522.25701218.1394596179559.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] Community PCP meeting - conference call details - this week! In-Reply-To: <1704915522.25701218.1394596179559.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 8bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1394702458 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3836 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- As an FYI, here's the current status of my QA farm. Host PCP CPU Operating System ----------- -------- ------ ------------------ bozo 3.9.1 x86_64 Ubuntu 13.10 (saucy) bozo-vm 3.9.1 x86_64 Ubuntu 13.10 (saucy) bozo-laptop 3.9.1 i686 LinuxMint 15 (olivia) fuji grundy vm00 3.9.1 x86_64 Ubuntu 12.04 (precise) vm01 3.9.1 i686 Ubuntu 12.10 (quantal) vm02 3.9.1 i686 openSUSE 12.1 (Asparagus) vm03 3.9.1 x86_64 Fedora 18 (Spherical Cow) vm04 3.9.1 i586 CentOS 5.10 (Final) vm05 3.9.1 i486 Gentoo 2.0.3 vm06 3.9.1 amd64 FreeBSD 8.2-RELEASE-p9 vm07 3.9.1 x86_64 Debian 6.0.9 vm08 3.9.1 i86pc OpenSolaris 2010.05 snv_134b vm09 3.9.1 i386 NetBSD 5.1.2 vm10 3.9.1 i386 FreeBSD 8.2-RELEASE-p9 vm11 3.9.1 i686 Debian 6.0.9 vm12 3.9.1 i686 Fedora 17 (Beefy Miracle) vm13 3.9.1 i86pc OpenIndiana Development oi_151.1.4 vm14 3.9.1 x86_64 CentOS6.5 (Final) vm15 3.9.1 x86_64 Slackware 13.37.0 vm16 vm18 3.9.1 x86_64 LinuxMint 12 (lisa) vm19 3.9.1 x86_64 openSUSE 12.2 (Mantis) vm20 3.9.1 x86_64 Ubuntu 13.04 (raring) vm21 3.9.1 i686 Debian 7.4 vm22 3.9.1 x86_64 Fedora 19 (Schrödinger’s Cat) vm23 3.9.1 i686 Fedora 20 (Heisenbug) vm24 3.9.1 i686 openSUSE 13.1 (Bottle) From minnus@buffalo.edu Thu Mar 13 10:27:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 14DB27F3F for ; Thu, 13 Mar 2014 10:27:47 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 073E5304043 for ; Thu, 13 Mar 2014 08:27:43 -0700 (PDT) X-ASG-Debug-ID: 1394724452-04cb6c5675510050001-S8gJnT Received: from mtareserve1.acsu.buffalo.edu (mtareserve8.acsu.buffalo.edu [128.205.6.19]) by cuda.sgi.com with ESMTP id 4xZHHJfR5G8DyFbA for ; Thu, 13 Mar 2014 08:27:33 -0700 (PDT) X-Barracuda-Envelope-From: minnus@buffalo.edu X-Barracuda-Apparent-Source-IP: 128.205.6.19 Received: from localmailB.acsu.buffalo.edu (localmailb.acsu.buffalo.edu [128.205.5.200]) by mtareserve1.acsu.buffalo.edu (Postfix) with ESMTP id C79764B7; Thu, 13 Mar 2014 11:27:32 -0400 (EDT) Received: from localmailB.acsu.buffalo.edu (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id C30C4AFFC; Thu, 13 Mar 2014 11:27:32 -0400 (EDT) Received: from localmailB.acsu.buffalo.edu (localhost [127.0.0.1]) by localmailB.acsu.buffalo.edu (Postfix) with ESMTP id DC57EAFF5; Thu, 13 Mar 2014 11:27:31 -0400 (EDT) Received: from smtp.buffalo.edu (smtp1.acsu.buffalo.edu [128.205.5.253]) by localmailB.acsu.buffalo.edu (Prefixe) with ESMTP id C9620AFF4; Thu, 13 Mar 2014 11:27:31 -0400 (EDT) Received: from [128.205.28.209] (slash.eng.buffalo.edu [128.205.28.209]) (Authenticated sender: minnus@buffalo.edu) by smtp.buffalo.edu (Postfix) with ESMTPSA id BD9479B21; Thu, 13 Mar 2014 11:27:31 -0400 (EDT) Message-ID: <5321CE5E.5040609@buffalo.edu> Date: Thu, 13 Mar 2014 11:27:26 -0400 From: Martins Innus User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] nfsclient pmda References: <52F3A564.4060007@buffalo.edu> <530D0904.2090804@buffalo.edu> <1661706871.16390260.1393364346293.JavaMail.zimbra@redhat.com> <5314EA02.9060906@buffalo.edu> <1369468338.20153383.1393911292559.JavaMail.zimbra@redhat.com> <5318EEA3.8040806@buffalo.edu> <771728214.25616223.1394577170807.JavaMail.zimbra@redhat.com> <532073E8.9070607@buffalo.edu> <1993360416.26377806.1394672520559.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] nfsclient pmda In-Reply-To: <1993360416.26377806.1394672520559.JavaMail.zimbra@redhat.com> Content-Type: multipart/mixed; boundary="------------020208010903060407050609" X-PM-EL-Spam-Prob: : 8% X-Barracuda-Connect: mtareserve8.acsu.buffalo.edu[128.205.6.19] X-Barracuda-Start-Time: 1394724453 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3842 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. --------------020208010903060407050609 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Nathan, On 3/12/2014 9:02 PM, Nathan Scott wrote: > Also, just realised there's no pmdanfsclient man page. The perl PMDAs > usually use the "pod" facility to do this - do you want to have a look > into this Martins? See src/pmdas/kvm/pmdakvm.pl for an example - it's > straight forward, we wont need more than that here I expect. Once the > pod stuff is in place, a small update to the makefile (see kvm again) > is also needed to ensure it becomes part of the pcp packages. > Sure, both attached. Shamelessly copied form the kvm files. Martins --------------020208010903060407050609 Content-Type: text/plain; charset=windows-1252; name="nfsclient_make.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nfsclient_make.diff" LS0tIEdOVW1ha2VmaWxlLm9yaWcJMjAxNC0wMy0xMyAxMToyMDozOC43NjczNzg4MDIgLTA0 MDAKKysrIEdOVW1ha2VmaWxlCTIwMTQtMDMtMTMgMTE6MjQ6MTIuNjgyMTgzNzY0IC0wNDAw CkBAIC0yMCw4ICsyMCwxOCBAQAogCiBQTURBRElSCQk9ICQoUENQX1BNREFTX0RJUikvJChJ QU0pCiBMU1JDRklMRVMJPSBJbnN0YWxsIFJlbW92ZSBwbWRhJChJQU0pLnBsCitMRElSVCAg ID0gJChNQU5fUEFHRVMpCiAKLWRlZmF1bHQ6IGNoZWNrX2RvbWFpbgoraWZuZXEgKCQoUE9E Mk1BTiksKQorTUFOX1NFQ1RJT04gPSAxCitNQU5fUEFHRVMgPSBwbWRhJChJQU0pLiQoTUFO X1NFQ1RJT04pCitNQU5fREVTVCA9ICQoUENQX01BTl9ESVIpL21hbiQoTUFOX1NFQ1RJT04p CitlbmRpZgorCitkZWZhdWx0OiBjaGVja19kb21haW4gJChNQU5fUEFHRVMpCisKK3BtZGEk KElBTSkuMTogcG1kYSQoSUFNKS5wbAorICAgICAgICAkKFBPRF9NQUtFUlVMRSkKIAogaW5j bHVkZSAkKEJVSUxEUlVMRVMpCiAKQEAgLTI5LDYgKzM5LDcgQEAKIAkkKElOU1RBTEwpIC1t IDc1NSAtZCAkKFBNREFESVIpCiAJJChJTlNUQUxMKSAtbSA3NTUgSW5zdGFsbCBSZW1vdmUg JChQTURBRElSKQogCSQoSU5TVEFMTCkgLW0gNjQ0IHBtZGEkKElBTSkucGwgJChQTURBRElS KS9wbWRhJChJQU0pLnBsCisJQCQoSU5TVEFMTF9NQU4pCiAKIGRlZmF1bHRfcGNwIDogZGVm YXVsdAogCg== --------------020208010903060407050609 Content-Type: text/plain; charset=windows-1252; name="nfsclient_pod.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nfsclient_pod.diff" LS0tIHBtZGFuZnNjbGllbnQucGwub3JpZwkyMDE0LTAzLTEzIDExOjA1OjI2Ljk2Mjk3MzQ4 NiAtMDQwMAorKysgcG1kYW5mc2NsaWVudC5wbAkyMDE0LTAzLTEzIDExOjE2OjU3LjA0Nzc5 NTUzNCAtMDQwMApAQCAtMTEyNywzICsxMTI3LDU1IEBACiAkcG1kYS0+c2V0X2ZldGNoX2Nh bGxiYWNrKFwmbmZzY2xpZW50X2ZldGNoX2NhbGxiYWNrKTsKIAogJHBtZGEtPnJ1bjsKKwor PXBvZAorCis9aGVhZDEgTkFNRQorCitwbWRhbmZzY2xpZW50IC0gbmZzIGNsaWVudCBzdGF0 aXN0aWNzIHBlcmZvcm1hbmNlIG1ldHJpY3MgZG9tYWluIGFnZW50IChQTURBKQorCis9aGVh ZDEgREVTQ1JJUFRJT04KKworQjxwbWRhbmZzY2xpZW50PiBpcyBhIFBlcmZvcm1hbmNlIE1l dHJpY3MgRG9tYWluIEFnZW50IChQTURBKSB3aGljaCBleHBvcnRzCittZXRyaWMgdmFsdWVz IGZyb20gdGhlIC9wcm9jL3NlbGYvbW91bnRzdGF0cyBpbnRlcmZhY2UgdG8gcHJvdmlkZSBp bmZvcm1hdGlvbgorb24gbmZzIG1vdW50cy4KKworPWhlYWQxIElOU1RBTExBVElPTgorCitJ ZiB5b3Ugd2FudCBhY2Nlc3MgdG8gdGhlIG5hbWVzIGFuZCB2YWx1ZXMgZm9yIHRoZSBuZnNj bGllbnQgcGVyZm9ybWFuY2UKK21ldHJpY3MsIGRvIHRoZSBmb2xsb3dpbmcgYXMgcm9vdDoK KworICAgICAgICAjIGNkICRQQ1BfUE1EQVNfRElSL25mc2NsaWVudAorICAgICAgICAjIC4v SW5zdGFsbAorCitJZiB5b3Ugd2FudCB0byB1bmRvIHRoZSBpbnN0YWxsYXRpb24sIGRvIHRo ZSBmb2xsb3dpbmcgYXMgcm9vdDoKKworICAgICAgICAjIGNkICRQQ1BfUE1EQVNfRElSL25m c2NsaWVudAorICAgICAgICAjIC4vUmVtb3ZlCisKK0I8cG1kYW5mc2NsaWVudD4gaXMgbGF1 bmNoZWQgYnkgcG1jZCgxKSBhbmQgc2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkCitkaXJlY3Rs eS4gIFRoZSBJbnN0YWxsIGFuZCBSZW1vdmUgc2NyaXB0cyBub3RpZnkgcG1jZCgxKSB3aGVu Cit0aGUgYWdlbnQgaXMgaW5zdGFsbGVkIG9yIHJlbW92ZWQuCisKKz1oZWFkMSBGSUxFUwor Cis9b3ZlcgorCis9aXRlbSAkUENQX1BNREFTX0RJUi9uZnNjbGllbnQvSW5zdGFsbAorCitp bnN0YWxsYXRpb24gc2NyaXB0IGZvciB0aGUgQjxwbWRhbmZzY2xpZW50PiBhZ2VudAorCis9 aXRlbSAkUENQX1BNREFTX0RJUi9uZnNjbGllbnQvUmVtb3ZlCisKK3VuZG8gaW5zdGFsbGF0 aW9uIHNjcmlwdCBmb3IgdGhlIEI8cG1kYW5mc2NsaWVudD4gYWdlbnQKKworPWl0ZW0gJFBD UF9MT0dfRElSL3BtY2QvbmZzY2xpZW50LmxvZworCitkZWZhdWx0IGxvZyBmaWxlIGZvciBl cnJvciBtZXNzYWdlcyBmcm9tIEI8cG1kYW5mc2NsaWVudD4KKworPWJhY2sKKworPWhlYWQx IFNFRSBBTFNPCisKK3BtY2QoMSkgYW5kIG5mcyg1KSBhbmQgbW91bnRzdGF0cyg4KS4KKwo= --------------020208010903060407050609-- From kenj@internode.on.net Thu Mar 13 17:21:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 552477F3F for ; Thu, 13 Mar 2014 17:21:33 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id BD6EAAC003 for ; Thu, 13 Mar 2014 15:21:32 -0700 (PDT) X-ASG-Debug-ID: 1394749289-04cbb054b7335a80001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id xzgq5As5xpRQoX8M for ; Thu, 13 Mar 2014 15:21:29 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ah0VAOEuIlN20adJPGdsb2JhbAANTINBiBe7ZAMBAQEBOINZMA0WGAMCAQIBMScGAgEBuR+idBeMb4ILhCIEmXeUPA Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Mar 2014 08:51:13 +1030 Message-ID: <53222F7B.1060606@internode.on.net> Date: Fri, 14 Mar 2014 09:21:47 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - miscellaneous bug fixes and cleanups Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates - miscellaneous bug fixes and cleanups Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1394749289 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3853 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev build/GNUlocaldefs.in | 11 ++-- configure | 2 configure.in | 2 qa/admin/check-vm | 1 src/pmevent/doargs.c | 12 +++-- src/pmie/src/pmie.c | 11 +++- src/pmie/src/pragmatics.c | 10 +++- src/pmlogger/pmnewlog.sh | 104 +++++++++++++++++++++++++++++++------------- src/pmlogger/src/pmlogger.c | 5 ++ src/pmstat/pmstat.c | 12 +++-- 10 files changed, 122 insertions(+), 48 deletions(-) commit 0abf69a2f309792ce0f3d1544cb263c690bf95e7 Author: Ken McDonell Date: Fri Mar 14 09:17:35 2014 +1100 pmlogger_daily - fix problem with pmproxy connections If the pmlogger control file contains a "host" of the form "pmcd_host@some_pmproxy_host", then pmlogger_check works as expected, but pmlogger_daily fails to restart the new pmlogger each night, leaving it to pmlogger_check to fix the next time it runs. The problem was really in pmnewlog ... this commit fixes it. commit ff30d53b7b554e485439e8864dfb4906aec3a724 Author: Ken McDonell Date: Fri Mar 14 09:16:38 2014 +1100 qa/admin/check-vm - need python-ctypes for some builds commit bf36baa90e3ebea5ef7441c263c8673f3c8bc902 Author: Ken McDonell Date: Thu Mar 13 15:36:37 2014 +1100 improved error handling - pmGetContextHostName() usage In a drive-by code review, I spotted a use of pmGetContextHostName() with poor error handling ... an error here returns an empty string which may be OK, but when it is not, we should die right there, not hope vainly that some latter check will detect this and report something that is not obviously related. Checked all the code and found several dodgey uses in a similar vein, so hardened 'em all up. commit c49b8b1002c4f6c41cd90b1936290965e741ddd5 Author: Ken McDonell Date: Thu Mar 13 15:09:29 2014 +1100 configure changes - retire TARGET_VENDOR, TARGET_CPU, BUILD_VENDOR, ... Retire TARGET_VENDOR, TARGET_CPU, BUILD_VENDOR, BUILD_CPU and BUILD_OS from the PCP build infrastructre as they are no longer used. Also stop modifying $build_cpu and $vendor_cpu in configure ... this seems unnecessary and maybe even dangerous. From nscott@redhat.com Thu Mar 13 18:17:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0F2547F50 for ; Thu, 13 Mar 2014 18:17:08 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id F03048F804B for ; Thu, 13 Mar 2014 16:17:04 -0700 (PDT) X-ASG-Debug-ID: 1394752623-04cbb054b8338590001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id YxoCNDAm5wnWqf7s for ; Thu, 13 Mar 2014 16:17:03 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2DNGv1F016735; Thu, 13 Mar 2014 19:16:57 -0400 Date: Thu, 13 Mar 2014 19:16:57 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <2137259241.27155885.1394752617593.JavaMail.zimbra@redhat.com> In-Reply-To: <53222F7B.1060606@internode.on.net> References: <53222F7B.1060606@internode.on.net> Subject: Quick release update (was Re: [pcp] pcp updates - miscellaneous bug fixes and cleanups) MIME-Version: 1.0 X-ASG-Orig-Subj: Quick release update (was Re: [pcp] pcp updates - miscellaneous bug fixes and cleanups) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Quick release update (was Re: [pcp] pcp updates - miscellaneous bug fixes and cleanups) Thread-Index: BfZEmc/li1eUAdkVJG1Jh7ngdS0Czg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1394752623 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3853 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Ken & all, Just a quick note, following up on one point from todays call - the point release we had tentatively set for today, will be delayed till Wed 19th while we get our act together. :) By we, I mean me ... the common options code is not finished, and there's some more reviews & merges to be done yet. Also... ----- Original Message ----- > Changes committed to git://oss.sgi.com/kenj/pcp.git dev > [...] > improved error handling - pmGetContextHostName() usage > > In a drive-by code review, I spotted a use of pmGetContextHostName() > with poor error handling ... an error here returns an empty string While driving-by your drive-by, it occurs to me a pmGetContextHostName_r could be a sensible addition to the library. Anyone want to tackle this? We have a libpcp exports file version bump planned this release, so now is a good time to piggyback on that. I'll take it on, if noone claims it it in the meantime, or points out any obvious flaws in the idea. ;) cheers. -- Nathan From nscott@redhat.com Thu Mar 13 19:22:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8BDF07F52 for ; Thu, 13 Mar 2014 19:22:44 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 640258F808F for ; Thu, 13 Mar 2014 17:22:43 -0700 (PDT) X-ASG-Debug-ID: 1394756556-04cb6c5675530670001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id tzU06QFKpN9Qi1CU for ; Thu, 13 Mar 2014 17:22:36 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2E0MaCT017412 for ; Thu, 13 Mar 2014 20:22:36 -0400 Date: Thu, 13 Mar 2014 20:22:36 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <788855736.27173178.1394756556393.JavaMail.zimbra@redhat.com> In-Reply-To: <698642317.27173082.1394756516451.JavaMail.zimbra@redhat.com> Subject: pcp updates: minnus + kenj MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: minnus + kenj Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: minnus + kenj Thread-Index: C4Il0Yc93Utn2io5cPPXtO83IDvZ9Q== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394756556 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3856 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev build/GNUlocaldefs.in | 11 ++- configure | 2 configure.in | 2 qa/admin/check-vm | 1 src/pmdas/nfsclient/.gitignore | 5 + src/pmdas/nfsclient/GNUmakefile | 13 ++++ src/pmdas/nfsclient/pmdanfsclient.pl | 52 +++++++++++++++++ src/pmevent/doargs.c | 12 +++- src/pmie/src/pmie.c | 11 +++ src/pmie/src/pragmatics.c | 10 +++ src/pmlogger/pmnewlog.sh | 104 +++++++++++++++++++++++++---------- src/pmlogger/src/pmlogger.c | 5 + src/pmstat/pmstat.c | 12 ++-- 13 files changed, 191 insertions(+), 49 deletions(-) commit b6fe37e5a8ec2f1d5a0cf13b0ac6c845fd6fbe42 Author: Nathan Scott Date: Fri Mar 14 11:01:03 2014 +1100 Add a .gitignore file for generated pmdanfsclient man page commit cb19c6b68f8531351db5971e6bb869cf570bd760 Author: Martins Innus Date: Fri Mar 14 10:57:12 2014 +1100 Add a new man page for the nfsclient PMDA. commit 7de52b902a851f4be46eb02b4592399e7888816a Merge: 0c0d58c 0abf69a Author: Nathan Scott Date: Fri Mar 14 10:40:54 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/kenj/pcp into dev commit 0abf69a2f309792ce0f3d1544cb263c690bf95e7 Author: Ken McDonell Date: Fri Mar 14 09:17:35 2014 +1100 pmlogger_daily - fix problem with pmproxy connections If the pmlogger control file contains a "host" of the form "pmcd_host@some_pmproxy_host", then pmlogger_check works as expected, but pmlogger_daily fails to restart the new pmlogger each night, leaving it to pmlogger_check to fix the next time it runs. The problem was really in pmnewlog ... this commit fixes it. commit ff30d53b7b554e485439e8864dfb4906aec3a724 Author: Ken McDonell Date: Fri Mar 14 09:16:38 2014 +1100 qa/admin/check-vm - need python-ctypes for some builds commit bf36baa90e3ebea5ef7441c263c8673f3c8bc902 Author: Ken McDonell Date: Thu Mar 13 15:36:37 2014 +1100 improved error handling - pmGetContextHostName() usage In a drive-by code review, I spotted a use of pmGetContextHostName() with poor error handling ... an error here returns an empty string which may be OK, but when it is not, we should die right there, not hope vainly that some latter check will detect this and report something that is not obviously related. Checked all the code and found several dodgey uses in a similar vein, so hardened 'em all up. commit c49b8b1002c4f6c41cd90b1936290965e741ddd5 Author: Ken McDonell Date: Thu Mar 13 15:09:29 2014 +1100 configure changes - retire TARGET_VENDOR, TARGET_CPU, BUILD_VENDOR, ... Retire TARGET_VENDOR, TARGET_CPU, BUILD_VENDOR, BUILD_CPU and BUILD_OS from the PCP build infrastructre as they are no longer used. Also stop modifying $build_cpu and $vendor_cpu in configure ... this seems unnecessary and maybe even dangerous. From nscott@redhat.com Fri Mar 14 01:29:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 724787F54 for ; Fri, 14 Mar 2014 01:29:46 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5E423304048 for ; Thu, 13 Mar 2014 23:29:43 -0700 (PDT) X-ASG-Debug-ID: 1394778570-04cbb054b8349430001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id omEK03a7uegQmoXm for ; Thu, 13 Mar 2014 23:29:30 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2E6TT2W008442 for ; Fri, 14 Mar 2014 02:29:29 -0400 Date: Fri, 14 Mar 2014 02:29:29 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <997027451.27304311.1394778569903.JavaMail.zimbra@redhat.com> In-Reply-To: <1005124641.27304165.1394778494430.JavaMail.zimbra@redhat.com> Subject: pcp updates: common getopts (wip) MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: common getopts (wip) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: common getopts (wip) Thread-Index: dPebLW85Qswz3WXughzinpcZ/d9iPw== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1394778570 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3864 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/nathans/pcp.git dev man/man3/pmgetcontexthostname.3 | 24 ++++ qa/075 | 5 qa/075.out.8 | 213 ++++++++++++++++++++++++++++++++++++++++ qa/145 | 8 + qa/207 | 5 qa/src/getoptions.c | 6 + src/include/pcp/impl.h | 11 ++ src/include/pcp/pmapi.h | 35 +++--- src/libpcp/src/check-statics | 38 +++---- src/libpcp/src/context.c | 34 +++--- src/libpcp/src/exports | 8 + src/libpcp/src/getopt.c | 70 +++++++------ src/pmclient/pmclient.c | 10 + src/pminfo/pminfo.c | 6 - src/pmprobe/pmprobe.c | 17 +-- src/pmval/pmval.c | 94 ++++++++--------- 16 files changed, 441 insertions(+), 143 deletions(-) commit db45d643202851bb85f455ace7884296e35ba298 Author: Nathan Scott Date: Fri Mar 14 17:26:07 2014 +1100 Update to pmGetOptions interfaces, towards QA cleanliness Address a plethora of issues, particularly in pmval which has some pathological cases. In particular, pmval allows the use of metric names via pmParseMetricSpec which can introduce new sources of metrics after -a/-h/-L parsing. This requires new modes of interfacing to the option parsing code, delaying the reporting of errors until well after argument parsing. Furthermore, its -U option acts like -a, introducing archives in the middle of other options - shows a need for a way to do this in general, which is now added into pmGetOptions. Bunch of small, unrelated bug fixes. And added a thread-safe pmGetContextHostName_r variant. From kenj@internode.on.net Sun Mar 16 16:44:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CABB07F53 for ; Sun, 16 Mar 2014 16:44:24 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 49662AC004 for ; Sun, 16 Mar 2014 14:44:21 -0700 (PDT) X-ASG-Debug-ID: 1395006255-04cbb054b73f2400001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id NrRys0W95svVpZf6 for ; Sun, 16 Mar 2014 14:44:16 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApMBAGYaJlN20adJ/2dsb2JhbAANS4NBxAiEGDANFhgDAgECAT8ZBgIBAbczonMXjwWEIgSuNg Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Mar 2014 08:14:14 +1030 Message-ID: <53261B4D.3020206@internode.on.net> Date: Mon, 17 Mar 2014 08:44:45 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1395006255 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3968 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev debian/libpcp3-dev.install | 1 man/man3/pmgetcontexthostname.3 | 26 +++++++- qa/786 | 40 +++++++++++++ qa/786.out | 84 +++++++++++++++++++++++++++ qa/group | 1 qa/src/GNUlocaldefs | 2 qa/src/getcontexthost.c | 121 ++++++++++++++++++++++++++++++++++++++++ src/include/pcp/pmapi.h | 5 - src/libpcp/src/context.c | 36 ++++++----- src/libpcp/src/exports | 5 + src/libpcp/src/spec.c | 49 ++++++++++++---- src/python/GNUmakefile | 2 12 files changed, 338 insertions(+), 34 deletions(-) commit b2779adc04ab9967de1a494d744f30f0c5c7e6e5 Author: Ken McDonell Date: Mon Mar 17 08:36:41 2014 +1100 debian packaging - add pmGetContextHostName_r to man page manifest commit 2f6892051ba5b406b1b9e36c6e8061a165e76dc0 Author: Ken McDonell Date: Sun Mar 16 17:53:02 2014 +1100 libpcp - fix bug in __pmUnparseHostSpec pmDupContext() was failing for local: and unix: contexts. Root cause was incorrect values being return in these cases from __pmUnparseHostSpec(). commit f5d5f2023eed147d7185cd971fd5d229fdb13d71 Author: Ken McDonell Date: Sun Mar 16 17:52:10 2014 +1100 libpcp - add pmGetContextHostName_r commit bd87c92ebc98cc95583745dd459fc6c34ccbb0d8 Author: Ken McDonell Date: Sun Mar 16 17:50:34 2014 +1100 qa/786 (new) - exercise pmGetContextHostName and pmGetContextHostName_r commit 08446e09a4a5960fcf24362e5754b1ae8ebcdae6 Author: Ken McDonell Date: Sun Mar 16 17:44:08 2014 +1100 python makefile - avoid env pollution Take better control of the local $(ENV) so it is not inherited from environment ... this broke the build on one machine. From kenj@internode.on.net Sun Mar 16 21:23:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 574847F7D for ; Sun, 16 Mar 2014 21:23:11 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id D5F82AC002 for ; Sun, 16 Mar 2014 19:23:07 -0700 (PDT) X-ASG-Debug-ID: 1395022982-04cbb054b63fca60001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id rrjKEdTiHadeo2EX for ; Sun, 16 Mar 2014 19:23:02 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApMBABZcJlN20adJ/2dsb2JhbAANTMdIg1hAPRYYAwIBAgFLDQgBAbc+on4XkycErjY Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Mar 2014 12:52:46 +1030 Message-ID: <53265C95.1080304@internode.on.net> Date: Mon, 17 Mar 2014 13:23:17 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: PCP Mailing List Subject: Seeking rpmbuild help Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: Seeking rpmbuild help Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1395022982 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3976 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Makepkgs used to work just fine on my sgi ia64 platform running SUSE Linux Enterprise Server 11. But at some point over the last 12 months (I am guessing) it has all gone sour ... and now Makepgs dies with this in the tail of the Logs/pcp file ... Finding Provides: /usr/lib/rpm/find-provides pcp Finding Requires: /home/kenj/src/pcp/pcp-3.9.1/build/rpm/filter-requires -v suse -f 0 -r 0 /usr/lib/rpm/find-requires pcp Finding Supplements: /usr/lib/rpm/find-supplements pcp Provides: cmmv.so()(64bit) cpmapi.so()(64bit) cpmda.so()(64bit) cpmgui.so()(64bit) cpmi.so()(64bit) Requires(rpmlib): rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Requires: libc.so.6.1()(64bit) libc.so.6.1(GLIBC_2.2)(64bit) libc.so.6.1(GLIBC_2.3.4)(64bit) libc.so.6.1(GLIBC_2.4)(64bit) libpcp_gui.so.2()(64bit) libpcp_import.so.1()(64bit) libpcp_mmv.so.1()(64bit) libpcp_pmda.so.3()(64bit) libpcp_pmda.so.3(PCP_PMDA_3.0)(64bit) libpcp.so.3()(64bit) libpcp.so.3(PCP_3.0)(64bit) libpthread.so.0()(64bit) libpython2.6.so.1.0()(64bit) Checking for unpackaged file(s): /usr/lib/rpm/check-files /tmp/pcp-build-29151 Checking for unpackaged file(s): /usr/lib/rpm/check-files /tmp/pcp-build-29151 RPM build errors: Could not open %files file /home/kenj/src/pcp/pcp-3.9.1/libs_files.rpm: No such file or directory make[1]: *** [pack_pcp] Error 1 Can anyone suggest what's wrong here, or what on earth I can provide in the way of additional information that might help shed light on the failure? My other SuSE-related builds (openSuSE not SLES, 32-bit intel not ia64) are all working. From nscott@redhat.com Sun Mar 16 21:31:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8F3E37F80 for ; Sun, 16 Mar 2014 21:31:55 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6B4098F8035 for ; Sun, 16 Mar 2014 19:31:55 -0700 (PDT) X-ASG-Debug-ID: 1395023513-04cbb054b73fcf20001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id CgCM30u0FHV6KYtt for ; Sun, 16 Mar 2014 19:31:53 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2H2Vm00002494; Sun, 16 Mar 2014 22:31:48 -0400 Date: Sun, 16 Mar 2014 22:31:48 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: PCP Mailing List Message-ID: <618243578.269056.1395023508317.JavaMail.zimbra@redhat.com> In-Reply-To: <53265C95.1080304@internode.on.net> References: <53265C95.1080304@internode.on.net> Subject: Re: [pcp] Seeking rpmbuild help MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] Seeking rpmbuild help Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Seeking rpmbuild help Thread-Index: Em+ncoUUw0SKSayHDWHtafGtmK4QRg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395023513 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3976 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Ken, ----- Original Message ----- > Makepkgs used to work just fine on my sgi ia64 platform running > SUSE Linux Enterprise Server 11. > > But at some point over the last 12 months (I am guessing) it has all > gone sour ... and now Makepgs dies with this in the tail of the Logs/pcp > file ... > > RPM build errors: > Could not open %files file > /home/kenj/src/pcp/pcp-3.9.1/libs_files.rpm: No such file or directory > make[1]: *** [pack_pcp] Error 1 > > Can anyone suggest what's wrong here, or what on earth I can provide in > the way of additional information that might help shed light on the failure? It will be some unexpected interaction between pcp.spec.in and the makefiles (and/or the configure paths). In particular, if the %install section of pcp.spec.in initially produces an empty set of files for "libs_files" - see lines 398 and 401 - then it will fail in the way you're observing (I think) due to the awk at line 461 never creating libs_files.rpm ... could be a /usr/lib32 vs /usr/lib vs /usr/lib64 issue? cheers. -- Nathan From kenj@internode.on.net Mon Mar 17 00:30:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EEA367F8A for ; Mon, 17 Mar 2014 00:30:11 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B13F88F8033 for ; Sun, 16 Mar 2014 22:30:11 -0700 (PDT) X-ASG-Debug-ID: 1395034205-04bdf05daa632460001-S8gJnT Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id tkxWvH3rdnAfrIdJ for ; Sun, 16 Mar 2014 22:30:05 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsZAACHJlN20adJPGdsb2JhbAANTINBg12EOrpHgSwDAQEBATiCWgEBAQQjFUABDAQLGAICBRYLAgIJAwIBAgExFAYNAQcBAbcfdqIKF4EpjT8Hgm+BSQEDmXiUPg Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl2.internode.on.net with ESMTP; 17 Mar 2014 16:00:04 +1030 Message-ID: <53268886.5060109@internode.on.net> Date: Mon, 17 Mar 2014 16:30:46 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: PCP Mailing List Subject: Re: [pcp] Seeking rpmbuild help References: <53265C95.1080304@internode.on.net> <618243578.269056.1395023508317.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] Seeking rpmbuild help In-Reply-To: <618243578.269056.1395023508317.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1395034205 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3980 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 17/03/14 13:31, Nathan Scott wrote: > Hi Ken, > > ----- Original Message ----- >> Makepkgs used to work just fine on my sgi ia64 platform running >> SUSE Linux Enterprise Server 11. >> >> But at some point over the last 12 months (I am guessing) it has all >> gone sour ... and now Makepgs dies with this in the tail of the Logs/pcp >> file ... >> >> RPM build errors: >> Could not open %files file >> /home/kenj/src/pcp/pcp-3.9.1/libs_files.rpm: No such file or directory >> make[1]: *** [pack_pcp] Error 1 >> >> Can anyone suggest what's wrong here, or what on earth I can provide in >> the way of additional information that might help shed light on the failure? > > It will be some unexpected interaction between pcp.spec.in and the makefiles > (and/or the configure paths). > > In particular, if the %install section of pcp.spec.in initially produces an > empty set of files for "libs_files" - see lines 398 and 401 - then it will > fail in the way you're observing (I think) due to the awk at line 461 never > creating libs_files.rpm ... could be a /usr/lib32 vs /usr/lib vs /usr/lib64 > issue? OK thanks. In pcp.spec.in there is this ... %ifarch ia64 x86_64 ppc64 s390x sed -i -e 's/usr\/lib\//usr\/lib64\//' libs_files sed -i -e 's/usr\/lib\//usr\/lib64\//' devel_files %endif And indeed libs_files contains /usr/lib64 paths ... but on this platform there is NO /usr/lib64 directory. So is ia64 in the list above triggered by a real use case (in which case we'll need some conditional code) or a guess at the right thing to do for ia64? I replaced the %ifarch block above with %ifarch x86_64 ppc64 s390x sed -i -e 's/usr\/lib\//usr\/lib64\//' libs_files sed -i -e 's/usr\/lib\//usr\/lib64\//' devel_files %endif %ifarch ia64 %if "%{_vendor}" != "suse" sed -i -e 's/usr\/lib\//usr\/lib64\//' libs_files sed -i -e 's/usr\/lib\//usr\/lib64\//' devel_files %endif %endif and fixed the python-ctypes Requires conditional that was broken for every vendor except RedHat, and bingo! Host PCP CPU Operating System ----------- -------- ------ ------------------ grundy 3.9.1 ia64 SUSE SLES11 SP1 and qa check -g python passes mostly (seems like we need curses.py which is not installed on this machine) and qa check -g sanity almost passes (2 failures, sigh) From kenj@internode.on.net Mon Mar 17 01:15:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CC32D7F8B for ; Mon, 17 Mar 2014 01:15:00 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id AC1B88F8033 for ; Sun, 16 Mar 2014 23:14:57 -0700 (PDT) X-ASG-Debug-ID: 1395036892-04cb6c56755fa7d0001-S8gJnT Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id j2Fs7IqbCnBacGbw for ; Sun, 16 Mar 2014 23:14:52 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsoZALORJlN20adJPGdsb2JhbAANTINBiBe7dAMBAQEBOIMZQDANFhgDAgECATEnBgIBAbcmowIXjwWEIgSuNg Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl2.internode.on.net with ESMTP; 17 Mar 2014 16:44:51 +1030 Message-ID: <53269305.6000805@internode.on.net> Date: Mon, 17 Mar 2014 17:15:33 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - suse ia64 changes Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp updates - suse ia64 changes Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1395036892 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3981 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev build/GNUmakefile | 1 + build/rpm/pcp.spec.in | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) commit d03e715be65bc76d854dac6c00094013e4f2b89d Author: Ken McDonell Date: Mon Mar 17 17:13:58 2014 +1100 pcp.spec.in - ia64 and python-ctypes changes Don't use lib64 for SuSE ia64 builds. Fix conditional for python-ctypes so it only applies to RedHat builds. commit bd1d4f76675dae9aaf285afb96d2a553a02d1d38 Author: Ken McDonell Date: Mon Mar 17 15:48:39 2014 +1100 build/GNUmakefile - be a little more totalitarian When building after a build failure blow away the previous corpse unconditionally. From nscott@redhat.com Mon Mar 17 02:17:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 70F807F8B for ; Mon, 17 Mar 2014 02:17:03 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 443CD8F8033 for ; Mon, 17 Mar 2014 00:17:00 -0700 (PDT) X-ASG-Debug-ID: 1395040617-04bdf05dac6360e0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id blcU09xYu1MuUUOq for ; Mon, 17 Mar 2014 00:16:58 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2H7Gvel013849 for ; Mon, 17 Mar 2014 03:16:57 -0400 Date: Mon, 17 Mar 2014 03:16:57 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <69022709.338111.1395040617166.JavaMail.zimbra@redhat.com> In-Reply-To: <181660187.318596.1395039778979.JavaMail.zimbra@redhat.com> Subject: PCP developers meeting minutes - 21st March MIME-Version: 1.0 X-ASG-Orig-Subj: PCP developers meeting minutes - 21st March Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP developers meeting minutes - 21st March Thread-Index: cU73TF+QfdyteVSrQIS4/JGs77Y/5w== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395040618 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3982 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi all, Below are all of my notes and everything else I could remember after last weeks call. I've also merged in all the notes that Ken sent through too. If there's anything I've missed or have misunderstood from the call, please send follow-up - thanks! At the end of the call we discussed frequency of the call. It is generally thought we should hold them a bit more often, but not too much, given the timezone challenges - perhaps every 2, 3 or 4 months. So I'll tee the next one up around June-ish. cheers. =3D=3D Attendees Dave Brolley Frank Ch. Eigler Ken McDonell Lukas Berk Martins Innus Nathan Scott Peter Evans =3D=3D General build/release topics - build processes - git-tar vs make src-link o planning to tackle this issue in next point release (nathans) which will remove the double handling in configure/build that packaging builds via Makepkgs induce o no objections provided modified files are included (new files likely to need add - thats ok) - qa .out files vs pcp releases o issue of qa tests requiring multiple output files raised, and all agreed that nowadays we can do away with the multiple out files (for pcp-version-difference .out files only) o still need then general mechanism for other situations, and the notrun mechanism still needs to exist too. - pcp-gui + pcp-doc + pcp -> tree merge planning o planning to tackle this issue in next point release (nathans) which will allow more aggressive enabling of new features in pmchart & other pcp-gui tools (eg common option handling). It also will reduce build/release time. o merge pcp and pcp-gui trees =E2=80=A6 no pushback, needs conditional building for platforms without any Qt / too-old-Qt. - release schedule - once-a-month useful? sustainable? o [nathans] seems to be working well, good balance between the frequency of release, amount of code change, and time spent doing releases & QA. o [fche] advocating fewer releases - systemtap releases less often for example, and it does weekly Fedora rawhide snapshots. o [kenj] confidence from QA coverage, and also seems to think the current frequency is working OK. o general vibe was to continue doing releases on current schedule (monthly, mid-month), with flexibility where need to increase the time. o nathans mentions next release will slip half a week to give a bit more time for his own dev work, more reviews/merges, more QA o kenj suggests that nathans send out mail mid-cycle as to whether we're still tracking for the initially planned dates - email to the list should do the trick, try it for next couple of releases. - code reviews o nathans seeking more people to be doing code reviews, this is a big time sink and would like to see this task (which is at times very time consuming & not-fun-at-all) shared around more. =3D=3D Archive logging topics - pmlogger writes and logical record buffers o fche has documented the archive format =E2=80=A6 see pcp-archive(5) o fche pointed out existing unbuffered-writes option to pmlogger o writes aligned to logical record structure =E2=80=93 does the =E2=80= =93u option already do this? and if so, how does this get included in the pmlogger_check/pmlogger_daily circus? [kenj] o nathans mentions that there are few guarantees re atomicity of write(2) between processes, we just need to deal with the fact that reader tools will see incomplete appending of archives. o needs to be dealt with below the PMAPI [kenj & nathans] - truncated archives o there is no real error here, everything is OK up to the end of the previous record, and there is no missing data that can be recovered for the truncated (last) record [kenj] o when reading forward =E2=80=93 return PM_ERR_EOL instead of PM_ERR_L= OGREC (which still makes sense when posn+header len is inside file size, but trailer len not found to be correct) [kenj] o when moving to the end of the file to read backwards, need to read serially to find the logical EOF if the physical EOF does not smell right [kenj] - pcp_daily pending items [action kenj] o martins don=E2=80=99t merge option (for easier rsync) o one archive don=E2=80=99t run pmlogextract optimization o host@host fix (really pmnewlog) - libpcp pending items [action kenj] o work ongoing with fche archive with mark records performance issue [kenj] o believed to be a libpcp issue, pmlogextract/merge not to blame, the archive appears to have been simply created through a great many (valid) log merges. - pmlc access control changes o kenj to distribute a revised access control matrix for all pmlc commands, and then implement this o further discussion around af_unix sockets, nathans pointed brolley toward existing libpcp interface (__pmServerSetLocalCreds) taking a file descriptor and a hash, can be used here too. =20 - path toward grand-unified archive+live capability - tail =E2=80=93f like functionality o =E2=80=A6 -u solves part of it, but more thought needed on how clien= ts would (a) synchronize with pmlogger @ EOF, and (b) deal with time semantics change from client-driven to pmlogger-defined (remember interp @ 5sec intervals may be very bursty if pmlogger is logging the metric at 5min intervals) [kenj] - virtually-glue-archives-together o automated support for a family of related archives =E2=80=A6 suggest= ion extending pmNewContext to allow the second argument when using PM_CONTEXT_ARCHIVE to be a directory (as well as file) [fche] =C2=A7 only if all archives in dir for the same host =C2=A7 only if all archives for disjoint time intervals =C2=A7 only if metadata consistent across all archives =C2=A7 need to merge metadata, rework for temporal index, handle archive switching similar to volume switching (.0 etc files are really virtual volumes of the one [concatenated] archive) =C2=A7 need to consider how one handles big temporal gaps so client= s can be smarter [nathans concern] =E2=80=A6 maybe some sort of varian= t to the record that would allow a client to skip forward or backward over the gap and resume - would "it" require new context type? o yes, to solve both the live/archive transition and multiple log aspects well [nathans] o general concerns expressed about overloading / shoe-horning functionality into existing context types when we clearly will need a new context type eventually [nathans] o fche suggests continual addition of code until nathans complains during code review that its going too far is a Just Fine option. o not surprisingly, nathans remains non-comittal. ;) o all in agreement that the multiple-archive experimentation via directory-to-pmNewContext concept is a good way to move that aspect forward, and is highly likely to be generally useful. - acceptability of server/proxy process for full capability? o deferred discussion until after further analysis/experimentation =3D=3D Data integrity - whither the fche/fsync patches? o revisited review comments - nathans wants a well-thought-out API that tackles the meatier part of the problem (interaction between sync and rename); not content with a static inline in impl.h nor anything that unconditionally adds fsync's to client code paths o perhaps move attention from library to tools that need to be very careful, e.g. pmlogger_daily before culling inputs [kenj] o pmlogrewrite =E2=80=93i seems particularly exposed [kenj to investig= ate] - streamable archive format? o discussion deferred until further experience gained with unified context concepts gained (via experimentation and smaller chunks) =3D=3D Supported platforms - is windows status quo (mingw) going anywhere? - worth trying cygwin (posix) builds again? o in general, native code and MinGW has proven to be important from the Windows journey so far [nathans & kenj] o fche wonders if revisiting Cygwin will help keep the Windows port up to date. o nathans states that from experience so far (Aconex, SGI CXFS) a Cygwin PCP is not what users want, so that doesn't really help. o nathans suggests the Fedora-mingw cross compilation project is well suited to our needs; but a lack of time and helpers to keep the existing port up-to-date holds us back. o kenj points out as long as new code is conditionally enabled (as tends to be required, for older *nix platforms anyway), keeping it going should not be that difficult - just need to get it to build once more. o fche mentioned it also needs to be tested, not just built (wrt cross-compilation) - which unixes/distros are of interest? release binaries for them? o reviewed each of the binary platforms from oss.sgi.com Downloads. - how do we share build/testing load? - how to gather evidence about compatibility assumptions - how to entice distro reps into presence in pcp community? o no good answers to any of these questions. o everyone writing code should be doing testing [nathans & kenj] o the main load-sharing needed is code-review-helpers [nathans] =3D=3D Anything else? - pevans mentioned a PCP demo (pmchart) would be given by Red Hat folks at an upcoming SAS conference, which is great to hear! From noreply@release.debian.org Mon Mar 17 11:39:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 69DCB7F99 for ; Mon, 17 Mar 2014 11:39:31 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 58C6B304043 for ; Mon, 17 Mar 2014 09:39:28 -0700 (PDT) X-ASG-Debug-ID: 1395074361-04cb6c567661e3a0001-S8gJnT Received: from picconi.debian.org (picconi.debian.org [5.153.231.3]) by cuda.sgi.com with ESMTP id nFPbLt9alsgk6ZR8 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Mon, 17 Mar 2014 09:39:22 -0700 (PDT) X-Barracuda-Envelope-From: noreply@release.debian.org X-Barracuda-Apparent-Source-IP: 5.153.231.3 Received: from franck.debian.org ([138.16.160.12]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by picconi.debian.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1WPaZL-00053w-6M for pcp-gui@packages.debian.org; Mon, 17 Mar 2014 16:39:19 +0000 Received: from release by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WPaZE-00087A-Kc; Mon, 17 Mar 2014 16:39:12 +0000 From: Debian testing watch Precedence: bulk X-Trille: 0.120315.1711 Subject: pcp-gui 1.5.13 MIGRATED to testing X-Testing-Watch-Package: pcp-gui X-ASG-Orig-Subj: pcp-gui 1.5.13 MIGRATED to testing X-Testing-Watch-Version: 1.5.13 To: pcp-gui@packages.debian.org Message-Id: Sender: Release Managers Date: Mon, 17 Mar 2014 16:39:12 +0000 Delivered-To: pcp-gui@packages.debian.org X-Barracuda-Connect: picconi.debian.org[5.153.231.3] X-Barracuda-Start-Time: 1395074362 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.3994 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header FYI: The status of the pcp-gui source package in Debian's testing distribution has changed. Previous version: 1.5.12 Current version: 1.5.13 -- This email is automatically generated once a day. As the installation of new packages into testing happens multiple times a day you will receive later changes on the next day. See http://release.debian.org/testing-watch/ for more information. From nscott@redhat.com Tue Mar 18 02:24:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 00F5E7F76 for ; Tue, 18 Mar 2014 02:24:36 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id C3AE5304032 for ; Tue, 18 Mar 2014 00:24:32 -0700 (PDT) X-ASG-Debug-ID: 1395127471-04cb6c567664c4a0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 6p6Cpvk0mfE7UdlJ for ; Tue, 18 Mar 2014 00:24:31 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2I7OUpN015747 for ; Tue, 18 Mar 2014 03:24:30 -0400 Date: Tue, 18 Mar 2014 03:24:30 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <985049842.1228400.1395127470758.JavaMail.zimbra@redhat.com> In-Reply-To: <1695992048.1228252.1395127418067.JavaMail.zimbra@redhat.com> Subject: pcp updates: getopts (done, merge pending) MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: getopts (done, merge pending) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: getopts (done, merge pending) Thread-Index: qf/GcsbDij9vcyANUIdID5gsrgZilQ== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395127471 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/nathans/pcp.git dev man/man3/pmgetoptions.3 | 266 ++++++++++++++ qa/.gitignore | 5 qa/054 | 4 qa/145 | 20 - qa/145.out | 78 ++++ qa/145.out.1 | 83 ---- qa/145.out.2 | 78 ---- qa/207 | 14 qa/207.out | 18 qa/259 | 13 qa/259.out | 19 - qa/293 | 2 qa/294 | 2 qa/326 | 4 qa/344 | 14 qa/344.out | 884 ++++++++++++++++++++++++++++++++++++++++++++++++ qa/344.out.1 | 666 ------------------------------------ qa/344.out.2 | 688 ------------------------------------- qa/344.out.3 | 686 ------------------------------------- qa/417 | 56 --- qa/417.irix.1 | 405 --------------------- qa/417.linux.1 | 405 --------------------- qa/417.linux.2 | 405 --------------------- qa/417.linux.3 | 405 --------------------- qa/417.out | 405 +++++++++++++++++++++ qa/434.out | 59 +-- qa/464 | 8 qa/464.out | 67 +++ qa/464.out.1 | 69 --- qa/464.out.2 | 67 --- qa/569.out | 72 ++- qa/614 | 5 qa/614.out | 2 qa/728.out |binary qa/750 | 25 - qa/750.out | 203 +++++++++++ qa/750.out.3 | 203 ----------- qa/src/getoptions.c | 21 - src/include/pcp/pmapi.h | 6 src/libpcp/src/exports | 1 src/libpcp/src/getopt.c | 236 +++++++----- src/pmclient/pmclient.c | 25 - src/pminfo/pminfo.c | 33 - src/pmprobe/pmprobe.c | 32 - src/pmstat/pmstat.c | 38 -- src/pmval/pmval.c | 66 ++- 46 files changed, 2254 insertions(+), 4609 deletions(-) commit e44891b37c92645120abaab97f81ca71b1c3c76c Author: Nathan Scott Date: Tue Mar 18 18:21:05 2014 +1100 Keep track of hosts used in test 054 via .full file commit f7b82c5db6b7f269d0f445488c740d26e396159e Author: Nathan Scott Date: Tue Mar 18 18:18:45 2014 +1100 Complete the man page for pmGetOptions family of interfaces commit ab160fda9f707537bd2c4f859d9f140fb096177b Author: Nathan Scott Date: Tue Mar 18 18:17:57 2014 +1100 Tackle race condition in test 750 and remove conditional output commit fcc04de26f91c64ab0938f6098506d3da9b7a7bb Author: Nathan Scott Date: Tue Mar 18 15:53:04 2014 +1100 Final getopts changes to get all QA tests passing again Small bug found in the pmstat command, where it would not honour the TZ environment variable due to effectively being in -z mode by default (stray pmNewContextZone call). Some optimisations introduced too - pminfo no longer calls pmGetArchiveEnd unless it needs to (i.e. given an offset). All (pmGetOptions-converted) tools now share its behaviour of printing a warning if the search for the end fails, and continuing on, instead of failing outright. QA notes: for affected QA tests, begun process of removing back-compatibility output variants. Some messages changed for some tools, as we've now got consistent error messages for all tools with the same options. Some diagnostics have slightly changed order, potentially, too (e.g. order of the pmFetch for pmcd.timezone may differ) - several tests were changed to deal with this anomoly. Another class of tests were those containing usage messages of the standard tools like pminfo - they have been unconditional remade (and now with long options too!) commit da27fff915703da941c57be867c8049ca4434d9a Author: Nathan Scott Date: Mon Mar 17 14:30:13 2014 +1000 Add pmGetContextOptions interface for time zone and windows Some option processing requires a context to be established before it can be performed. Timezones and time windows, in particular, but perhaps other similar things someday. In order to share this code, introduce pmGetContextOptions to the common option parsing APIs encapsulating this, and also cleaning up some aspects that were problematic before (time window parsing in particular, is now delayed to a much more appropriate point). From aileen.lewis.us@gmail.com Tue Mar 18 10:00:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2F7957F83 for ; Tue, 18 Mar 2014 10:00:20 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C5D5B8F8068 for ; Tue, 18 Mar 2014 08:00:19 -0700 (PDT) X-ASG-Debug-ID: 1395154814-04bdf05daa6a0fd0001-S8gJnT Received: from mail-ig0-f193.google.com (mail-ig0-f193.google.com [209.85.213.193]) by cuda.sgi.com with ESMTP id YhxsPbDHSNorlIAu (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Mar 2014 08:00:14 -0700 (PDT) X-Barracuda-Envelope-From: aileen.lewis.us@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.213.193 X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.193] Received: by mail-ig0-f193.google.com with SMTP id uy17so1525313igb.0 for ; Tue, 18 Mar 2014 08:00:14 -0700 (PDT) X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.193] X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.193] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=jJRXiWVloeb2nM9/Ao4N4VqVxEcRFzTfhU3r89Bgy6I=; b=buiL2rt3FQS0FkBXC7Oh5miprW9CvIn3rzHCjV/zjmCgDHZD4SuDwfiYxUzPX+2teY bRKNCYweBlF/lWXf0CM27vhnYwHy+fpCB8czBtRl8/CAIrbGmkCC01myLPHW7DdpzLxH i9RBkABsVaFeoCktQuBjdBMi3NKQp7qO8sbXYBtnbQ7l4tMAmCPNXTxrCuK7RK5hLDi8 EYQ7a+QUlOJHgSnP0K5ZgKmJh4tlsn2y5jwfB6eX3r4CJrVaquXP5/0ARSybaNCRAkl+ GHxqanw2CeXXc9SQ1Zkhf+kTiAkaX+rSS5CUipLtV4zUXFafHeVI2Lv7zd4mrjuihjEm Q/dw== MIME-Version: 1.0 X-Received: by 10.50.21.65 with SMTP id t1mr5083954ige.21.1395154814197; Tue, 18 Mar 2014 08:00:14 -0700 (PDT) Received: by 10.64.63.69 with HTTP; Tue, 18 Mar 2014 08:00:13 -0700 (PDT) Date: Tue, 18 Mar 2014 10:00:13 -0500 Message-ID: Subject: PacketTrap users From: Aileen Lewis X-ASG-Orig-Subj: PacketTrap users To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=047d7b6d7da01b79b904f4e2cbdd X-Barracuda-Connect: mail-ig0-f193.google.com[209.85.213.193] X-Barracuda-Start-Time: 1395154814 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4027 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --047d7b6d7da01b79b904f4e2cbdd Content-Type: text/plain; charset=ISO-8859-1 Hi, Would you be interested in* PacketTrap users* email list or Industry specific List? *Data Field:* verified Phone Number, Fax Number, Verified Email Address, Employee Size, Revenue size, SIC Code, Industry Type and many more). We also have other technology users like: *VMwareIBMCSCTrend MicroKaseyaSpiceworksLevel Platforms* And Many More Please let me know your thoughts so that I can send you cost of the list. Appreciate your time and look forward to hear from you. Regards *Aileen Lewis* Marketing Executive | List acquisition | Technology Lists | Email/Data Appending | Search Engine Optimization | If you don't want to include yourself in our mailing list, please reply back "RE: Leave Out" in a subject line --047d7b6d7da01b79b904f4e2cbdd Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi,

Would=20 you be interested in=A0PacketTrap use= rs=A0email list or Industry specific=20 List?

Data=20 Field: verified Phone Number, Fax Number, Verified Email Address, Emplo= yee Size,=20 Revenue size, SIC Code, Industry Type and many more).

We=20 also have other technology users like:
VMware
IBM
CSC
Trend=20 Micro
Kaseya
SpiceworksLevel=20 Platforms

An= d=20 Many More

Please=20 let me know your thoughts so that I can send you cost of the list.
Appreciate=20 your time and look forward to hear from you.

Regards=

Aileen L= ewis
Marketing=20 Executive

|=20 List acquisition | Technology Lists | Email/Data Appending | Search Engine= =20 Optimization |

If=20 you don't want to include yourself in our mailing list, please reply ba= ck "RE:=20 Leave Out" in a subject line
--047d7b6d7da01b79b904f4e2cbdd-- From brolley@redhat.com Tue Mar 18 11:09:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3D2B57F83 for ; Tue, 18 Mar 2014 11:09:53 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 225C48F804C for ; Tue, 18 Mar 2014 09:09:50 -0700 (PDT) X-ASG-Debug-ID: 1395158986-04cb6c5678668940001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zUwI7WtttbyO5gdb for ; Tue, 18 Mar 2014 09:09:46 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2IG9jEE008252 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 18 Mar 2014 12:09:45 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2IG9ixk031791 for ; Tue, 18 Mar 2014 12:09:45 -0400 Message-ID: <53287004.20105@redhat.com> Date: Tue, 18 Mar 2014 12:10:44 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: PCP Updates: Check user credentials for pmlogger control connections via AF_UNIX Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: PCP Updates: Check user credentials for pmlogger control connections via AF_UNIX Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395158986 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This change implements a simple user credential check for pmlogger control connections via the AF_UNIX socket. The implementation (hopefully!) as discussed in http://oss.sgi.com/pipermail/pcp/2014-March/004537.html which is to initially accept connections from root (uid==0) and from the same user as the one running pmlogger. There is a bit of a grey area with the latter, as pmlogger is a setuid program which sometimes sets its effective user to be the 'pcp' user. In this initial implementation, I allowed connections from users with the same uid and euid as pmlogger. As always the code is on the brolley/dev branch of pcpfans. Dave ------------------------------------------------------------ commit f06a7f06b614feefea14f27b2723ed8606de9e8f Author: Dave Brolley Date: Tue Mar 18 11:41:57 2014 -0400 For pmlogger control connections via AF_UNIX, check the connector's credentials. This initial implementation allows connections by root and by the same user as the one running pmlogger. From fche@redhat.com Tue Mar 18 12:04:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4C5F67F83 for ; Tue, 18 Mar 2014 12:04:21 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id B032BAC001 for ; Tue, 18 Mar 2014 10:04:17 -0700 (PDT) X-ASG-Debug-ID: 1395162253-04cbb054b74749d0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ccqdlDyBBWEHRNHB for ; Tue, 18 Mar 2014 10:04:13 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2IH3wMN002619 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 18 Mar 2014 13:04:00 -0400 Received: from fche.csb (vpn-55-60.rdu2.redhat.com [10.10.55.60]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2IH3L6g027520; Tue, 18 Mar 2014 13:03:21 -0400 Received: by fche.csb (Postfix, from userid 2569) id 81CD558173; Tue, 18 Mar 2014 13:03:20 -0400 (EDT) To: Nathan Scott Cc: PCP Mailing List Subject: Re: PCP developers meeting minutes - 21st March References: <181660187.318596.1395039778979.JavaMail.zimbra@redhat.com> <69022709.338111.1395040617166.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: PCP developers meeting minutes - 21st March From: fche@redhat.com (Frank Ch. Eigler) Date: Tue, 18 Mar 2014 13:03:20 -0400 In-Reply-To: <69022709.338111.1395040617166.JavaMail.zimbra@redhat.com> (Nathan Scott's message of "Mon, 17 Mar 2014 03:16:57 -0400 (EDT)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395162253 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 nathans wrote: > [...] > - release schedule > - once-a-month useful? sustainable? > o [nathans] seems to be working well, good balance between the > frequency of release, amount of code change, and time spent > doing releases & QA. > [...] > o nathans mentions next release will slip half a week to give a > bit more time for his own dev work, more reviews/merges, more QA > [...] > - code reviews > o nathans seeking more people to be doing code reviews, this is a > big time sink and would like to see this task (which is at times > very time consuming & not-fun-at-all) shared around more. I believe we noted that these are interconnected issues. With Nathan being the sole dev-branch gatekeeper, he needs to keep reviewing code, even if someone else has also reviewed it. Spending a week per month on release duties reduces the time available for reviewing, merging others' stuff, and developing his own stuff. > == Archive logging topics > [...] > - would "it" require new context type? > o yes, to solve both the live/archive transition and multiple log > aspects well [nathans] > o general concerns expressed about overloading / shoe-horning > functionality into existing context types when we clearly will > need a new context type eventually [nathans] Consensus was that we currently foresee no actual specific semantic shoe-horning problem between the single- and virtually-concatenated archives. (That should not be surprising, since virtual concatenation can be implemented "as if" by pmlogextract-merging all the inputs first, then using single-archive mode on the result.) > o fche suggests continual addition of code until nathans complains > during code review that its going too far is a Just Fine option. A more scholarly retelling would be that the consensus was that we should go ahead with such a prototype, while we and Nathan will keep an eye out for unforseen semantic "shoe-horning". > == Data integrity > > - whither the fche/fsync patches? > o revisited review comments - nathans wants a well-thought-out API > that tackles the meatier part of the problem (interaction between > sync and rename); not content with a static inline in impl.h nor > anything that unconditionally adds fsync's to client code paths o fche pointed out that it should not be necessary to solve the entire suite of problems in order to make progress on some of them > o perhaps move attention from library to tools that need to be very > careful, e.g. pmlogger_daily before culling inputs [kenj] > o pmlogrewrite -i seems particularly exposed [kenj to investigate] o fche to rework the fsync patches on a tool-oriented way, adding the operation to pmlogger, and input-destructive processing tools like pmlogrewrite -i and a (future) pmlogextract merge-and-delete mode. > == Supported platforms > [...] > - which unixes/distros are of interest? release binaries for them? > o reviewed each of the binary platforms from oss.sgi.com Downloads. namely: solaris (fork), linux (rh-flavoured + debian-unstable), mac osx > - how do we share build/testing load? > - how to gather evidence about compatibility assumptions > - how to entice distro reps into presence in pcp community? - noted that some other linux distros have pulled in pcp occasionally - noted that we don't know what sgi is doing with our pcp binaries or sources - FChE From 2011004@iiitdmj.ac.in Tue Mar 18 15:58:23 2014 Return-Path: <2011004@iiitdmj.ac.in> X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C68097F96 for ; Tue, 18 Mar 2014 15:58:23 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 60CB6AC00B for ; Tue, 18 Mar 2014 13:58:22 -0700 (PDT) X-ASG-Debug-ID: 1395176296-04cb6c56766792e0001-S8gJnT Received: from mail.iiitdmj.ac.in (mail.iiitdmj.ac.in [210.212.148.37]) by cuda.sgi.com with ESMTP id IiCrvTBQUtNcSZQI for ; Tue, 18 Mar 2014 13:58:17 -0700 (PDT) X-Barracuda-Envelope-From: 2011004@iiitdmj.ac.in X-Barracuda-Apparent-Source-IP: 210.212.148.37 Received: by mail.iiitdmj.ac.in (Postfix, from userid 79) id EC72D1000676; Tue, 18 Mar 2014 23:47:55 +0530 (IST) Received: from 41.82.253.140 (SquirrelMail authenticated user 2011004) by mail.iiitdmj.ac.in with HTTP; Tue, 18 Mar 2014 23:47:55 +0530 Message-ID: Date: Tue, 18 Mar 2014 23:47:55 +0530 Subject: 1st International Conference meeting From: "Program Coordinator" <2011004@iiitdmj.ac.in> X-ASG-Orig-Subj: 1st International Conference meeting Reply-To: hr.informationdesk@aim.com User-Agent: SquirrelMail/1.4.19 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal To: undisclosed-recipients:; X-Barracuda-Connect: mail.iiitdmj.ac.in[210.212.148.37] X-Barracuda-Start-Time: 1395176296 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.23 X-Barracuda-Spam-Status: No, SCORE=1.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA620a, FROM_STARTS_WITH_NUMS, FROM_STARTS_WITH_NUMS_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4037 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 FROM_STARTS_WITH_NUMS From: starts with many numbers 0.50 BSF_SC0_SA620a Custom Rule SA620a 0.72 FROM_STARTS_WITH_NUMS_2 From: starts with many numbers Dear colleagues, We are pleased to announce that the 1st International Conference of Community economic crisis & Public Health care: Research, Education & Practice will be held on June 4th – 7th, 2014 Texas City, USA and June 10th – 14th, 2014 in Republic of Senegal, Dakar City. It is a great honor and pleasure for me, as the Program coordinator of the Conference, to invite you to this scientific event. As we develop an appropriate health and a welfare strategy for societies, families and individual persons. Healthy people and patient safety is a complex issue with many factors that include human suffering and financial costs.It is believed that the scientific program will lead to a fruitful expansion of the participants' professional horizons and an efficient communication and sharing of scientific knowledge and experience with other scientists around the world. NOTE: Registration is open to all interested participants, the interested participants should be in possession of travelling passport for visa processing and air ticket. contact the below e-mail for more information and registration. (hr.informationdesk@aim.com) Respectfully, Ms. Eleanor Marion Program coordinator From nscott@redhat.com Tue Mar 18 17:39:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BBAC07F8A for ; Tue, 18 Mar 2014 17:39:52 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9AAFA30407B for ; Tue, 18 Mar 2014 15:39:52 -0700 (PDT) X-ASG-Debug-ID: 1395182387-04cbb054b94884a0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id 0DEyUFvzCSz4wYJ5 for ; Tue, 18 Mar 2014 15:39:48 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2IMdlkI010366; Tue, 18 Mar 2014 18:39:47 -0400 Date: Tue, 18 Mar 2014 18:39:47 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: PCP Mailing List Message-ID: <1210948717.1721622.1395182387722.JavaMail.zimbra@redhat.com> In-Reply-To: References: <181660187.318596.1395039778979.JavaMail.zimbra@redhat.com> <69022709.338111.1395040617166.JavaMail.zimbra@redhat.com> Subject: Re: PCP developers meeting minutes - 21st March MIME-Version: 1.0 X-ASG-Orig-Subj: Re: PCP developers meeting minutes - 21st March Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP developers meeting minutes - 21st March Thread-Index: +xNpZe01KpuQR8v4s65zstARl7xwBQ== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395182388 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4042 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > [...] > I believe we noted that these are interconnected issues. With Nathan > being the sole dev-branch gatekeeper, he needs to keep reviewing code, > even if someone else has also reviewed it. Spending a week per month > on release duties reduces the time available for reviewing, merging > others' stuff, and developing his own stuff. To clarify further, the week we were discussing is more a week of adding far less new code, and focussing on testing (I'm seeking something more like a code freeze/sludge there so those of us running full QA regularly can catch up) - release duties certainly don't occupy an entire week. Also, we could easily release more often ... the agile crowd reckon two weeks is a good rule of thumb. ;) Not sure thats ideal for us though, at this stage anyway. We do tend to have a very close to releasable dev branch at all times, so we are well on our way if we wanted to do more frequent releases. > > o fche suggests continual addition of code until nathans complains > > during code review that its going too far is a Just Fine option. > > A more scholarly retelling would be that the consensus was that we > should go ahead with such a prototype, while we and Nathan will keep > an eye out for unforseen semantic "shoe-horning". *nod* - a poor choice of words there on my part. I mainly wanted to continue to get across the death-by-1000-cuts issue (manipulating the existing context types to such an extent that we end up introducing bugs/regressions/accidental-incompatibilities on those paths, and restrict our options/thinking instead of cleanly building up the new type of context) But lets come back to that discussion next time, after we've tackled the initial items we've all agreed will move us forward & build up some good precursor knowledge. cheers. -- Nathan From nscott@redhat.com Tue Mar 18 20:00:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 42CA77F6A for ; Tue, 18 Mar 2014 20:00:50 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2931F8F8064 for ; Tue, 18 Mar 2014 18:00:46 -0700 (PDT) X-ASG-Debug-ID: 1395190840-04cbb054b948e410001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id eiRSbrMvQd2kiud4 for ; Tue, 18 Mar 2014 18:00:41 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2J10dJ1007777 for ; Tue, 18 Mar 2014 21:00:39 -0400 Date: Tue, 18 Mar 2014 21:00:39 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <873482729.1745382.1395190839599.JavaMail.zimbra@redhat.com> In-Reply-To: <1624132458.1745332.1395190766353.JavaMail.zimbra@redhat.com> Subject: pcp updates: kenj+nathans merges, qa fixes MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: kenj+nathans merges, qa fixes Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: kenj+nathans merges, qa fixes Thread-Index: PMnDo4JCVhF3pUezxE3WVeBpBslhGA== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395190841 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev build/GNUmakefile | 1=20 build/rpm/pcp.spec.in | 10=20 debian/libpcp3-dev.install | 1=20 man/man3/pmgetcontexthostname.3 | 26=20 man/man3/pmgetoptions.3 | 323 +++++++++ qa/.gitignore | 7=20 qa/054 | 4=20 qa/075 | 17=20 qa/075.out | 213 ++++++ qa/075.out.2 | 186 ----- qa/075.out.3 | 188 ----- qa/075.out.4 | 190 ----- qa/075.out.6 | 192 ----- qa/075.out.7 | 196 ----- qa/145 | 24=20 qa/145.out | 78 ++ qa/145.out.1 | 83 -- qa/145.out.2 | 78 -- qa/207 | 9=20 qa/207.out | 18=20 qa/259 | 13=20 qa/259.out | 19=20 qa/282 | 8=20 qa/293 | 2=20 qa/293.out | 2=20 qa/294 | 40 - qa/294.out | 1111 ++++++++++++++++++++++++++++++++ qa/294.out.1 | 1109 -------------------------------- qa/294.out.2 | 1109 -------------------------------- qa/294.out.3 | 1086 ------------------------------- qa/294.out.4 | 1086 ------------------------------- qa/326 | 4=20 qa/344 | 14=20 qa/344.out | 884 +++++++++++++++++++++++++ qa/344.out.1 | 666 ------------------- qa/344.out.2 | 688 ------------------- qa/344.out.3 | 686 ------------------- qa/417 | 56 - qa/417.irix.1 | 405 ----------- qa/417.linux.1 | 405 ----------- qa/417.linux.2 | 405 ----------- qa/417.linux.3 | 405 ----------- qa/417.out | 405 +++++++++++ qa/434.out | 59 - qa/464 | 8=20 qa/464.out | 67 + qa/464.out.1 | 69 - qa/464.out.2 | 67 - qa/569.out | 72 +- qa/614 | 5=20 qa/614.out | 2=20 qa/728 | 90 ++ qa/750 | 25=20 qa/750.out | 203 +++++ qa/750.out.1 | 185 ----- qa/750.out.2 | 200 ----- qa/750.out.3 | 203 ----- qa/786 | 40 + qa/786.out | 84 ++ qa/common.check | 4=20 qa/group | 2=20 qa/src/.gitignore | 2=20 qa/src/GNUlocaldefs | 9=20 qa/src/getcontexthost.c | 121 +++ qa/src/getoptions.c | 252 +++++++ src/include/pcp/impl.h | 10=20 src/include/pcp/pmapi.h | 183 ++++- src/libpcp/src/GNUmakefile | 2=20 src/libpcp/src/check-statics | 1=20 src/libpcp/src/context.c | 36 - src/libpcp/src/exports | 16=20 src/libpcp/src/getopt.c | 1383 +++++++++++++++++++++++++++++++++++= +++++ src/libpcp/src/spec.c | 49 + src/pmclient/pmclient.c | 258 +------ src/pminfo/pminfo.c | 369 +++------- src/pmprobe/pmprobe.c | 293 ++------ src/pmstat/pmstat.c | 920 ++++++++------------------ src/pmstore/pmstore.c | 131 +-- src/pmval/pmval.c | 783 ++++++++-------------- src/python/GNUmakefile | 2=20 80 files changed, 6585 insertions(+), 12072 deletions(-) commit 5a42804538bb9b64707200c29142fc7ccd8efac9 Author: Nathan Scott Date: Wed Mar 19 11:54:31 2014 +1100 A common pmGetOptions interface for reuse and long options =20 Introduces pmGetOptions, pmFreeOptions and pmUsageMessage APIs. These abstract oft-repeated patterns in command line parsing of client tools into a single API. Additionally, the ability for tools to use long options is introduced as is an ability to use environment variables for setting common options directly. We can set flags to specify the slight variants on certain things that some tools have (e.g. pmstore requires posix-correctness, some tools allow multiple hosts/archives, others are one only, and so on). =20 Some option processing requires a context to be established before it can be performed. Timezones and time windows, in particular, but perhaps other similar things someday. In order to share this code, introduce pmGetContextOptions to the common option parsing APIs encapsulating this, and also cleaning up some aspects that were problematic before (time window parsing in particular, is now delayed to a much more appropriate point). =20 An initial batch of client tools have been converted to making use of the APIs, removing hundreds of lines of code while also making them able to use long options (in addition to the single character options they have always had): pmstat, pmval, pminfo, pmclient, pmprobe, and pmstore. =20 Small bug found in the pmstat command, where it would not honour the TZ environment variable due to effectively being in -z mode by default (stray pmNewContextZone call). =20 QA test qa/src/getoptions.c and wrappers (728, 757) have been added for exercising the new functionality. =20 Other QA tidbits: for affected QA tests, begun removing back- compatibility output variants. Some messages have changed in some tools, as we've now got consistent error messages for all tools with the same options. Some diagnostics have slightly changed order too (e.g. order of the pmFetch for pmcd.timezone may differ sometimes); several tests were changed to deal with this anomoly. Another class of test issues was in those tests containing usage messages of the standard tools like pminfo - they have been unconditional remade. commit ca5907e5e55da8ba95de325050625eeb8174205a Author: Nathan Scott Date: Wed Mar 19 10:37:36 2014 +1100 Remove hard-coded reference to /var/adm/pcplog =20 The qa/common.check script contained an IRIX-ism where it was still using /var/adm/pcplog, instead of the env var parameterised paths. This was harmless but causes complaints from SELinux in policy checking modes. =20 Tackles one aspect of Red Hat bug: #1072785 commit 18808ea5fdfd9112eb3a76e8c780fa085d4e517c Author: Milo=C5=A1 Prchl=C3=ADk Date: Wed Mar 19 10:35:19 2014 +1100 Rework test qa/282 to preserve SELinux context on pmcd =20 Instead of copying aside, and then back, the system pmcd binary (which loses any extended attributes, by default) move it instead (thus preserving attributes). =20 Tackles one aspect of Red Hat bug: #1072785 commit d03e715be65bc76d854dac6c00094013e4f2b89d Author: Ken McDonell Date: Mon Mar 17 17:13:58 2014 +1100 pcp.spec.in - ia64 and python-ctypes changes =20 Don't use lib64 for SuSE ia64 builds. =20 Fix conditional for python-ctypes so it only applies to RedHat builds. commit bd1d4f76675dae9aaf285afb96d2a553a02d1d38 Author: Ken McDonell Date: Mon Mar 17 15:48:39 2014 +1100 build/GNUmakefile - be a little more totalitarian =20 When building after a build failure blow away the previous corpse unconditionally. commit 7475319906606314716c9d24de4a64f8feb702bf Merge: b2779ad b6fe37e Author: Ken McDonell Date: Mon Mar 17 08:46:03 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev =20 Non-overlapping conflict around qa tests 786 & 798 =20 Conflicts: =09qa/group commit b2779adc04ab9967de1a494d744f30f0c5c7e6e5 Author: Ken McDonell Date: Mon Mar 17 08:36:41 2014 +1100 debian packaging - add pmGetContextHostName_r to man page manifest commit 2f6892051ba5b406b1b9e36c6e8061a165e76dc0 Author: Ken McDonell Date: Sun Mar 16 17:53:02 2014 +1100 libpcp - fix bug in __pmUnparseHostSpec =20 pmDupContext() was failing for local: and unix: contexts. =20 Root cause was incorrect values being return in these cases from __pmUnparseHostSpec(). commit f5d5f2023eed147d7185cd971fd5d229fdb13d71 Author: Ken McDonell Date: Sun Mar 16 17:52:10 2014 +1100 libpcp - add pmGetContextHostName_r commit bd87c92ebc98cc95583745dd459fc6c34ccbb0d8 Author: Ken McDonell Date: Sun Mar 16 17:50:34 2014 +1100 qa/786 (new) - exercise pmGetContextHostName and pmGetContextHostName_r commit 08446e09a4a5960fcf24362e5754b1ae8ebcdae6 Author: Ken McDonell Date: Sun Mar 16 17:44:08 2014 +1100 python makefile - avoid env pollution =20 Take better control of the local $(ENV) so it is not inherited from environment ... this broke the build on one machine. From nscott@redhat.com Tue Mar 18 22:18:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EE4857F62 for ; Tue, 18 Mar 2014 22:18:11 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C09A28F807A for ; Tue, 18 Mar 2014 20:18:11 -0700 (PDT) X-ASG-Debug-ID: 1395199087-04bdf076f03efad0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id K0u88ZA0Tprh5TjO for ; Tue, 18 Mar 2014 20:18:07 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2J3I63s030767 for ; Tue, 18 Mar 2014 23:18:06 -0400 Date: Tue, 18 Mar 2014 23:18:06 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <8182151.1767692.1395199086672.JavaMail.zimbra@redhat.com> In-Reply-To: <1678801709.1767642.1395199077449.JavaMail.zimbra@redhat.com> Subject: pcp updates: docs, qa MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: docs, qa Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: docs, qa Thread-Index: 97cHyRQxmlr5ImyBL5fnX2ED+oqbFg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395199087 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4047 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev CHANGELOG | 18 ++++++- build/rpm/fedora.spec | 6 +- debian/changelog | 6 +- debian/libpcp3-dev.install | 7 ++ man/man3/pmgetoptions.3 | 111 ++++++++++++++++++++++++++++++++++++++++++++- qa/1108 | 4 + qa/1108.out | 4 - qa/500.out | 3 - qa/752.out | 4 - 9 files changed, 145 insertions(+), 18 deletions(-) commit 1e9a58088cb2bad2c5210311a08a8166f9080312 Author: Nathan Scott Date: Wed Mar 19 14:16:48 2014 +1100 Update changelogs and so on, 3.9.1 release preparation commit 4a064065f0eb1d47a424d0403c89254f26eb6651 Author: Nathan Scott Date: Wed Mar 19 14:15:55 2014 +1100 Update qa/752 dealing with "yesterday" string non-determinism commit 8db27115c6a6c4d20ee9727fb5db60d3bf9e73f1 Author: Nathan Scott Date: Wed Mar 19 14:15:00 2014 +1100 Update qa/500 after removal of pmlogger/hostname pmnewlog diagnostic commit 563949a579d6a3a33b0ca679ab88eba50bd1eb7d Author: Nathan Scott Date: Wed Mar 19 14:14:13 2014 +1100 Update filtering in test qa/1108 after recent pmnewlog fix Depending on how it is invoked, pmnewlog may have either one or two spaces within the pmlc command line diagnostic. Need to cater for that in qa/1108 via a repeated-whitespace cull. commit e403fd5866475e84b45027e7663f37fb4e72fb81 Author: Nathan Scott Date: Wed Mar 19 14:11:27 2014 +1100 Build fix, ensure the new man pages end up in the correct deb package commit 4a8d16529007a172e5fb200fcab428ab3fd7050c Author: Nathan Scott Date: Wed Mar 19 14:10:47 2014 +1100 Extend the pmgetoptions man page with docs for each flag From nscott@redhat.com Wed Mar 19 00:31:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3150E7F7C for ; Wed, 19 Mar 2014 00:31:41 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0F4468F8078 for ; Tue, 18 Mar 2014 22:31:40 -0700 (PDT) X-ASG-Debug-ID: 1395207096-04cb6c567668d870001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id hjooiBRMEZnOYvda for ; Tue, 18 Mar 2014 22:31:36 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2J5VZk3012605 for ; Wed, 19 Mar 2014 01:31:35 -0400 Date: Wed, 19 Mar 2014 01:31:35 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <78994247.1794690.1395207095517.JavaMail.zimbra@redhat.com> In-Reply-To: <2084142028.1794120.1395206919454.JavaMail.zimbra@redhat.com> Subject: pcp updates: hostspec tweak MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: hostspec tweak Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: hostspec tweak Thread-Index: j9uO530DP+iho67FVeQZg/jtKcbTrw== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395207096 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4051 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... [this should be it for pcp-3.9.1, one final testsuite run still going though... to be sure, to be sure] Changes committed to git://oss.sgi.com/pcp/pcp.git dev src/libpcp/src/spec.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) commit 092ffb7e53584842e38375f5db32501b9dbf0881 Author: Nathan Scott Date: Wed Mar 19 16:27:43 2014 +1100 Rework the recent libpcp hostspec parsing slightly Test qa/875 is failing after recent changes to the libpcp hostspec parsing. The problem is that both parsehostspec and parsehost*attrs*spec are now adding the local:/unix: prefixes, and __pmUnparseHostAttrsSpec ends up adding the decoration twice. Massage the code so this cannot happen while at the same time still sharing the hostspec unparse code. From kenj@internode.on.net Wed Mar 19 01:46:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0B1677F78 for ; Wed, 19 Mar 2014 01:46:58 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id D862E304051 for ; Tue, 18 Mar 2014 23:46:57 -0700 (PDT) X-ASG-Debug-ID: 1395211615-04cbb054b849a9a0001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id VtV16buacCUojtIB for ; Tue, 18 Mar 2014 23:46:56 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ar8VAAg8KVN20adJPGdsb2JhbAANTYNBiBe8SAMBAQEBOIMZQD0WGAMCAQIBMQ4MDQgBAbU1ox4XkyEEmXmUPw Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl6.internode.on.net with ESMTP; 19 Mar 2014 17:16:55 +1030 Message-ID: <53293D8D.5030803@internode.on.net> Date: Wed, 19 Mar 2014 17:47:41 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: PCP Mailing List Subject: python qa failures Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: python qa failures Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1395211615 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4052 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I am seeing failures on rpm systems (opensuse and sles) because the python module (?) curses.py is not found (qa/722 fails because pmatop fails). This appears to be in python-libs for RH-related systems ... where is it found for suse-related systems? rpm.pbone.net is not helping me here. From nscott@redhat.com Wed Mar 19 01:55:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EDF447F7C for ; Wed, 19 Mar 2014 01:55:50 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7FDD0AC00A for ; Tue, 18 Mar 2014 23:55:47 -0700 (PDT) X-ASG-Debug-ID: 1395212144-04cb6c5677690960001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id guoFhayuWGqBpbcG for ; Tue, 18 Mar 2014 23:55:45 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2J6tfms025797; Wed, 19 Mar 2014 02:55:41 -0400 Date: Wed, 19 Mar 2014 02:55:41 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: PCP Mailing List Message-ID: <1041086392.1809515.1395212141704.JavaMail.zimbra@redhat.com> In-Reply-To: <53293D8D.5030803@internode.on.net> References: <53293D8D.5030803@internode.on.net> Subject: Re: [pcp] python qa failures MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] python qa failures Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: python qa failures Thread-Index: YirTKIyPNHP2Tq3InSfxJq9irKjY9A== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395212145 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4052 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > I am seeing failures on rpm systems (opensuse and sles) because the > python module (?) curses.py is not found (qa/722 fails because pmatop > fails). > > This appears to be in python-libs for RH-related systems ... where is it > found for suse-related systems? > $ cat eek.py #!/usr/bin/python import curses $ ./eek.py $ rpm -qa | grep curses | grep python python-curses-2.6.8-0.15.1 cat /etc/SuSE-release SUSE Linux Enterprise Server 11 (x86_64) VERSION = 11 PATCHLEVEL = 1 cheers. -- Nathan From nscott@redhat.com Wed Mar 19 04:19:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E75F77F78 for ; Wed, 19 Mar 2014 04:19:41 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C08578F8073 for ; Wed, 19 Mar 2014 02:19:41 -0700 (PDT) X-ASG-Debug-ID: 1395220776-04bdf05dac6d53b0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 2PPFWuEFyRCDLJlL for ; Wed, 19 Mar 2014 02:19:37 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2J9Jadh024667 for ; Wed, 19 Mar 2014 05:19:36 -0400 Date: Wed, 19 Mar 2014 05:19:36 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <1700434766.1847273.1395220776531.JavaMail.zimbra@redhat.com> In-Reply-To: <78994247.1794690.1395207095517.JavaMail.zimbra@redhat.com> References: <78994247.1794690.1395207095517.JavaMail.zimbra@redhat.com> Subject: Re: pcp updates: hostspec tweak MIME-Version: 1.0 X-ASG-Orig-Subj: Re: pcp updates: hostspec tweak Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: hostspec tweak Thread-Index: j9uO530DP+iho67FVeQZg/jtKcbTr3wqV0vk X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395220776 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4055 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi all, ----- Original Message ----- > [this should be it for pcp-3.9.1, one final testsuite run > still going though... to be sure, to be sure] The current dev branch has 100% QA passing here. We've had what appears to be a Fedora build-tooling failure producing the RPMs, so I'll put off the final release gyrations until tomorrow morning. cheers. -- Nathan From brolley@redhat.com Wed Mar 19 10:43:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 070007F55 for ; Wed, 19 Mar 2014 10:43:19 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C5DE18F8071 for ; Wed, 19 Mar 2014 08:43:15 -0700 (PDT) X-ASG-Debug-ID: 1395243791-04bdf05dab6ebdf0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id mbcN3VvCMjVieV2Y for ; Wed, 19 Mar 2014 08:43:11 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2JFhAgX023462 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 19 Mar 2014 11:43:11 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2JFh9Et031544 for ; Wed, 19 Mar 2014 11:43:10 -0400 Message-ID: <5329BB49.1050101@redhat.com> Date: Wed, 19 Mar 2014 11:44:09 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: New Option for pmlogger? Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: New Option for pmlogger? Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395243791 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, During a recent irc discussion, Frank suggested the addition of an option to limit pmlogger to listening only the AF_UNIX socket for control connections. The idea is that the new simple authentication on that socket is of no use if a user can just go ahead and connect via inet or ipv6. It was also noted during the discussion that the same effect could be achieved using ACL, something like [access] disallow .* : all; disallow :* : all; allow unix:* : enquire; so the option would really just be a shortcut with the additional effect that inet and ipv6 sockets would not be opened at all, although pmlogger could probably infer the same behaviour from the configuration above. If this seems like a good idea to others, I can go ahead and implement it. As is my nature, I also got to thinking about whether there would be any value in a general option for this. That is, an option which does not strictly focus on access via AF_UNIX. Perhaps something like -f, where 'f' stands for 'families' and which would accept a list of the address families to listen on. Some examples: -f unix -f inet -f ipv6 -f inet,ipv6 -f all -f none # no control connections? Thoughts? Dave From fche@redhat.com Wed Mar 19 17:13:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CA78A7F37 for ; Wed, 19 Mar 2014 17:13:03 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 61444AC007 for ; Wed, 19 Mar 2014 15:13:00 -0700 (PDT) X-ASG-Debug-ID: 1395267176-04cbb054b64d2730001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ZFxVZWxqnUMgvbPV for ; Wed, 19 Mar 2014 15:12:56 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2JMCtAF017649 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 19 Mar 2014 18:12:55 -0400 Received: from fche.csb (vpn-55-60.rdu2.redhat.com [10.10.55.60]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2JMCthP018761 for ; Wed, 19 Mar 2014 18:12:55 -0400 Received: by fche.csb (Postfix, from userid 2569) id 8542C58182; Wed, 19 Mar 2014 18:12:54 -0400 (EDT) Date: Wed, 19 Mar 2014 18:12:54 -0400 From: "Frank Ch. Eigler" To: pcp developers Subject: fche/dev patches Message-ID: <20140319221254.GL7585@redhat.com> X-ASG-Orig-Subj: fche/dev patches Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395267176 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - Some patches worth reviewing/merging on pcpfans.git fche/dev: RFC commit 1d5e76923d141342b4c2d30ce84b5fc15f91616a pmlogconf: add all metrics that default pmieconf uses This way, pmie can run against a default-configured pmlogger archive and generate the same results as pmie having run live. RFM commit e8f54c26f93 commit 16da89468e9 commit 2e964ae486d __pmAvahiDiscoverServices: support optional ,timeout=NNNN mechanism suffix We need to let clients control how long to search for avahi announcements; the 0.5 second default is just too short at times. The existing environment variable control is undocumented and clumsy (but retained in this revision). RFM commit 8778f83 commit e0a362a pmmgr: add pcpqa test 666 This test can take almost 20 minutes to run (most of it spent waiting), in order to exercise several of the time-controlled log management features. Read a nice goblin story while waiting. RFM 519c972339 pmmgr: append a space after config-loaded pmie/pmlogger options From dak-unpriv@franck.debian.org Wed Mar 19 18:20:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 641AA7F72 for ; Wed, 19 Mar 2014 18:20:16 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id F1829AC007 for ; Wed, 19 Mar 2014 16:20:12 -0700 (PDT) X-ASG-Debug-ID: 1395271210-04cb6c56786c95c0001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id lcFWlNrfgyHvrc4K (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Wed, 19 Mar 2014 16:20:11 -0700 (PDT) X-Barracuda-Envelope-From: dak-unpriv@franck.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak-unpriv by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WQPmM-0000av-8p for pcp@oss.sgi.com; Wed, 19 Mar 2014 23:20:10 +0000 To: pcp@oss.sgi.com From: Debian FTP Masters Subject: Processing of pcp_3.9.1_i386.changes Date: Wed, 19 Mar 2014 23:20:10 +0000 X-ASG-Orig-Subj: Processing of pcp_3.9.1_i386.changes X-Debian: DAK X-DAK: DAK Precedence: bulk Auto-Submitted: auto-generated X-Debian-Package: pcp Message-Id: Sender: unprivileged ftp-master role account X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1395271211 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4074 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- pcp_3.9.1_i386.changes uploaded successfully to localhost along with the files: pcp_3.9.1.dsc pcp_3.9.1.tar.xz pcp_3.9.1_i386.deb pcp-conf_3.9.1_i386.deb libpcp3-dev_3.9.1_i386.deb libpcp3_3.9.1_i386.deb libpcp-gui2-dev_3.9.1_i386.deb libpcp-gui2_3.9.1_i386.deb libpcp-mmv1-dev_3.9.1_i386.deb libpcp-mmv1_3.9.1_i386.deb libpcp-pmda3-dev_3.9.1_i386.deb libpcp-pmda3_3.9.1_i386.deb libpcp-trace2-dev_3.9.1_i386.deb libpcp-trace2_3.9.1_i386.deb libpcp-import1-dev_3.9.1_i386.deb libpcp-import1_3.9.1_i386.deb python-pcp_3.9.1_i386.deb libpcp-pmda-perl_3.9.1_i386.deb libpcp-import-perl_3.9.1_i386.deb libpcp-logsummary-perl_3.9.1_i386.deb libpcp-mmv-perl_3.9.1_i386.deb pcp-import-sar2pcp_3.9.1_all.deb pcp-import-mrtg2pcp_3.9.1_all.deb pcp-import-sheet2pcp_3.9.1_all.deb pcp-import-iostat2pcp_3.9.1_all.deb pcp-import-collectl2pcp_3.9.1_i386.deb pcp-testsuite_3.9.1_i386.deb pcp-manager_3.9.1_i386.deb pcp-webapi_3.9.1_i386.deb Greetings, Your Debian queue daemon (running on host franck.debian.org) From envelope@ftp-master.debian.org Wed Mar 19 18:35:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 68F307F74 for ; Wed, 19 Mar 2014 18:35:08 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4CE698F807A for ; Wed, 19 Mar 2014 16:35:08 -0700 (PDT) X-ASG-Debug-ID: 1395272103-04cb6c56756c9e60001-S8gJnT Received: from franck.debian.org (franck.debian.org [138.16.160.12]) by cuda.sgi.com with ESMTP id zGaWm0E1tAEukMsP (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Wed, 19 Mar 2014 16:35:03 -0700 (PDT) X-Barracuda-Envelope-From: envelope@ftp-master.debian.org X-Barracuda-Apparent-Source-IP: 138.16.160.12 Received: from dak by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WQQ0k-0003uc-Rr; Wed, 19 Mar 2014 23:35:02 +0000 From: Debian FTP Masters To: PCP Development Team , Nathan Scott X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: pcp Precedence: bulk Auto-Submitted: auto-generated MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Subject: pcp_3.9.1_i386.changes ACCEPTED into unstable Message-Id: X-ASG-Orig-Subj: pcp_3.9.1_i386.changes ACCEPTED into unstable Sender: Archive Administrator Date: Wed, 19 Mar 2014 23:35:02 +0000 X-Barracuda-Connect: franck.debian.org[138.16.160.12] X-Barracuda-Start-Time: 1395272103 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4074 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Accepted: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.8 Date: Wed, 19 Mar 2014 12:55:16 +1100 Source: pcp Binary: pcp pcp-conf libpcp3-dev libpcp3 libpcp-gui2-dev libpcp-gui2 libpcp-mmv1-dev libpcp-mmv1 libpcp-pmda3-dev libpcp-pmda3 libpcp-trace2-dev libpcp-trace2 libpcp-import1-dev libpcp-import1 python-pcp libpcp-pmda-perl libpcp-import-perl libpcp-logsummary-perl libpcp-mmv-perl pcp-import-sar2pcp pcp-import-mrtg2pcp pcp-import-sheet2pcp pcp-import-iostat2pcp pcp-import-collectl2pcp pcp-testsuite pcp-manager pcp-webapi Architecture: source i386 all Version: 3.9.1 Distribution: unstable Urgency: low Maintainer: PCP Development Team Changed-By: Nathan Scott Description: libpcp-gui2 - Performance Co-Pilot graphical client tools library libpcp-gui2-dev - Performance Co-Pilot graphical client tools library and headers libpcp-import-perl - Performance Co-Pilot log import Perl module libpcp-import1 - Performance Co-Pilot data import library libpcp-import1-dev - Performance Co-Pilot data import library and headers libpcp-logsummary-perl - Performance Co-Pilot historical log summary module libpcp-mmv-perl - Performance Co-Pilot Memory Mapped Value Perl module libpcp-mmv1 - Performance Co-Pilot Memory Mapped Value client library libpcp-mmv1-dev - Performance Co-Pilot Memory Mapped Value library and headers libpcp-pmda-perl - Performance Co-Pilot Domain Agent Perl module libpcp-pmda3 - Performance Co-Pilot Domain Agent library libpcp-pmda3-dev - Performance Co-Pilot Domain Agent library and headers libpcp-trace2 - Performance Co-Pilot application tracing library libpcp-trace2-dev - Performance Co-Pilot application tracing library and headers libpcp3 - Performance Co-Pilot library libpcp3-dev - Performance Co-Pilot library and headers pcp - System level performance monitoring and performance management pcp-conf - Performance Co-Pilot runtime configuration pcp-import-collectl2pcp - Tool for importing data from collectl into PCP archive logs pcp-import-iostat2pcp - Tool for importing data from iostat into PCP archive logs pcp-import-mrtg2pcp - Tool for importing data from MRTG into PCP archive logs pcp-import-sar2pcp - Tool for importing data from sar into PCP archive logs pcp-import-sheet2pcp - Tool for importing data from a spreadsheet into PCP archive logs pcp-manager - Performance Co-Pilot (PCP) manager daemon pcp-testsuite - Performance Co-Pilot (PCP) Test Suite pcp-webapi - Performance Co-Pilot (PCP) web API service python-pcp - Performance Co-Pilot Python PMAPI module Closes: 719734 739952 Changes: pcp (3.9.1) unstable; urgency=low . * New release (full details in CHANGELOG). * Fix build depends for libmicrohttpd-dev. * Update debian copyright notices (closes: #739952) * Fix build failure related to pcp-manager (closes: #719734) Checksums-Sha1: 5052a957a864e03de23f87c72c45ef1c8530967f 2462 pcp_3.9.1.dsc 94f8132e5eb88a9b2a8cca50cb85e6d51a9994d8 5291320 pcp_3.9.1.tar.xz 2a00ae6b41620f47ad6d29f2b05468daa342bef6 1141362 pcp_3.9.1_i386.deb 3e4a42b1df95a8dbe268bc742be964a599937ce2 14908 pcp-conf_3.9.1_i386.deb c5a548b76d9748159f195b1db9636bc604ae926a 391172 libpcp3-dev_3.9.1_i386.deb c25ba9d11e622a3fcbf69e3e698d999b791fc46e 179530 libpcp3_3.9.1_i386.deb 5ec2f44e26f2088d9374cb168f5a2ba181a02608 15650 libpcp-gui2-dev_3.9.1_i386.deb 168c7bef5134a6add3b84045821b0570308244f2 14464 libpcp-gui2_3.9.1_i386.deb dd1dbd2dc02ab617d27e44c87030b6f5308929fe 18292 libpcp-mmv1-dev_3.9.1_i386.deb c2796bf3603aaf59d93ac198bbe4f024d3cf3111 11562 libpcp-mmv1_3.9.1_i386.deb a3246635c692395fd25dc94970f6ae05f3ff5564 91646 libpcp-pmda3-dev_3.9.1_i386.deb 3d2d4512c9d4408b392ae6e24a11cd9a2705ff84 34378 libpcp-pmda3_3.9.1_i386.deb a4d5a9557fd62fa4d5cedd202608ea2a7e551970 25916 libpcp-trace2-dev_3.9.1_i386.deb ecc8ff1ce9d1505f51bf45a041d55ffaf297b437 18396 libpcp-trace2_3.9.1_i386.deb e42fc88026e2484ef37379aac547a2c6cc6c5d3b 15394 libpcp-import1-dev_3.9.1_i386.deb dd8ec029921d875f3f4c78911fd74d076efd565f 14852 libpcp-import1_3.9.1_i386.deb 4e5c6dfa1c1912b89f08787bc5d597fd2ccc04f5 39990 python-pcp_3.9.1_i386.deb e2019919f2a317a0420f531108c24814fe1dcec3 30746 libpcp-pmda-perl_3.9.1_i386.deb 93e5c74db69dafbed79942f38520ddd63d72a833 16038 libpcp-import-perl_3.9.1_i386.deb 331b2ad3fdb501fe43625cec2dab67f526085db3 10968 libpcp-logsummary-perl_3.9.1_i386.deb 4f5820a9470c03c1cb7e6908c060a5a82c98d287 17294 libpcp-mmv-perl_3.9.1_i386.deb da7308f563094983b115aa71d098aeece376ff0b 16274 pcp-import-sar2pcp_3.9.1_all.deb 4531af0ac11fb946a6ce9566e70eb9ed4178f27b 10130 pcp-import-mrtg2pcp_3.9.1_all.deb f996641103137fc00c244e5317ee383331aace19 19122 pcp-import-sheet2pcp_3.9.1_all.deb 40ce175134f93d7c1ba1b187a60e47de715d1606 17800 pcp-import-iostat2pcp_3.9.1_all.deb c1a505e78995534ce1312b02f5903ecc5b5a5a0e 22882 pcp-import-collectl2pcp_3.9.1_i386.deb 90127f10d52976dcd4873e599c689901537f8312 2225272 pcp-testsuite_3.9.1_i386.deb 744d4220bc5b4f53fbdc7dabec693797929c5b36 46204 pcp-manager_3.9.1_i386.deb bb644b72ff74fc6b5d98dd3f39aab97e21b844fa 30220 pcp-webapi_3.9.1_i386.deb Checksums-Sha256: 4e931279886ea27c125ca6967fc41b26de9e950ace8473e4878a6000414fccd0 2462 pcp_3.9.1.dsc d29900814cf9827f48fb8da7f749e45ac1f2c9fa6ec20adebe315241dff731c5 5291320 pcp_3.9.1.tar.xz 9dbd4d6b2b644046861662ccb0ace3494b8407f8e9e01b66a2391c1f5d7d5d4e 1141362 pcp_3.9.1_i386.deb cd40e6c558597ba6eeeb5c8f7c49deed67d73751f93eaa40c23bafb31646611a 14908 pcp-conf_3.9.1_i386.deb 9edd83231bcc3ac4815af9838cdd3846810bd466d007d07aade84a9765121098 391172 libpcp3-dev_3.9.1_i386.deb 0610876892a1232a62c14d7de370137e518d1a64add79bf7bcfef66d9e63e128 179530 libpcp3_3.9.1_i386.deb fa70d6ac61a8bfb2d1ae06e1ef92951802f38bc7efb270f148ead6c420f8d707 15650 libpcp-gui2-dev_3.9.1_i386.deb 6e134f7dd9ce9c7e1f0f16848dfd3031fba741a88ddd845e80954d508b49dc2a 14464 libpcp-gui2_3.9.1_i386.deb 2854f7c55b089d720f230e33eda7ad9b4c385c7d428ec503550615071a907640 18292 libpcp-mmv1-dev_3.9.1_i386.deb ed6b797ca86a3387ca1d2b45bc54f83f8599164034a5a68511d71a8cb56f0b8d 11562 libpcp-mmv1_3.9.1_i386.deb 9baba27192d6cdab571dad4d1f309d78fb699a7d129a439bb2ee20a7f0a5a843 91646 libpcp-pmda3-dev_3.9.1_i386.deb 682e567bd380a24dcd3b09ca4c222c098031187b1d7fab05a1a9f4384248b1db 34378 libpcp-pmda3_3.9.1_i386.deb 9f763a289931261714e3b6779a06a2a59427854d1ce0590221877545c9c5d86a 25916 libpcp-trace2-dev_3.9.1_i386.deb 3b847746dabe4922bb702ce75416b747e4db70c24851f36ec78dfb8d4866f50e 18396 libpcp-trace2_3.9.1_i386.deb a81fbe4005f09576c7eeb3a4aabc8d8826e24d6487133d3b749b8caeb9921a5d 15394 libpcp-import1-dev_3.9.1_i386.deb 7c671b157e76821ac28872f141f7b6222f36c13f76cd7b64cf2b46997ac8c703 14852 libpcp-import1_3.9.1_i386.deb 94639c6b5309fae7b34aaa4e1fdb4731cffe2c8b234dee7f2da4c205a9f2cc73 39990 python-pcp_3.9.1_i386.deb 2fc7278e725c37a794063a20baec6112e2b525266677c57db16bc0d29156e603 30746 libpcp-pmda-perl_3.9.1_i386.deb cc42462612c63c0f3f656b54960f97a7f84d1edd228b54869bda2f8a11040670 16038 libpcp-import-perl_3.9.1_i386.deb f806b90a54d05a7ac4f8aaeb260559cd4977a7a07e09fbc14da474c71f2ff8f1 10968 libpcp-logsummary-perl_3.9.1_i386.deb e9b20be54c8614f169b9c9dc4274258df3bc41cd34c3edf4ee54c851a505ac3a 17294 libpcp-mmv-perl_3.9.1_i386.deb 3bb9103866e695960d869fd662e1fff81aa3bd77b29ffd6f722375d3b31d11d6 16274 pcp-import-sar2pcp_3.9.1_all.deb b16a788abf1b36bc0b7dcabf09f30475d2076bc1990eb782853f7b174e5c01bc 10130 pcp-import-mrtg2pcp_3.9.1_all.deb d91b7b94c28ff6ecf278a9d7e47133cdba940033404e7b1dfc755978b13dbae4 19122 pcp-import-sheet2pcp_3.9.1_all.deb 9e593312475019b8fe1eb20e3a53344bc65d0152eacd8ef2b81d7cfa696fb320 17800 pcp-import-iostat2pcp_3.9.1_all.deb 9a14530615812fbf0cda828c96ed01ff99db3db72ff879fb470da9389323aaab 22882 pcp-import-collectl2pcp_3.9.1_i386.deb 418ea53759377caefec317b054025c41c74d1707b169585ef5c0854e2d488ed2 2225272 pcp-testsuite_3.9.1_i386.deb 6c9a9dcb885c2e31e95ff48c2a695613374431ffec750f2085e3fa4f26ce21d4 46204 pcp-manager_3.9.1_i386.deb 18ea0c90a8697b985e44e7b34bd96fb0bacfc8e639ac0148e486d8dbcd315d2a 30220 pcp-webapi_3.9.1_i386.deb Files: be47ae49c5b781e8eb6b65376d77c133 2462 utils extra pcp_3.9.1.dsc ec0230982087ee6c9d2295b8ae1cb2cd 5291320 utils extra pcp_3.9.1.tar.xz e24c1d36326cb210e78983dedf0e602b 1141362 utils extra pcp_3.9.1_i386.deb 84c5103433b2a674b1c0b1242e2d1c2f 14908 libs extra pcp-conf_3.9.1_i386.deb 946dbbddd01a9c6b8327df29d320c3eb 391172 libdevel extra libpcp3-dev_3.9.1_i386.deb d25a4f26f6c6d16dab60ae2d938b07c1 179530 libs extra libpcp3_3.9.1_i386.deb ea68801ac0555df7d0ac47446eab2bfc 15650 libdevel extra libpcp-gui2-dev_3.9.1_i386.deb 01c9e10fbf6a79bd5b68869484d8fe5f 14464 libs extra libpcp-gui2_3.9.1_i386.deb 04dbd0b1eb6f2b75a1f45d1d10387627 18292 libdevel extra libpcp-mmv1-dev_3.9.1_i386.deb 08b8bcc4c28eeda89415bf2d8c15f3d4 11562 libs extra libpcp-mmv1_3.9.1_i386.deb 24a7418eef587a8c7f9422fdf6b0f757 91646 libdevel extra libpcp-pmda3-dev_3.9.1_i386.deb 9905e1fe65c1e47ee14e70e4419062ab 34378 libs extra libpcp-pmda3_3.9.1_i386.deb 59fd02e1cbce697c45823e556d2661a6 25916 libdevel extra libpcp-trace2-dev_3.9.1_i386.deb 471bcfcf43cc45c2cd23590c64622020 18396 libs extra libpcp-trace2_3.9.1_i386.deb 1567cb7878a5b300e34f3ca7de578693 15394 libdevel extra libpcp-import1-dev_3.9.1_i386.deb b3bd2a2bf2b4e4f86bd62a142ae4d180 14852 libs extra libpcp-import1_3.9.1_i386.deb 8863d525fb4958d685c05ceb76782eeb 39990 python extra python-pcp_3.9.1_i386.deb 611f7dea96b13ab38697d43a82a6d7c2 30746 perl extra libpcp-pmda-perl_3.9.1_i386.deb 7e5f40f82a3d2c9c74b9bb296d8a0bdd 16038 perl extra libpcp-import-perl_3.9.1_i386.deb f78f33a476a77ac2509bacb18397d1fd 10968 perl extra libpcp-logsummary-perl_3.9.1_i386.deb 7a7dc9f8fed7a5aff36f6d940ed59b07 17294 perl extra libpcp-mmv-perl_3.9.1_i386.deb 79a6e003423b23d3e2eca0d6e5b175c5 16274 utils extra pcp-import-sar2pcp_3.9.1_all.deb a601e6de8a567d0029b4de6b55e2b5e1 10130 utils extra pcp-import-mrtg2pcp_3.9.1_all.deb 56a1a7574477195db5f7c48334d7112c 19122 utils extra pcp-import-sheet2pcp_3.9.1_all.deb 13e6fd65847f4509b84ec0fb515efaa3 17800 utils extra pcp-import-iostat2pcp_3.9.1_all.deb 16d8ab59385f175e8b46ca0d2fdf3434 22882 utils extra pcp-import-collectl2pcp_3.9.1_i386.deb 9e6f8d01eddcbe3adf85b75d45c373bc 2225272 utils extra pcp-testsuite_3.9.1_i386.deb fce93b0869e95dfd86325b2dc9ed23c8 46204 utils extra pcp-manager_3.9.1_i386.deb 74a9aee999fe02656de175dfd99b6421 30220 utils extra pcp-webapi_3.9.1_i386.deb -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlMpXvYACgkQm8fl3HSIa2PDlgCeM9NEyNn8AS+L6UHDI6iKtJfh Ro4An1BgELFj7PLIhU6RDWly2oWrhrTs =AG8f -----END PGP SIGNATURE----- Thank you for your contribution to Debian. From debbugs@buxtehude.debian.org Wed Mar 19 18:39:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 695507F76 for ; Wed, 19 Mar 2014 18:39:16 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3B7AA304051 for ; Wed, 19 Mar 2014 16:39:13 -0700 (PDT) X-ASG-Debug-ID: 1395272350-04cbb054b84d6760001-S8gJnT Received: from buxtehude.debian.org (buxtehude.debian.org [140.211.166.26]) by cuda.sgi.com with ESMTP id EcJ0iuxWY69Rj1jV (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Wed, 19 Mar 2014 16:39:11 -0700 (PDT) X-Barracuda-Envelope-From: debbugs@buxtehude.debian.org X-Barracuda-Apparent-Source-IP: 140.211.166.26 Received: from debbugs by buxtehude.debian.org with local (Exim 4.80) (envelope-from ) id 1WQQ4j-0004AF-Ba; Wed, 19 Mar 2014 23:39:09 +0000 MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) X-Loop: owner@bugs.debian.org From: owner@bugs.debian.org (Debian Bug Tracking System) To: Nathan Scott Subject: Bug#719734: marked as done (pcp: FTBFS: chown: invalid user: 'pcp:pcp') Message-ID: X-ASG-Orig-Subj: Bug#719734: marked as done (pcp: FTBFS: chown: invalid user: 'pcp:pcp') References: <20130814180053.4905.99983.reportbug@ghostwheel.internal.ucko.debian.net> X-Debian-PR-Message: closed 719734 X-Debian-PR-Package: src:pcp X-Debian-PR-Source: pcp Date: Wed, 19 Mar 2014 23:39:09 +0000 Content-Type: multipart/mixed; boundary="----------=_1395272349-15997-0" Sender: Debian BTS X-Barracuda-Connect: buxtehude.debian.org[140.211.166.26] X-Barracuda-Start-Time: 1395272351 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4074 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format... ------------=_1395272349-15997-0 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Your message dated Wed, 19 Mar 2014 23:35:02 +0000 with message-id and subject line Bug#719734: fixed in pcp 3.9.1 has caused the Debian Bug report #719734, regarding pcp: FTBFS: chown: invalid user: 'pcp:pcp' to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) --=20 719734: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D719734 Debian Bug Tracking System Contact owner@bugs.debian.org with problems ------------=_1395272349-15997-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by bugs.debian.org; 14 Aug 2013 18:01:00 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.2-bugs.debian.org_2005_01_02 (2011-06-06) on buxtehude.debian.org X-Spam-Level: X-Spam-Status: No, score=-10.7 required=4.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FROMDEVELOPER,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_HTTP, RCVD_IN_SORBS_MISC,RCVD_IN_SORBS_SOCKS,XMAILER_REPORTBUG,X_DEBBUGS_CC autolearn=ham version=3.3.2-bugs.debian.org_2005_01_02 X-Spam-Bayes: score:0.0000 Tokens: new, 15; hammy, 125; neutral, 43; spammy, 1. spammytokens:0.870-+--Policy hammytokens:0.000-+--H*M:reportbug, 0.000-+--H*MI:reportbug, 0.000-+--H*x:reportbug, 0.000-+--H*UA:reportbug, 0.000-+--H*x:6.4.4 Return-path: Received: from qmta01.westchester.pa.mail.comcast.net ([76.96.62.16]) by buxtehude.debian.org with esmtp (Exim 4.80) (envelope-from ) id 1V9fNU-0004Pj-92 for submit@bugs.debian.org; Wed, 14 Aug 2013 18:01:00 +0000 Received: from omta16.westchester.pa.mail.comcast.net ([76.96.62.88]) by qmta01.westchester.pa.mail.comcast.net with comcast id Cbqi1m0041uE5Es51i0uo3; Wed, 14 Aug 2013 18:00:54 +0000 Received: from ghostwheel.internal.ucko.debian.net ([68.49.0.90]) by omta16.westchester.pa.mail.comcast.net with comcast id Ci0t1m0101wWZuC3ci0tgc; Wed, 14 Aug 2013 18:00:54 +0000 Received: from amu by ghostwheel.internal.ucko.debian.net with local (Exim 4.80) (envelope-from ) id 1V9fNN-0001Lk-AR for submit@bugs.debian.org; Wed, 14 Aug 2013 14:00:53 -0400 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="UTF-8" From: "Aaron M. Ucko" To: Debian Bug Tracking System Subject: pcp: FTBFS: chown: invalid user: 'pcp:pcp' Message-ID: <20130814180053.4905.99983.reportbug@ghostwheel.internal.ucko.debian.net> X-Mailer: reportbug 6.4.4 Date: Wed, 14 Aug 2013 14:00:53 -0400 X-Debbugs-Cc: ucko@debian.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=comcast.net; s=q20121106; t=1376503254; bh=5JW9/qnkhnsFFD/xrTfRWP3CAKhqRi2xYMqVhfrUvzI=; h=Received:Received:Received:MIME-Version:Content-Type:From:To: Subject:Message-ID:Date; b=kQQM7D5A8nOUuUDeO0jbJp7nwkoJgdsGeS4fD+fj7KWNL3Z86KYMfoWt4smPjfJLf 6g10airQHve0D4nh+VXNSroXVwNxXdw4wiI5AjEs3PjEm8wcUrW1cDpNIIk6Ovb0Yo hraakYlfTPJoF8nMm/IxQlhE9FNEisEqNHybtP5LqeERWTe+2zIYKCjcAHaF9kC1PW 6m4rxvVFW8AhxWlahUu09M6xjGINy8ifHXbVRh7rbw3A+pLH4SHpHeRfvFOGnO+bJO j4p02iPGFArrIajLxqdTTM15kH8JjEfDsE0I/an/8GVmcwE7VfNM+71pv+Tn1Bgc+3 sYNf4YYWa3Aew== Delivered-To: submit@bugs.debian.org Source: pcp Version: 3.8.2 Severity: serious Justification: fails to build from source (but built successfully in the past) Builds of pcp in environments (as on the autobuilders) with no existing pcp user or group have been failing: ./install-sh -o root -g root -m 775 -o pcp -g pcp -d /var/lib/pcp/config/pmda chown: invalid user: 'pcp:pcp' make[1]: *** [install_pcp] Error 1 make[1]: Leaving directory `/«PKGBUILDDIR»' make: *** [binary-arch] Error 2 Given that pcp already allocates both dynamically, I would recommend sticking with that approach rather than trying to move to static IDs, and simply ensuring that pcp.postinst.tail adjusts all ownership and permission settings appropriately (ideally via dpkg-statoverride, per Policy 10.9.1). Could you please look into it? Thanks! ------------=_1395272349-15997-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 719734-close) by bugs.debian.org; 19 Mar 2014 23:35:05 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.2-bugs.debian.org_2005_01_02 (2011-06-06) on buxtehude.debian.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=4.0 tests=BAYES_00,DIGITS_LETTERS, FOURLA,FROMDEVELOPER,FVGT_m_MULTI_ODD,HAS_BUG_NUMBER,PGPSIGNATURE, RCVD_IN_DNSWL_MED,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2-bugs.debian.org_2005_01_02 X-Spam-Bayes: score:0.0000 Tokens: new, 133; hammy, 151; neutral, 247; spammy, 0. spammytokens: hammytokens:0.000-+--HX-Debian:DAK, 0.000-+--H*rp:D*ftp-master.debian.org, 0.000-+--HX-DAK:process-upload, 0.000-+--H*MI:franck, 0.000-+--H*m:franck Return-path: Received: from franck.debian.org ([138.16.160.12]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1WQQ0m-0003Sm-Sl for 719734-close@bugs.debian.org; Wed, 19 Mar 2014 23:35:05 +0000 Received: from dak by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WQQ0k-0003ul-Uq; Wed, 19 Mar 2014 23:35:02 +0000 From: Nathan Scott To: 719734-close@bugs.debian.org X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: pcp MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Subject: Bug#719734: fixed in pcp 3.9.1 Message-Id: Sender: Archive Administrator Date: Wed, 19 Mar 2014 23:35:02 +0000 Source: pcp Source-Version: 3.9.1 We believe that the bug you reported is fixed in the latest version of pcp, which is due to be installed in the Debian FTP archive. A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 719734@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Nathan Scott (supplier of updated pcp package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@ftp-master.debian.org) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.8 Date: Wed, 19 Mar 2014 12:55:16 +1100 Source: pcp Binary: pcp pcp-conf libpcp3-dev libpcp3 libpcp-gui2-dev libpcp-gui2 libpcp-mmv1-dev libpcp-mmv1 libpcp-pmda3-dev libpcp-pmda3 libpcp-trace2-dev libpcp-trace2 libpcp-import1-dev libpcp-import1 python-pcp libpcp-pmda-perl libpcp-import-perl libpcp-logsummary-perl libpcp-mmv-perl pcp-import-sar2pcp pcp-import-mrtg2pcp pcp-import-sheet2pcp pcp-import-iostat2pcp pcp-import-collectl2pcp pcp-testsuite pcp-manager pcp-webapi Architecture: source i386 all Version: 3.9.1 Distribution: unstable Urgency: low Maintainer: PCP Development Team Changed-By: Nathan Scott Description: libpcp-gui2 - Performance Co-Pilot graphical client tools library libpcp-gui2-dev - Performance Co-Pilot graphical client tools library and headers libpcp-import-perl - Performance Co-Pilot log import Perl module libpcp-import1 - Performance Co-Pilot data import library libpcp-import1-dev - Performance Co-Pilot data import library and headers libpcp-logsummary-perl - Performance Co-Pilot historical log summary module libpcp-mmv-perl - Performance Co-Pilot Memory Mapped Value Perl module libpcp-mmv1 - Performance Co-Pilot Memory Mapped Value client library libpcp-mmv1-dev - Performance Co-Pilot Memory Mapped Value library and headers libpcp-pmda-perl - Performance Co-Pilot Domain Agent Perl module libpcp-pmda3 - Performance Co-Pilot Domain Agent library libpcp-pmda3-dev - Performance Co-Pilot Domain Agent library and headers libpcp-trace2 - Performance Co-Pilot application tracing library libpcp-trace2-dev - Performance Co-Pilot application tracing library and headers libpcp3 - Performance Co-Pilot library libpcp3-dev - Performance Co-Pilot library and headers pcp - System level performance monitoring and performance management pcp-conf - Performance Co-Pilot runtime configuration pcp-import-collectl2pcp - Tool for importing data from collectl into PCP archive logs pcp-import-iostat2pcp - Tool for importing data from iostat into PCP archive logs pcp-import-mrtg2pcp - Tool for importing data from MRTG into PCP archive logs pcp-import-sar2pcp - Tool for importing data from sar into PCP archive logs pcp-import-sheet2pcp - Tool for importing data from a spreadsheet into PCP archive logs pcp-manager - Performance Co-Pilot (PCP) manager daemon pcp-testsuite - Performance Co-Pilot (PCP) Test Suite pcp-webapi - Performance Co-Pilot (PCP) web API service python-pcp - Performance Co-Pilot Python PMAPI module Closes: 719734 739952 Changes: pcp (3.9.1) unstable; urgency=low . * New release (full details in CHANGELOG). * Fix build depends for libmicrohttpd-dev. * Update debian copyright notices (closes: #739952) * Fix build failure related to pcp-manager (closes: #719734) Checksums-Sha1: 5052a957a864e03de23f87c72c45ef1c8530967f 2462 pcp_3.9.1.dsc 94f8132e5eb88a9b2a8cca50cb85e6d51a9994d8 5291320 pcp_3.9.1.tar.xz 2a00ae6b41620f47ad6d29f2b05468daa342bef6 1141362 pcp_3.9.1_i386.deb 3e4a42b1df95a8dbe268bc742be964a599937ce2 14908 pcp-conf_3.9.1_i386.deb c5a548b76d9748159f195b1db9636bc604ae926a 391172 libpcp3-dev_3.9.1_i386.deb c25ba9d11e622a3fcbf69e3e698d999b791fc46e 179530 libpcp3_3.9.1_i386.deb 5ec2f44e26f2088d9374cb168f5a2ba181a02608 15650 libpcp-gui2-dev_3.9.1_i386.deb 168c7bef5134a6add3b84045821b0570308244f2 14464 libpcp-gui2_3.9.1_i386.deb dd1dbd2dc02ab617d27e44c87030b6f5308929fe 18292 libpcp-mmv1-dev_3.9.1_i386.deb c2796bf3603aaf59d93ac198bbe4f024d3cf3111 11562 libpcp-mmv1_3.9.1_i386.deb a3246635c692395fd25dc94970f6ae05f3ff5564 91646 libpcp-pmda3-dev_3.9.1_i386.deb 3d2d4512c9d4408b392ae6e24a11cd9a2705ff84 34378 libpcp-pmda3_3.9.1_i386.deb a4d5a9557fd62fa4d5cedd202608ea2a7e551970 25916 libpcp-trace2-dev_3.9.1_i386.deb ecc8ff1ce9d1505f51bf45a041d55ffaf297b437 18396 libpcp-trace2_3.9.1_i386.deb e42fc88026e2484ef37379aac547a2c6cc6c5d3b 15394 libpcp-import1-dev_3.9.1_i386.deb dd8ec029921d875f3f4c78911fd74d076efd565f 14852 libpcp-import1_3.9.1_i386.deb 4e5c6dfa1c1912b89f08787bc5d597fd2ccc04f5 39990 python-pcp_3.9.1_i386.deb e2019919f2a317a0420f531108c24814fe1dcec3 30746 libpcp-pmda-perl_3.9.1_i386.deb 93e5c74db69dafbed79942f38520ddd63d72a833 16038 libpcp-import-perl_3.9.1_i386.deb 331b2ad3fdb501fe43625cec2dab67f526085db3 10968 libpcp-logsummary-perl_3.9.1_i386.deb 4f5820a9470c03c1cb7e6908c060a5a82c98d287 17294 libpcp-mmv-perl_3.9.1_i386.deb da7308f563094983b115aa71d098aeece376ff0b 16274 pcp-import-sar2pcp_3.9.1_all.deb 4531af0ac11fb946a6ce9566e70eb9ed4178f27b 10130 pcp-import-mrtg2pcp_3.9.1_all.deb f996641103137fc00c244e5317ee383331aace19 19122 pcp-import-sheet2pcp_3.9.1_all.deb 40ce175134f93d7c1ba1b187a60e47de715d1606 17800 pcp-import-iostat2pcp_3.9.1_all.deb c1a505e78995534ce1312b02f5903ecc5b5a5a0e 22882 pcp-import-collectl2pcp_3.9.1_i386.deb 90127f10d52976dcd4873e599c689901537f8312 2225272 pcp-testsuite_3.9.1_i386.deb 744d4220bc5b4f53fbdc7dabec693797929c5b36 46204 pcp-manager_3.9.1_i386.deb bb644b72ff74fc6b5d98dd3f39aab97e21b844fa 30220 pcp-webapi_3.9.1_i386.deb Checksums-Sha256: 4e931279886ea27c125ca6967fc41b26de9e950ace8473e4878a6000414fccd0 2462 pcp_3.9.1.dsc d29900814cf9827f48fb8da7f749e45ac1f2c9fa6ec20adebe315241dff731c5 5291320 pcp_3.9.1.tar.xz 9dbd4d6b2b644046861662ccb0ace3494b8407f8e9e01b66a2391c1f5d7d5d4e 1141362 pcp_3.9.1_i386.deb cd40e6c558597ba6eeeb5c8f7c49deed67d73751f93eaa40c23bafb31646611a 14908 pcp-conf_3.9.1_i386.deb 9edd83231bcc3ac4815af9838cdd3846810bd466d007d07aade84a9765121098 391172 libpcp3-dev_3.9.1_i386.deb 0610876892a1232a62c14d7de370137e518d1a64add79bf7bcfef66d9e63e128 179530 libpcp3_3.9.1_i386.deb fa70d6ac61a8bfb2d1ae06e1ef92951802f38bc7efb270f148ead6c420f8d707 15650 libpcp-gui2-dev_3.9.1_i386.deb 6e134f7dd9ce9c7e1f0f16848dfd3031fba741a88ddd845e80954d508b49dc2a 14464 libpcp-gui2_3.9.1_i386.deb 2854f7c55b089d720f230e33eda7ad9b4c385c7d428ec503550615071a907640 18292 libpcp-mmv1-dev_3.9.1_i386.deb ed6b797ca86a3387ca1d2b45bc54f83f8599164034a5a68511d71a8cb56f0b8d 11562 libpcp-mmv1_3.9.1_i386.deb 9baba27192d6cdab571dad4d1f309d78fb699a7d129a439bb2ee20a7f0a5a843 91646 libpcp-pmda3-dev_3.9.1_i386.deb 682e567bd380a24dcd3b09ca4c222c098031187b1d7fab05a1a9f4384248b1db 34378 libpcp-pmda3_3.9.1_i386.deb 9f763a289931261714e3b6779a06a2a59427854d1ce0590221877545c9c5d86a 25916 libpcp-trace2-dev_3.9.1_i386.deb 3b847746dabe4922bb702ce75416b747e4db70c24851f36ec78dfb8d4866f50e 18396 libpcp-trace2_3.9.1_i386.deb a81fbe4005f09576c7eeb3a4aabc8d8826e24d6487133d3b749b8caeb9921a5d 15394 libpcp-import1-dev_3.9.1_i386.deb 7c671b157e76821ac28872f141f7b6222f36c13f76cd7b64cf2b46997ac8c703 14852 libpcp-import1_3.9.1_i386.deb 94639c6b5309fae7b34aaa4e1fdb4731cffe2c8b234dee7f2da4c205a9f2cc73 39990 python-pcp_3.9.1_i386.deb 2fc7278e725c37a794063a20baec6112e2b525266677c57db16bc0d29156e603 30746 libpcp-pmda-perl_3.9.1_i386.deb cc42462612c63c0f3f656b54960f97a7f84d1edd228b54869bda2f8a11040670 16038 libpcp-import-perl_3.9.1_i386.deb f806b90a54d05a7ac4f8aaeb260559cd4977a7a07e09fbc14da474c71f2ff8f1 10968 libpcp-logsummary-perl_3.9.1_i386.deb e9b20be54c8614f169b9c9dc4274258df3bc41cd34c3edf4ee54c851a505ac3a 17294 libpcp-mmv-perl_3.9.1_i386.deb 3bb9103866e695960d869fd662e1fff81aa3bd77b29ffd6f722375d3b31d11d6 16274 pcp-import-sar2pcp_3.9.1_all.deb b16a788abf1b36bc0b7dcabf09f30475d2076bc1990eb782853f7b174e5c01bc 10130 pcp-import-mrtg2pcp_3.9.1_all.deb d91b7b94c28ff6ecf278a9d7e47133cdba940033404e7b1dfc755978b13dbae4 19122 pcp-import-sheet2pcp_3.9.1_all.deb 9e593312475019b8fe1eb20e3a53344bc65d0152eacd8ef2b81d7cfa696fb320 17800 pcp-import-iostat2pcp_3.9.1_all.deb 9a14530615812fbf0cda828c96ed01ff99db3db72ff879fb470da9389323aaab 22882 pcp-import-collectl2pcp_3.9.1_i386.deb 418ea53759377caefec317b054025c41c74d1707b169585ef5c0854e2d488ed2 2225272 pcp-testsuite_3.9.1_i386.deb 6c9a9dcb885c2e31e95ff48c2a695613374431ffec750f2085e3fa4f26ce21d4 46204 pcp-manager_3.9.1_i386.deb 18ea0c90a8697b985e44e7b34bd96fb0bacfc8e639ac0148e486d8dbcd315d2a 30220 pcp-webapi_3.9.1_i386.deb Files: be47ae49c5b781e8eb6b65376d77c133 2462 utils extra pcp_3.9.1.dsc ec0230982087ee6c9d2295b8ae1cb2cd 5291320 utils extra pcp_3.9.1.tar.xz e24c1d36326cb210e78983dedf0e602b 1141362 utils extra pcp_3.9.1_i386.deb 84c5103433b2a674b1c0b1242e2d1c2f 14908 libs extra pcp-conf_3.9.1_i386.deb 946dbbddd01a9c6b8327df29d320c3eb 391172 libdevel extra libpcp3-dev_3.9.1_i386.deb d25a4f26f6c6d16dab60ae2d938b07c1 179530 libs extra libpcp3_3.9.1_i386.deb ea68801ac0555df7d0ac47446eab2bfc 15650 libdevel extra libpcp-gui2-dev_3.9.1_i386.deb 01c9e10fbf6a79bd5b68869484d8fe5f 14464 libs extra libpcp-gui2_3.9.1_i386.deb 04dbd0b1eb6f2b75a1f45d1d10387627 18292 libdevel extra libpcp-mmv1-dev_3.9.1_i386.deb 08b8bcc4c28eeda89415bf2d8c15f3d4 11562 libs extra libpcp-mmv1_3.9.1_i386.deb 24a7418eef587a8c7f9422fdf6b0f757 91646 libdevel extra libpcp-pmda3-dev_3.9.1_i386.deb 9905e1fe65c1e47ee14e70e4419062ab 34378 libs extra libpcp-pmda3_3.9.1_i386.deb 59fd02e1cbce697c45823e556d2661a6 25916 libdevel extra libpcp-trace2-dev_3.9.1_i386.deb 471bcfcf43cc45c2cd23590c64622020 18396 libs extra libpcp-trace2_3.9.1_i386.deb 1567cb7878a5b300e34f3ca7de578693 15394 libdevel extra libpcp-import1-dev_3.9.1_i386.deb b3bd2a2bf2b4e4f86bd62a142ae4d180 14852 libs extra libpcp-import1_3.9.1_i386.deb 8863d525fb4958d685c05ceb76782eeb 39990 python extra python-pcp_3.9.1_i386.deb 611f7dea96b13ab38697d43a82a6d7c2 30746 perl extra libpcp-pmda-perl_3.9.1_i386.deb 7e5f40f82a3d2c9c74b9bb296d8a0bdd 16038 perl extra libpcp-import-perl_3.9.1_i386.deb f78f33a476a77ac2509bacb18397d1fd 10968 perl extra libpcp-logsummary-perl_3.9.1_i386.deb 7a7dc9f8fed7a5aff36f6d940ed59b07 17294 perl extra libpcp-mmv-perl_3.9.1_i386.deb 79a6e003423b23d3e2eca0d6e5b175c5 16274 utils extra pcp-import-sar2pcp_3.9.1_all.deb a601e6de8a567d0029b4de6b55e2b5e1 10130 utils extra pcp-import-mrtg2pcp_3.9.1_all.deb 56a1a7574477195db5f7c48334d7112c 19122 utils extra pcp-import-sheet2pcp_3.9.1_all.deb 13e6fd65847f4509b84ec0fb515efaa3 17800 utils extra pcp-import-iostat2pcp_3.9.1_all.deb 16d8ab59385f175e8b46ca0d2fdf3434 22882 utils extra pcp-import-collectl2pcp_3.9.1_i386.deb 9e6f8d01eddcbe3adf85b75d45c373bc 2225272 utils extra pcp-testsuite_3.9.1_i386.deb fce93b0869e95dfd86325b2dc9ed23c8 46204 utils extra pcp-manager_3.9.1_i386.deb 74a9aee999fe02656de175dfd99b6421 30220 utils extra pcp-webapi_3.9.1_i386.deb -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlMpXvYACgkQm8fl3HSIa2PDlgCeM9NEyNn8AS+L6UHDI6iKtJfh Ro4An1BgELFj7PLIhU6RDWly2oWrhrTs =AG8f -----END PGP SIGNATURE----- ------------=_1395272349-15997-0-- From debbugs@buxtehude.debian.org Wed Mar 19 18:39:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7ECFD7F87 for ; Wed, 19 Mar 2014 18:39:19 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id EE8B1AC011 for ; Wed, 19 Mar 2014 16:39:18 -0700 (PDT) X-ASG-Debug-ID: 1395272356-04cbb054b94d6780001-S8gJnT Received: from buxtehude.debian.org (buxtehude.debian.org [140.211.166.26]) by cuda.sgi.com with ESMTP id McZ7bNFFsvSAB8sb (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Wed, 19 Mar 2014 16:39:16 -0700 (PDT) X-Barracuda-Envelope-From: debbugs@buxtehude.debian.org X-Barracuda-Apparent-Source-IP: 140.211.166.26 Received: from debbugs by buxtehude.debian.org with local (Exim 4.80) (envelope-from ) id 1WQQ4n-0004B6-IR; Wed, 19 Mar 2014 23:39:13 +0000 MIME-Version: 1.0 X-Mailer: MIME-tools 5.503 (Entity 5.503) X-Loop: owner@bugs.debian.org From: owner@bugs.debian.org (Debian Bug Tracking System) To: Nathan Scott Subject: Bug#739952: marked as done (missing license in debian/copyright) Message-ID: X-ASG-Orig-Subj: Bug#739952: marked as done (missing license in debian/copyright) References: X-Debian-PR-Message: closed 739952 X-Debian-PR-Package: pcp X-Debian-PR-Source: pcp Date: Wed, 19 Mar 2014 23:39:13 +0000 Content-Type: multipart/mixed; boundary="----------=_1395272353-16020-0" Sender: Debian BTS X-Barracuda-Connect: buxtehude.debian.org[140.211.166.26] X-Barracuda-Start-Time: 1395272356 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4074 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format... ------------=_1395272353-16020-0 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Your message dated Wed, 19 Mar 2014 23:35:02 +0000 with message-id and subject line Bug#739952: fixed in pcp 3.9.1 has caused the Debian Bug report #739952, regarding missing license in debian/copyright to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) --=20 739952: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D739952 Debian Bug Tracking System Contact owner@bugs.debian.org with problems ------------=_1395272353-16020-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by bugs.debian.org; 24 Feb 2014 10:45:11 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.2-bugs.debian.org_2005_01_02 (2011-06-06) on buxtehude.debian.org X-Spam-Level: X-Spam-Status: No, score=-11.9 required=4.0 tests=BAYES_00,FOURLA, FROMDEVELOPER,HAS_PACKAGE autolearn=ham version=3.3.2-bugs.debian.org_2005_01_02 X-Spam-Bayes: score:0.0000 Tokens: new, 10; hammy, 104; neutral, 35; spammy, 0. spammytokens: hammytokens:0.000-+--xdebbugscc, 0.000-+--x-debbugs-cc, 0.000-+--Usertags, 0.000-+--X-Debbugs-CC, 0.000-+--XDebbugsCC Return-path: Received: from idefix.server.alteholz.net ([78.47.192.125]) by buxtehude.debian.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1WHt27-0000wx-3t for submit@bugs.debian.org; Mon, 24 Feb 2014 10:45:11 +0000 Received: from uucp by idefix.server.alteholz.net with local-rmail (Exim 4.72) (envelope-from ) id 1WHt23-0001Jp-J6 for submit@bugs.debian.org; Mon, 24 Feb 2014 11:45:07 +0100 Received: from debian (helo=localhost) by jupiter.server.alteholz.net with local-esmtp (Exim 4.80) (envelope-from ) id 1WHssN-0008TH-7w for submit@bugs.debian.org; Mon, 24 Feb 2014 11:35:07 +0100 Date: Mon, 24 Feb 2014 11:35:07 +0100 (CET) From: Thorsten Alteholz X-X-Sender: debian@jupiter.server.alteholz.net To: submit@bugs.debian.org Subject: missing license in debian/copyright Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; format=flowed; charset=US-ASCII Delivered-To: submit@bugs.debian.org Package: pcp Severity: serious User: alteholz@debian.org Usertags: ftp X-Debbugs-CC: ftpmaster@ftp-master.debian.org thanks Dear Maintainer, please add the missing MIT and BSD licenses of files in pcp-3.9.0/src/pmwebapi/jsdemos/* especially jquery-ui-themes-1.10.2.tar.gz to debian/copyright. (you should also mention the version of LGPL in debian/copyright) Thanks! Thorsten ------------=_1395272353-16020-0 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 739952-close) by bugs.debian.org; 19 Mar 2014 23:35:07 +0000 X-Spam-Checker-Version: SpamAssassin 3.3.2-bugs.debian.org_2005_01_02 (2011-06-06) on buxtehude.debian.org X-Spam-Level: X-Spam-Status: No, score=-12.8 required=4.0 tests=BAYES_00,DIGITS_LETTERS, FOURLA,FROMDEVELOPER,FVGT_m_MULTI_ODD,HAS_BUG_NUMBER,PGPSIGNATURE, RCVD_IN_DNSWL_MED,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2-bugs.debian.org_2005_01_02 X-Spam-Bayes: score:0.0000 Tokens: new, 141; hammy, 151; neutral, 239; spammy, 0. spammytokens: hammytokens:0.000-+--HX-Debian:DAK, 0.000-+--H*rp:D*ftp-master.debian.org, 0.000-+--HX-DAK:process-upload, 0.000-+--H*MI:franck, 0.000-+--H*m:franck Return-path: Received: from franck.debian.org ([138.16.160.12]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by buxtehude.debian.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1WQQ0p-0003TW-D4 for 739952-close@bugs.debian.org; Wed, 19 Mar 2014 23:35:07 +0000 Received: from dak by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WQQ0k-0003uq-Vk; Wed, 19 Mar 2014 23:35:02 +0000 From: Nathan Scott To: 739952-close@bugs.debian.org X-DAK: dak process-upload X-Debian: DAK X-Debian-Package: pcp MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Subject: Bug#739952: fixed in pcp 3.9.1 Message-Id: Sender: Archive Administrator Date: Wed, 19 Mar 2014 23:35:02 +0000 X-CrossAssassin-Score: 2 Source: pcp Source-Version: 3.9.1 We believe that the bug you reported is fixed in the latest version of pcp, which is due to be installed in the Debian FTP archive. A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 739952@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Nathan Scott (supplier of updated pcp package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@ftp-master.debian.org) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 1.8 Date: Wed, 19 Mar 2014 12:55:16 +1100 Source: pcp Binary: pcp pcp-conf libpcp3-dev libpcp3 libpcp-gui2-dev libpcp-gui2 libpcp-mmv1-dev libpcp-mmv1 libpcp-pmda3-dev libpcp-pmda3 libpcp-trace2-dev libpcp-trace2 libpcp-import1-dev libpcp-import1 python-pcp libpcp-pmda-perl libpcp-import-perl libpcp-logsummary-perl libpcp-mmv-perl pcp-import-sar2pcp pcp-import-mrtg2pcp pcp-import-sheet2pcp pcp-import-iostat2pcp pcp-import-collectl2pcp pcp-testsuite pcp-manager pcp-webapi Architecture: source i386 all Version: 3.9.1 Distribution: unstable Urgency: low Maintainer: PCP Development Team Changed-By: Nathan Scott Description: libpcp-gui2 - Performance Co-Pilot graphical client tools library libpcp-gui2-dev - Performance Co-Pilot graphical client tools library and headers libpcp-import-perl - Performance Co-Pilot log import Perl module libpcp-import1 - Performance Co-Pilot data import library libpcp-import1-dev - Performance Co-Pilot data import library and headers libpcp-logsummary-perl - Performance Co-Pilot historical log summary module libpcp-mmv-perl - Performance Co-Pilot Memory Mapped Value Perl module libpcp-mmv1 - Performance Co-Pilot Memory Mapped Value client library libpcp-mmv1-dev - Performance Co-Pilot Memory Mapped Value library and headers libpcp-pmda-perl - Performance Co-Pilot Domain Agent Perl module libpcp-pmda3 - Performance Co-Pilot Domain Agent library libpcp-pmda3-dev - Performance Co-Pilot Domain Agent library and headers libpcp-trace2 - Performance Co-Pilot application tracing library libpcp-trace2-dev - Performance Co-Pilot application tracing library and headers libpcp3 - Performance Co-Pilot library libpcp3-dev - Performance Co-Pilot library and headers pcp - System level performance monitoring and performance management pcp-conf - Performance Co-Pilot runtime configuration pcp-import-collectl2pcp - Tool for importing data from collectl into PCP archive logs pcp-import-iostat2pcp - Tool for importing data from iostat into PCP archive logs pcp-import-mrtg2pcp - Tool for importing data from MRTG into PCP archive logs pcp-import-sar2pcp - Tool for importing data from sar into PCP archive logs pcp-import-sheet2pcp - Tool for importing data from a spreadsheet into PCP archive logs pcp-manager - Performance Co-Pilot (PCP) manager daemon pcp-testsuite - Performance Co-Pilot (PCP) Test Suite pcp-webapi - Performance Co-Pilot (PCP) web API service python-pcp - Performance Co-Pilot Python PMAPI module Closes: 719734 739952 Changes: pcp (3.9.1) unstable; urgency=low . * New release (full details in CHANGELOG). * Fix build depends for libmicrohttpd-dev. * Update debian copyright notices (closes: #739952) * Fix build failure related to pcp-manager (closes: #719734) Checksums-Sha1: 5052a957a864e03de23f87c72c45ef1c8530967f 2462 pcp_3.9.1.dsc 94f8132e5eb88a9b2a8cca50cb85e6d51a9994d8 5291320 pcp_3.9.1.tar.xz 2a00ae6b41620f47ad6d29f2b05468daa342bef6 1141362 pcp_3.9.1_i386.deb 3e4a42b1df95a8dbe268bc742be964a599937ce2 14908 pcp-conf_3.9.1_i386.deb c5a548b76d9748159f195b1db9636bc604ae926a 391172 libpcp3-dev_3.9.1_i386.deb c25ba9d11e622a3fcbf69e3e698d999b791fc46e 179530 libpcp3_3.9.1_i386.deb 5ec2f44e26f2088d9374cb168f5a2ba181a02608 15650 libpcp-gui2-dev_3.9.1_i386.deb 168c7bef5134a6add3b84045821b0570308244f2 14464 libpcp-gui2_3.9.1_i386.deb dd1dbd2dc02ab617d27e44c87030b6f5308929fe 18292 libpcp-mmv1-dev_3.9.1_i386.deb c2796bf3603aaf59d93ac198bbe4f024d3cf3111 11562 libpcp-mmv1_3.9.1_i386.deb a3246635c692395fd25dc94970f6ae05f3ff5564 91646 libpcp-pmda3-dev_3.9.1_i386.deb 3d2d4512c9d4408b392ae6e24a11cd9a2705ff84 34378 libpcp-pmda3_3.9.1_i386.deb a4d5a9557fd62fa4d5cedd202608ea2a7e551970 25916 libpcp-trace2-dev_3.9.1_i386.deb ecc8ff1ce9d1505f51bf45a041d55ffaf297b437 18396 libpcp-trace2_3.9.1_i386.deb e42fc88026e2484ef37379aac547a2c6cc6c5d3b 15394 libpcp-import1-dev_3.9.1_i386.deb dd8ec029921d875f3f4c78911fd74d076efd565f 14852 libpcp-import1_3.9.1_i386.deb 4e5c6dfa1c1912b89f08787bc5d597fd2ccc04f5 39990 python-pcp_3.9.1_i386.deb e2019919f2a317a0420f531108c24814fe1dcec3 30746 libpcp-pmda-perl_3.9.1_i386.deb 93e5c74db69dafbed79942f38520ddd63d72a833 16038 libpcp-import-perl_3.9.1_i386.deb 331b2ad3fdb501fe43625cec2dab67f526085db3 10968 libpcp-logsummary-perl_3.9.1_i386.deb 4f5820a9470c03c1cb7e6908c060a5a82c98d287 17294 libpcp-mmv-perl_3.9.1_i386.deb da7308f563094983b115aa71d098aeece376ff0b 16274 pcp-import-sar2pcp_3.9.1_all.deb 4531af0ac11fb946a6ce9566e70eb9ed4178f27b 10130 pcp-import-mrtg2pcp_3.9.1_all.deb f996641103137fc00c244e5317ee383331aace19 19122 pcp-import-sheet2pcp_3.9.1_all.deb 40ce175134f93d7c1ba1b187a60e47de715d1606 17800 pcp-import-iostat2pcp_3.9.1_all.deb c1a505e78995534ce1312b02f5903ecc5b5a5a0e 22882 pcp-import-collectl2pcp_3.9.1_i386.deb 90127f10d52976dcd4873e599c689901537f8312 2225272 pcp-testsuite_3.9.1_i386.deb 744d4220bc5b4f53fbdc7dabec693797929c5b36 46204 pcp-manager_3.9.1_i386.deb bb644b72ff74fc6b5d98dd3f39aab97e21b844fa 30220 pcp-webapi_3.9.1_i386.deb Checksums-Sha256: 4e931279886ea27c125ca6967fc41b26de9e950ace8473e4878a6000414fccd0 2462 pcp_3.9.1.dsc d29900814cf9827f48fb8da7f749e45ac1f2c9fa6ec20adebe315241dff731c5 5291320 pcp_3.9.1.tar.xz 9dbd4d6b2b644046861662ccb0ace3494b8407f8e9e01b66a2391c1f5d7d5d4e 1141362 pcp_3.9.1_i386.deb cd40e6c558597ba6eeeb5c8f7c49deed67d73751f93eaa40c23bafb31646611a 14908 pcp-conf_3.9.1_i386.deb 9edd83231bcc3ac4815af9838cdd3846810bd466d007d07aade84a9765121098 391172 libpcp3-dev_3.9.1_i386.deb 0610876892a1232a62c14d7de370137e518d1a64add79bf7bcfef66d9e63e128 179530 libpcp3_3.9.1_i386.deb fa70d6ac61a8bfb2d1ae06e1ef92951802f38bc7efb270f148ead6c420f8d707 15650 libpcp-gui2-dev_3.9.1_i386.deb 6e134f7dd9ce9c7e1f0f16848dfd3031fba741a88ddd845e80954d508b49dc2a 14464 libpcp-gui2_3.9.1_i386.deb 2854f7c55b089d720f230e33eda7ad9b4c385c7d428ec503550615071a907640 18292 libpcp-mmv1-dev_3.9.1_i386.deb ed6b797ca86a3387ca1d2b45bc54f83f8599164034a5a68511d71a8cb56f0b8d 11562 libpcp-mmv1_3.9.1_i386.deb 9baba27192d6cdab571dad4d1f309d78fb699a7d129a439bb2ee20a7f0a5a843 91646 libpcp-pmda3-dev_3.9.1_i386.deb 682e567bd380a24dcd3b09ca4c222c098031187b1d7fab05a1a9f4384248b1db 34378 libpcp-pmda3_3.9.1_i386.deb 9f763a289931261714e3b6779a06a2a59427854d1ce0590221877545c9c5d86a 25916 libpcp-trace2-dev_3.9.1_i386.deb 3b847746dabe4922bb702ce75416b747e4db70c24851f36ec78dfb8d4866f50e 18396 libpcp-trace2_3.9.1_i386.deb a81fbe4005f09576c7eeb3a4aabc8d8826e24d6487133d3b749b8caeb9921a5d 15394 libpcp-import1-dev_3.9.1_i386.deb 7c671b157e76821ac28872f141f7b6222f36c13f76cd7b64cf2b46997ac8c703 14852 libpcp-import1_3.9.1_i386.deb 94639c6b5309fae7b34aaa4e1fdb4731cffe2c8b234dee7f2da4c205a9f2cc73 39990 python-pcp_3.9.1_i386.deb 2fc7278e725c37a794063a20baec6112e2b525266677c57db16bc0d29156e603 30746 libpcp-pmda-perl_3.9.1_i386.deb cc42462612c63c0f3f656b54960f97a7f84d1edd228b54869bda2f8a11040670 16038 libpcp-import-perl_3.9.1_i386.deb f806b90a54d05a7ac4f8aaeb260559cd4977a7a07e09fbc14da474c71f2ff8f1 10968 libpcp-logsummary-perl_3.9.1_i386.deb e9b20be54c8614f169b9c9dc4274258df3bc41cd34c3edf4ee54c851a505ac3a 17294 libpcp-mmv-perl_3.9.1_i386.deb 3bb9103866e695960d869fd662e1fff81aa3bd77b29ffd6f722375d3b31d11d6 16274 pcp-import-sar2pcp_3.9.1_all.deb b16a788abf1b36bc0b7dcabf09f30475d2076bc1990eb782853f7b174e5c01bc 10130 pcp-import-mrtg2pcp_3.9.1_all.deb d91b7b94c28ff6ecf278a9d7e47133cdba940033404e7b1dfc755978b13dbae4 19122 pcp-import-sheet2pcp_3.9.1_all.deb 9e593312475019b8fe1eb20e3a53344bc65d0152eacd8ef2b81d7cfa696fb320 17800 pcp-import-iostat2pcp_3.9.1_all.deb 9a14530615812fbf0cda828c96ed01ff99db3db72ff879fb470da9389323aaab 22882 pcp-import-collectl2pcp_3.9.1_i386.deb 418ea53759377caefec317b054025c41c74d1707b169585ef5c0854e2d488ed2 2225272 pcp-testsuite_3.9.1_i386.deb 6c9a9dcb885c2e31e95ff48c2a695613374431ffec750f2085e3fa4f26ce21d4 46204 pcp-manager_3.9.1_i386.deb 18ea0c90a8697b985e44e7b34bd96fb0bacfc8e639ac0148e486d8dbcd315d2a 30220 pcp-webapi_3.9.1_i386.deb Files: be47ae49c5b781e8eb6b65376d77c133 2462 utils extra pcp_3.9.1.dsc ec0230982087ee6c9d2295b8ae1cb2cd 5291320 utils extra pcp_3.9.1.tar.xz e24c1d36326cb210e78983dedf0e602b 1141362 utils extra pcp_3.9.1_i386.deb 84c5103433b2a674b1c0b1242e2d1c2f 14908 libs extra pcp-conf_3.9.1_i386.deb 946dbbddd01a9c6b8327df29d320c3eb 391172 libdevel extra libpcp3-dev_3.9.1_i386.deb d25a4f26f6c6d16dab60ae2d938b07c1 179530 libs extra libpcp3_3.9.1_i386.deb ea68801ac0555df7d0ac47446eab2bfc 15650 libdevel extra libpcp-gui2-dev_3.9.1_i386.deb 01c9e10fbf6a79bd5b68869484d8fe5f 14464 libs extra libpcp-gui2_3.9.1_i386.deb 04dbd0b1eb6f2b75a1f45d1d10387627 18292 libdevel extra libpcp-mmv1-dev_3.9.1_i386.deb 08b8bcc4c28eeda89415bf2d8c15f3d4 11562 libs extra libpcp-mmv1_3.9.1_i386.deb 24a7418eef587a8c7f9422fdf6b0f757 91646 libdevel extra libpcp-pmda3-dev_3.9.1_i386.deb 9905e1fe65c1e47ee14e70e4419062ab 34378 libs extra libpcp-pmda3_3.9.1_i386.deb 59fd02e1cbce697c45823e556d2661a6 25916 libdevel extra libpcp-trace2-dev_3.9.1_i386.deb 471bcfcf43cc45c2cd23590c64622020 18396 libs extra libpcp-trace2_3.9.1_i386.deb 1567cb7878a5b300e34f3ca7de578693 15394 libdevel extra libpcp-import1-dev_3.9.1_i386.deb b3bd2a2bf2b4e4f86bd62a142ae4d180 14852 libs extra libpcp-import1_3.9.1_i386.deb 8863d525fb4958d685c05ceb76782eeb 39990 python extra python-pcp_3.9.1_i386.deb 611f7dea96b13ab38697d43a82a6d7c2 30746 perl extra libpcp-pmda-perl_3.9.1_i386.deb 7e5f40f82a3d2c9c74b9bb296d8a0bdd 16038 perl extra libpcp-import-perl_3.9.1_i386.deb f78f33a476a77ac2509bacb18397d1fd 10968 perl extra libpcp-logsummary-perl_3.9.1_i386.deb 7a7dc9f8fed7a5aff36f6d940ed59b07 17294 perl extra libpcp-mmv-perl_3.9.1_i386.deb 79a6e003423b23d3e2eca0d6e5b175c5 16274 utils extra pcp-import-sar2pcp_3.9.1_all.deb a601e6de8a567d0029b4de6b55e2b5e1 10130 utils extra pcp-import-mrtg2pcp_3.9.1_all.deb 56a1a7574477195db5f7c48334d7112c 19122 utils extra pcp-import-sheet2pcp_3.9.1_all.deb 13e6fd65847f4509b84ec0fb515efaa3 17800 utils extra pcp-import-iostat2pcp_3.9.1_all.deb 16d8ab59385f175e8b46ca0d2fdf3434 22882 utils extra pcp-import-collectl2pcp_3.9.1_i386.deb 9e6f8d01eddcbe3adf85b75d45c373bc 2225272 utils extra pcp-testsuite_3.9.1_i386.deb fce93b0869e95dfd86325b2dc9ed23c8 46204 utils extra pcp-manager_3.9.1_i386.deb 74a9aee999fe02656de175dfd99b6421 30220 utils extra pcp-webapi_3.9.1_i386.deb -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iEYEARECAAYFAlMpXvYACgkQm8fl3HSIa2PDlgCeM9NEyNn8AS+L6UHDI6iKtJfh Ro4An1BgELFj7PLIhU6RDWly2oWrhrTs =AG8f -----END PGP SIGNATURE----- ------------=_1395272353-16020-0-- From fche@redhat.com Wed Mar 19 22:17:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 79BA67F3F for ; Wed, 19 Mar 2014 22:17:29 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 58A848F8071 for ; Wed, 19 Mar 2014 20:17:25 -0700 (PDT) X-ASG-Debug-ID: 1395285441-04bdf076f043c930001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id oCMGKnKuIY3pr5DB for ; Wed, 19 Mar 2014 20:17:21 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2K3HLD4031130 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 19 Mar 2014 23:17:21 -0400 Received: from fche.csb (vpn-55-60.rdu2.redhat.com [10.10.55.60]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2K3HKxt024483 for ; Wed, 19 Mar 2014 23:17:21 -0400 Received: by fche.csb (Postfix, from userid 2569) id 5D2EF58182; Wed, 19 Mar 2014 23:17:20 -0400 (EDT) Date: Wed, 19 Mar 2014 23:17:20 -0400 From: "Frank Ch. Eigler" To: pcp developers Subject: fche/dev patch RFC: check-statis Message-ID: <20140320031720.GP7585@redhat.com> X-ASG-Orig-Subj: fche/dev patch RFC: check-statis Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395285441 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - Please ponder and backfeed re. this fresh commit on fche/dev, initially motivated by nathans' rhel5 build problems tonight. (The commit may be more easily grokked with "git diff --word-diff"). I don't have access to MacOS etc. to test it on, but I don't think that logic is affected. commit db04ebe4297145a2b365ecd23b39130b2baef636 libpcp/src/check-statics: simplify, pessify check-statics has been in some cases overly and in others underly sensitive. In the overly sensitive category, it's too sensitive to compilers' choice of section placement and for static data and suffixing due to function-static / optimization. It seems safe to accept the symbols with any of the usual prefixes and suffixes. In the underly sensitive category, check-statics could exit with a success rc in a variety of conditions, such as being interrupted, or a failure of an inferior command, or even a script syntax error. Let's flip the $sts default around and add a 'set -e' to become very conservative with respect to environmental catastrophes. From pcp-announce-bounces@oss.sgi.com Wed Mar 19 23:55:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=unavailable version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from oss.sgi.com (localhost [IPv6:::1]) by oss.sgi.com (Postfix) with ESMTP id EA46B7F99; Wed, 19 Mar 2014 23:55:26 -0500 (CDT) X-Original-To: pcp-announce@oss.sgi.com Delivered-To: pcp-announce@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E1D287F8B for ; Wed, 19 Mar 2014 23:55:24 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id BAD9830407F for ; Wed, 19 Mar 2014 21:55:21 -0700 (PDT) X-ASG-Debug-ID: 1395291317-04cbb054b74e2730001-87ZIJf Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id ZHMWYZd3WFmj0ROq for ; Wed, 19 Mar 2014 21:55:17 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2K4tGOn013105 for ; Thu, 20 Mar 2014 00:55:16 -0400 Date: Thu, 20 Mar 2014 00:55:16 -0400 (EDT) From: Nathan Scott To: pcp-announce@oss.sgi.com Message-ID: <1506677183.2790883.1395291316756.JavaMail.zimbra@redhat.com> In-Reply-To: <1278318375.2769797.1395284999061.JavaMail.zimbra@redhat.com> MIME-Version: 1.0 X-ASG-Orig-Subj: Performance Co-Pilot pcp-3.9.1 and pcp-gui-1.5.13 releases X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Performance Co-Pilot pcp-3.9.1 and pcp-gui-1.5.13 releases Thread-Index: KJ2UcQAb/x1Yfd4fHiMf40T7pGwD8w== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395291317 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4082 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Subject: [pcp-announce] Performance Co-Pilot pcp-3.9.1 and pcp-gui-1.5.13 releases X-BeenThere: pcp-announce@oss.sgi.com X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Nathan Scott List-Id: pcp announcements List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pcp-announce-bounces@oss.sgi.com Sender: pcp-announce-bounces@oss.sgi.com Hi all, There's wonderful new stable PCP and PCP GUI releases ready and waiting for you at: http://oss.sgi.com/projects/pcp/ After goodness knows how many times people have asked for it, long option support (e.g. --host) has begun to arrive in PCP! So far, pminfo, pmprobe, pmstore, pmstat, pmval and the small demo program, pmclient, have been updated. This functionality exists on all of the platforms PCP runs on, it is not limited to those with a GNU runtime environment. In the next release or three the remaining tools will also be converted. There is no change to the existing short option support; everything is backwards compatible - of course! And it doesn't stop there - there are extensions to the time specification syntax (use of natural language words to request a time offset, for example) and there's two new PMDAs. Thanks to Martins Innus and Ben Myers for the NFS client PMDA, and there's a compressed swap (zswap) PMDA too. Usability features in pmchart have been the main GUI focus, in particular around use of multiple hosts simultaneously. pcp-3.9.1 (19 March 2014) - libpcp: extended date parsing with GNU getdate(3) strings - libpcp: APIs for tools to share command-line options code - libpcp: thread-safe API variant for pmGetContexHostName() - libpcp: fix local:/unix: bug in __pmUnparseHostSpec - Begin adding long option support to tools (pminfo, pmval, pmprobe, pmstore, pmstat, pmclient so far) - Fix python module bug for PMDAs without instance domains - pmmgr: -march=i386 build fix - pmlogger_daily: fix problem with pmproxy connections - pmdagfs2: miscellaneous updates - pmdanfsclient: new PMDA exporting NFS client metrics - pmdazswap: new PMDA exporting compressed swap metrics - testsuite: porting, several new tests, updates to existing tests, resolved a couple of SELinux related problems - Series of portability changes for *BSD platforms pcp-gui 1.5.13 (6 March 2014) - Remove pmchart one-metric-multiple-hosts legend ambiguity - Add support for a global font preference setting - Add support for a saved hosts preference setting - Add -H option to pmchart for initial saved host importing (matching the behaviour of the same pmstat option) - Default to explicit hostname views when saving a chart containing plots from multiple hosts. - Update Fedora/EPEL packaging to make pcp-doc into a noarch package, as nature intended. Enjoy! -- Nathan _______________________________________________ pcp-announce mailing list pcp-announce@oss.sgi.com http://oss.sgi.com/mailman/listinfo/pcp-announce From nscott@redhat.com Wed Mar 19 23:56:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E3A787F92 for ; Wed, 19 Mar 2014 23:56:48 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 52A02AC007 for ; Wed, 19 Mar 2014 21:56:45 -0700 (PDT) X-ASG-Debug-ID: 1395291402-04cb6c56756d6ea0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id Y3avVsvv4moCJpTA for ; Wed, 19 Mar 2014 21:56:42 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2K4ugvR013627 for ; Thu, 20 Mar 2014 00:56:42 -0400 Date: Thu, 20 Mar 2014 00:56:41 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <105727822.2791088.1395291401988.JavaMail.zimbra@redhat.com> In-Reply-To: <1717498662.2772699.1395285950450.JavaMail.zimbra@redhat.com> Subject: pcp updates: brolley merge (pmlc/pmlogger), qa MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: brolley merge (pmlc/pmlogger), qa Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: brolley merge (pmlc/pmlogger), qa Thread-Index: XNH6t8xuMED16lWIfAokA4wrNy+ixw== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395291402 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4082 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev qa/.gitignore | 1 qa/069.out.ipv4 | 2 qa/069.out.ipv6 | 2 qa/083 | 1 qa/098 | 4 qa/098.out | 102 ++-- qa/100 | 4 qa/100.out | 102 ++-- qa/101 | 4 qa/101.out | 102 ++-- qa/103 | 4 qa/103.out | 102 ++-- qa/104 | 4 qa/104.out | 102 ++-- qa/105 | 4 qa/105.out | 102 ++-- qa/106 | 4 qa/106.out | 102 ++-- qa/172 | 2 qa/172.out.2 | 1 qa/183 | 5 qa/183.out.irix | 4 qa/183.out.linux | 4 qa/368 | 14 qa/368.darwin.3 | 218 ++++++++++ qa/368.other.3 | 215 ++++++++++ qa/381 | 1 qa/439.out | 6 qa/497 | 12 qa/497.out | 136 ------ qa/497.out.1 | 136 ++++++ qa/497.out.2 | 138 ++++++ qa/common.check | 5 src/include/pcp/impl.h | 12 src/libpcp/src/accounts.c | 54 ++ src/libpcp/src/check-statics | 6 src/libpcp/src/exports | 25 - src/libpcp/src/internal.h | 1 src/libpcp/src/logconnect.c | 846 ++++++++++++++++++++++++----------------- src/libpcp/src/logportmap.c | 77 ++- src/libpcp/src/secureconnect.c | 78 +-- src/libpcp/src/util.c | 32 + src/pmlc/actions.c | 18 src/pmlc/gram.y | 34 + src/pmlc/lex.l | 11 src/pmlc/pmlc.c | 92 +++- src/pmlogconf/pmlogconf.sh | 6 src/pmlogger/src/gram.y | 3 src/pmlogger/src/lex.l | 23 + src/pmlogger/src/logger.h | 8 src/pmlogger/src/pmlogger.c | 26 - src/pmlogger/src/ports.c | 487 +++++++++++++++++------ 52 files changed, 2375 insertions(+), 1109 deletions(-) commit 8f75d3acc9c0bdee1cc7b994c149c9663457fd88 Author: Nathan Scott Date: Thu Mar 20 15:25:27 2014 +1100 Remaining qa test fallout from local: pmlc/pmlogger connections commit 1b086dfe2515c502b890dd67364ed2af62c05aea Author: Nathan Scott Date: Thu Mar 20 14:08:20 2014 +1100 Fix test qa/083 handling of local: pmlogger/pmlc connections commit 23dfcd45668d2076dfceeeb96d80a42b06240fe6 Author: Nathan Scott Date: Thu Mar 20 14:05:30 2014 +1100 Fix build on RHEL5 i386 where libpcp has unexpected statics $ ./check-statics rtime.o: d startend_relative_terms.9369 : Error: additional symbol commit a169ae8dffc596178b0857d5ea214750565ec3ae Author: Nathan Scott Date: Thu Mar 20 13:18:17 2014 +1100 Move new libpcp symbols into new exports section commit 2713664923f396052aefe8200c587c8d6ef109f5 Merge: 0d9ae9b c615547 Author: Nathan Scott Date: Thu Mar 20 12:38:14 2014 +1100 Merge branch 'brolley/dev' of ../pcpfans into dev commit c6155474816c87fe4d2692eb9d78124f10be65c8 Merge: f06a7f0 d03e715 Author: Dave Brolley Date: Tue Mar 18 11:44:59 2014 -0400 Merge remote-tracking branch 'origin/dev' into brolley/dev Conflicts: src/libpcp/src/exports commit f06a7f06b614feefea14f27b2723ed8606de9e8f Author: Dave Brolley Date: Tue Mar 18 11:41:57 2014 -0400 For pmlogger control connections via AF_UNIX, check the connector's credentials. This initial implementation allows connections by root and by the same user as the one running pmlogger. commit 5fb01b56fef929df01a9c005a85f1843aff6cc2c Author: Dave Brolley Date: Mon Mar 10 11:02:06 2014 -0400 Fix __pmConnectLogger() access control bug for the "local:[path]". When pmlc uses local:[path] is specified, __pmConnectLogger() should attempt connection as "unix:[path]" and, if this fails, it should try again as "localhost". This was working ok for the case when connection via unix: could not be established. However when the connection was established but terminated due to insufficient access control permissions, __pmConnectLogger() did not go on to try connecting as "localhost". Also, -ECONNREFUSED was being returned in this case instead of -EPERM. commit d59bbcf3f00d84f3f5c1a002a950634c06b4cb2a Merge: 5046073 1ec7d74 Author: Dave Brolley Date: Wed Mar 5 12:14:09 2014 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit 5046073d44836ff02af15630ba39e06cd4a3d0a5 Author: Dave Brolley Date: Tue Mar 4 16:55:16 2014 -0500 Error messages now correctly refer to pmlogger, not pmcd. commit 9349d8641aa681b493c616f43258860965e48e90 Author: Dave Brolley Date: Tue Mar 4 16:24:25 2014 -0500 Fix socket fd leak in GetPorts() (pmlogger). commit 3b2eb2e0fb19e48b4dcca7782bf656afa12966bd Author: Dave Brolley Date: Tue Mar 4 16:18:10 2014 -0500 Call __pmNoMem() in ConnectPMCD() (pmlc) when out of memory. commit fdbc97d3903c33f96580808fcef8a77376db4dc5 Author: Dave Brolley Date: Tue Mar 4 16:12:43 2014 -0500 Rework the flow of logic in the NSPR implementation of __pmGetNameInfo(). commit b01572d581dea4adffd839d8e339656349e63b3d Author: Dave Brolley Date: Tue Mar 4 15:51:09 2014 -0500 Fix memory lead (ctxhost) in __pmLogFindPort() commit e5b3075f4617597e22f5ba88fb0078e51b4c8fa4 Author: Dave Brolley Date: Tue Mar 4 15:43:05 2014 -0500 Fix fd leak in connectLoggerLocal() commit 707b499d8fd9867be47bfae2c0d2f2e2b226aa33 Author: Dave Brolley Date: Tue Mar 4 15:22:23 2014 -0500 Rename of __pmMkDir() to __pmMkPath() should have been to __pmMakePath(). The actual name suggested in the code review. commit fb5b05c1b1dabc4185263b87fd96f766621d2a62 Author: Dave Brolley Date: Tue Mar 4 15:04:11 2014 -0500 Code formatting and typo fixes as recommended by code review. Items mentioned in the code review for AF_UNIX sockets for pmlogger/pmlc. commit 9aabf24a17e71cff1c221a184d875b8f0ea0d76a Author: Dave Brolley Date: Tue Mar 4 14:32:16 2014 -0500 Change the API for __pmLogLocalSocketDefault() and __pmLogLocalSocketUser(). - Buffers are no longer static within the function. - Buffers and size are now passed in by th caller. - No need for PM_LOCK anymore. - Update all callers. - Update check-statics commit d2e87db1c006c98067e05fac25c354dec79923c3 Author: Dave Brolley Date: Mon Mar 3 17:35:21 2014 -0500 __pmHomedirFromID() now returns NULL on error. All Callers updated. commit 138d204590757960879499918315e725aa4fb920 Author: Dave Brolley Date: Mon Mar 3 17:31:25 2014 -0500 Rename __pmMkdir() to __pmMkPath() and add new exports to the PCP_3.2 section. commit f3dba49cafd9da8a68d686b433bca3197c51f29e Author: Dave Brolley Date: Mon Mar 3 12:50:06 2014 -0500 For ordinary users, create the AF_UNIX pmlogger control socket in ~/.pcp/run/ Created as ~/.pcp/run/pmlogger..socket commit 22ffbdab17809cc4fd0475a27d02ffa7a580059b Merge: 6f89daa 638aea3 Author: Dave Brolley Date: Fri Feb 28 15:21:54 2014 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit 6f89daa0c76bfb53267b5367e40c0815dd0fd738 Author: Dave Brolley Date: Fri Feb 21 09:02:54 2014 -0500 Bump pcp version check for qa tests 368 and 497 to 3901. pmlogger/pmlc AF_UNIX changes missed release 3.9.0 commit bf0ae86bf9e7f7e4e468546cb65d5c833744724f Merge: aabeef7 1b7cda1 Author: Dave Brolley Date: Fri Feb 21 08:31:45 2014 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit aabeef72f915d50fcaec4ea168d282b23b184ea7 Author: Dave Brolley Date: Fri Feb 21 08:28:30 2014 -0500 Create pmLogger AF_UNIX socket under the home directory for normal users. When a normal user runs pmlogger, the AF_UNIX socket cannot be created in the normal system-wide location, since that location is not world writable. In this case, create the socket under the user's home directory (i.e. under ~/.pcp). commit 77d1dc5d8d2389672fd99f48b9c7f385feb951af Merge: 3685cfa dec7155 Author: Dave Brolley Date: Tue Feb 18 10:46:53 2014 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit 3685cfa7480a900e6df591762cd79a06467204ac Author: Dave Brolley Date: Mon Feb 17 11:37:53 2014 -0500 Handle unix domain socket binding (creation) for pmlogger when run as a normal user. When running as a normal user, pmlogger is unable to bind to (i.e. create) a unix domain socket in /var/run/pcp (PCP_RUN_DIR), because that directory is not writable by normal users. This change handles the situation in a similar way to how the port map file in /var/lib/pcp/tmp/pmlogger (PCP_TMP_DIR)/pmlogger is handled, which is to continue on an to issue a message only if DESPARATE is defined at compile time. This solution is reasonable, since pmlogger will go on to create inet and ipv6 sockets for control connections. Only if all sockets fail to bind is this a critical error. This addresses the regression of qa tests 039 046 053 085 161 178 234 242 248 304 352 354 466 524 593 and 650. commit 2b10b054d906150c3fe006f812b57c7787f71f4b Merge: 14098f8 2e72eb8 Author: Dave Brolley Date: Fri Feb 14 11:45:47 2014 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit 14098f8b0f89f6364fdadcad2523a381069db3d4 Author: Dave Brolley Date: Fri Feb 14 11:43:34 2014 -0500 Fix qa fallout from ipv6/unix socket implementation for pmlogger/pmlc. Address output differences caused by the default host now being local: Addresses regressions in qa tests 098 100 101 103 104 105 106 172 183 368 497 commit 71b527021a9c9b366a802bf54777b9063fcc12a3 Author: Dave Brolley Date: Fri Feb 14 11:41:12 2014 -0500 Tighten up lexical definition of a host url. Addresses qa fallout for test 645 from the ipv6/unix: socket implementation for pmlogger and pmlc. commit 83d4c2df654aab4caa2f808c143ace8268e45f45 Author: Dave Brolley Date: Fri Feb 14 11:39:00 2014 -0500 Return actual status code from connectLogger. Was returning -1 on error. Addresses qa fallout for qa test 439 from ipv6/unix socket implementation for pmlogger. commit 5246cf21147191e3b1ef6d9448f0b92f5a2e9d2a Merge: 64ba262 8fe72ef Author: Dave Brolley Date: Wed Feb 12 17:06:22 2014 -0500 Merge remote-tracking branch 'origin/dev' into brolley/dev commit 64ba262d1beb232703013db4001cb512d1790ff3 Author: Dave Brolley Date: Wed Feb 12 17:02:49 2014 -0500 Support ipv6 and unix domain socket control connections in pmlogger and pmlc. pmlogger now listens on ipv6 and on a local unix domain socket (on supported platforms) for control connections. pmlc can now use ipv6 addresses as well as unix:{path] and local:[path] urls to connect to pmlogger. commit dcf64bb7b71d3d0aa3717ec79ff3a3c1d613031b Author: Dave Brolley Date: Wed Feb 12 10:37:12 2014 -0500 pmlc: ConnectPMCD: Catch potential NULL return from strdup. commit 8e8684fd55ed95627bca8b20f67c3c633e651721 Author: Dave Brolley Date: Wed Feb 12 10:32:53 2014 -0500 Handle PR_AF_LOCAL in the NSPR implementation of __pmGetNameInfo. Was already handled by the native implementation. From nscott@redhat.com Thu Mar 20 05:06:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id DBAAB7F54 for ; Thu, 20 Mar 2014 05:06:38 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7454FAC012 for ; Thu, 20 Mar 2014 03:06:35 -0700 (PDT) X-ASG-Debug-ID: 1395309990-04cbb054b74ef700001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id N9mtcq2P0hmqCjS7 for ; Thu, 20 Mar 2014 03:06:31 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2KA6UZv022323; Thu, 20 Mar 2014 06:06:30 -0400 Date: Thu, 20 Mar 2014 06:06:30 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Dave Brolley Cc: pcp@oss.sgi.com Message-ID: <1841843601.2854342.1395309990273.JavaMail.zimbra@redhat.com> In-Reply-To: <5329BB49.1050101@redhat.com> References: <5329BB49.1050101@redhat.com> Subject: Re: [pcp] New Option for pmlogger? MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] New Option for pmlogger? Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: New Option for pmlogger? Thread-Index: dMtIQgbD884iibevGuVPfTL1cggSKw== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395309991 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4087 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Dave, ----- Original Message ----- > Hi, > > During a recent irc discussion, Frank suggested the addition of an > option to limit pmlogger to listening only the AF_UNIX socket for > control connections. The idea is that the new simple authentication on > that socket is of no use if a user can just go ahead and connect via > inet or ipv6. It was also noted during the discussion that the same > effect could be achieved using ACL, something like > > [access] > disallow .* : all; > disallow :* : all; > allow unix:* : enquire; > > so the option would really just be a shortcut with the additional effect Having both an option and the config for specifying access, seems like it might introduce awkwardness wrt having to deal with ambiguities and conflicting specifications? If that's true then I'd vote for just the config file specification I guess - one source of truth. cheers. -- Nathan From kenj@internode.on.net Thu Mar 20 23:02:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 228677F73 for ; Thu, 20 Mar 2014 23:02:06 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id EEFD330404E for ; Thu, 20 Mar 2014 21:02:05 -0700 (PDT) X-ASG-Debug-ID: 1395374519-04cb6c567873f360001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id qlDvs2nBhTJmW4eT for ; Thu, 20 Mar 2014 21:02:00 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApMBABO5K1N20adJ/2dsb2JhbAANTINBxFKEGDANFhgDAgECAVgGAgEBtByjVhePAoQiBK47 Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 21 Mar 2014 14:31:57 +1030 Message-ID: <532BB9DC.3040703@internode.on.net> Date: Fri, 21 Mar 2014 15:02:36 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - assorted Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates - assorted Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1395374519 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4112 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev build/mac/GNUmakefile | 13 +++-- qa/033 | 25 ++++++++++ qa/113 | 103 +++++++++++++++++++++++++++++++++----------- qa/admin/check-vm | 1 qa/admin/pcp-daily | 13 +++-- qa/src/multithread4.c | 20 ++++++-- src/pmdas/trace/src/comms.c | 2 src/pmval/pmval.c | 2 8 files changed, 140 insertions(+), 39 deletions(-) commit bdf7dc09598e26b1fc92cb54d74a21455d68dfd5 Author: Ken McDonell Date: Fri Mar 21 14:41:26 2014 +1100 qa/admin/pcp-daily - tweak kenj's hosts commit ea6a94371d808ebc70d44f743f9429aeceaf1cc2 Author: Ken McDonell Date: Fri Mar 21 14:40:09 2014 +1100 Mac OS X build - packing script fix Handling of sylmink lines in idb file rewrite was botched when the source was already a full pathname. commit 712e77b6d016cb3908335ab79973ee3920e97da4 Author: Ken McDonell Date: Fri Mar 21 09:50:28 2014 +1100 src/pmdas/trace/comms.c - bind() compilation warning on Mac OS X Simple and correct cast makes the warning go away. commit 64a100ce3ea3a252dad47d7974e1387ba32ffd51 Author: Ken McDonell Date: Fri Mar 21 08:17:29 2014 +1100 qa/src/multithread4.c - fix ugly race If the planets are aligned badly, then func1() tries 10 times and evey time sliently fails to traverse the pmns because func2() is fluffing about. Try again in func1() is the fix. Symptom was qa/449 failure with no output from func1(). commit 2b82ab3335ef0e1721051541453d2636514aa73d Author: Ken McDonell Date: Fri Mar 21 08:13:30 2014 +1100 qa/admin/check-vm - helps to have realpath(1) installed commit c2b158514f5341dfdccf3d7f494bd72b8e8b3b9e Author: Ken McDonell Date: Fri Mar 21 08:10:02 2014 +1100 qa/033 + 113 - symlink chasing When realpath(1) is not installed, chase down symlinks the hard way. Needed for block devices used to mount filesystems where mount and/or df report a symlink, not the underlying block device. commit cecdc429089290b9e28d13f158e7b67e891e6ed0 Author: Ken McDonell Date: Fri Mar 21 08:00:01 2014 +1100 pmval - remove compilation warning Today's version of gcc and/or the command-line options we feed gcc and/or recent pmval.c changes is triggering a (new) compiler warning: pmval.c:856:2: warning: format not a string literal and no format arguments [-Wformat-security] pmprintf(errmsg); Make the obvious substitution. From kenj@internode.on.net Thu Mar 20 23:06:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C915C7F73 for ; Thu, 20 Mar 2014 23:06:20 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C484C8F804B for ; Thu, 20 Mar 2014 21:06:17 -0700 (PDT) X-ASG-Debug-ID: 1395374775-04bdf05daa781480001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id PMcuMdQDzTGJaDN6 for ; Thu, 20 Mar 2014 21:06:15 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApQBAEC6K1N20adJ/2dsb2JhbAANTINBg16/SYErgxkBAQEEIxVAARALGAICBRYLAgIJAwIBAgFFBg0BBwEBtB92omAXgSmNPAeCb4FJAQOuOw Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 21 Mar 2014 14:36:14 +1030 Message-ID: <532BBADD.3080508@internode.on.net> Date: Fri, 21 Mar 2014 15:06:53 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: PCP Mailing List Subject: Re: [pcp] python qa failures References: <53293D8D.5030803@internode.on.net> <1041086392.1809515.1395212141704.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] python qa failures In-Reply-To: <1041086392.1809515.1395212141704.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1395374775 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4112 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 19/03/14 17:55, Nathan Scott wrote: > ... > $ cat eek.py > #!/usr/bin/python > import curses > $ ./eek.py > $ rpm -qa | grep curses | grep python > python-curses-2.6.8-0.15.1 > cat /etc/SuSE-release > SUSE Linux Enterprise Server 11 (x86_64) > VERSION = 11 > PATCHLEVEL = 1 > Thanks ... I was confused because that recipe did not work on Fedora 18, but the python module is installed there. This seems to be a place where the rpm packaging has diverged across the distros. From nscott@redhat.com Fri Mar 21 00:37:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4E73E7F5D for ; Fri, 21 Mar 2014 00:37:17 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 44FFA8F8065 for ; Thu, 20 Mar 2014 22:37:17 -0700 (PDT) X-ASG-Debug-ID: 1395380231-04cbb054b9554760001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id ByBSnnBCRAVI3xhE for ; Thu, 20 Mar 2014 22:37:11 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2L5bBcC026043 for ; Fri, 21 Mar 2014 01:37:11 -0400 Date: Fri, 21 Mar 2014 01:37:11 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <2077212528.3471543.1395380231118.JavaMail.zimbra@redhat.com> In-Reply-To: <2137486890.3470323.1395379919785.JavaMail.zimbra@redhat.com> Subject: pcp updates: kenj merge, getopts, qa MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: kenj merge, getopts, qa Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: kenj merge, getopts, qa Thread-Index: 4Rf+5c22Phtw7hOvZWNWP+KU71GIdg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395380231 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4114 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev build/mac/GNUmakefile | 13 +++-- debian/libpcp3-dev.install | 1 man/man3/pmgetoptions.3 | 46 +++++++++++++++---- qa/033 | 25 ++++++++++ qa/069.out.ipv4 | 2 qa/069.out.ipv6 | 2 qa/113 | 103 +++++++++++++++++++++++++++++++++----------- qa/381 | 2 qa/admin/check-vm | 1 qa/admin/pcp-daily | 13 +++-- qa/src/multithread4.c | 20 ++++++-- src/dbpmda/src/dbpmda.c | 95 +++++++++++++++++++--------------------- src/include/pcp/pmapi.h | 1 src/libpcp/src/exports | 2 src/libpcp/src/getopt.c | 17 +++---- src/pmconfig/pmconfig.c | 47 +++++++++++--------- src/pmdas/trace/src/comms.c | 2 src/pmfind/pmfind.c | 100 +++++++++++++++++++----------------------- src/pminfo/pminfo.c | 32 ++++++------- src/pmlock/pmlock.c | 5 +- src/pmval/pmval.c | 12 +---- src/python/pcp/pmapi.py | 9 ++- 22 files changed, 332 insertions(+), 218 deletions(-) commit 315f8d78fc41d80bccfe5593d29f1855ad5dc039 Merge: d24c674 bdf7dc0 Author: Nathan Scott Date: Fri Mar 21 16:04:35 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/kenj/pcp into dev commit d24c67406c79f116c2701ee76d2c9ca25628362d Author: Nathan Scott Date: Fri Mar 21 16:04:16 2014 +1100 Switch python pmGetContextHostname to thread-safe libpcp interface commit 0ee9c355c0899312438cf98a0fea1fddb26bb0e7 Author: Nathan Scott Date: Fri Mar 21 16:00:52 2014 +1100 Export pmgetopt_r interface for use by collectors and similar This commit exposes the existing pmgetopt_r libpcp interface so that it can be called directly. This is useful for tools that do not and will not ever want to use the standard option processing code, and where dealing with that gets in the way. This is the case for tools like dbpmda, collector tools, and most things that are not PMAPI monitor tools, really. Several more tools are brought into the long-options fold and make use of this directly - dbpmda, pmconfig, pmfind, pmlock. In addition, pmval and pminfo are updated to use a slightly neater way of handling their options that conflict with those in the standard set. commit fd1aef965964d1529b02733c0f3a4f3d224f1c8b Author: Nathan Scott Date: Fri Mar 21 15:43:03 2014 +1100 Reinstate just the qa/381 local: filter part of earlier commit commit bdf7dc09598e26b1fc92cb54d74a21455d68dfd5 Author: Ken McDonell Date: Fri Mar 21 14:41:26 2014 +1100 qa/admin/pcp-daily - tweak kenj's hosts commit ea6a94371d808ebc70d44f743f9429aeceaf1cc2 Author: Ken McDonell Date: Fri Mar 21 14:40:09 2014 +1100 Mac OS X build - packing script fix Handling of sylmink lines in idb file rewrite was botched when the source was already a full pathname. commit 8063bc9ff0385c297469e03080ca7563805b0961 Author: Nathan Scott Date: Fri Mar 21 14:01:59 2014 +1100 Revert "Remaining qa test fallout from local: pmlc/pmlogger connections" Reverts commit 8f75d3acc9c0bdee1cc7b994c149c9663457fd88, incorrect .out files committed. commit 712e77b6d016cb3908335ab79973ee3920e97da4 Author: Ken McDonell Date: Fri Mar 21 09:50:28 2014 +1100 src/pmdas/trace/comms.c - bind() compilation warning on Mac OS X Simple and correct cast makes the warning go away. commit 64a100ce3ea3a252dad47d7974e1387ba32ffd51 Author: Ken McDonell Date: Fri Mar 21 08:17:29 2014 +1100 qa/src/multithread4.c - fix ugly race If the planets are aligned badly, then func1() tries 10 times and evey time sliently fails to traverse the pmns because func2() is fluffing about. Try again in func1() is the fix. Symptom was qa/449 failure with no output from func1(). commit 2b82ab3335ef0e1721051541453d2636514aa73d Author: Ken McDonell Date: Fri Mar 21 08:13:30 2014 +1100 qa/admin/check-vm - helps to have realpath(1) installed commit c2b158514f5341dfdccf3d7f494bd72b8e8b3b9e Author: Ken McDonell Date: Fri Mar 21 08:10:02 2014 +1100 qa/033 + 113 - symlink chasing When realpath(1) is not installed, chase down symlinks the hard way. Needed for block devices used to mount filesystems where mount and/or df report a symlink, not the underlying block device. commit cecdc429089290b9e28d13f158e7b67e891e6ed0 Author: Ken McDonell Date: Fri Mar 21 08:00:01 2014 +1100 pmval - remove compilation warning Today's version of gcc and/or the command-line options we feed gcc and/or recent pmval.c changes is triggering a (new) compiler warning: pmval.c:856:2: warning: format not a string literal and no format arguments [-Wformat-security] pmprintf(errmsg); Make the obvious substitution. From nscott@redhat.com Fri Mar 21 00:47:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 57E0A7F5D for ; Fri, 21 Mar 2014 00:47:25 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3DD9F304039 for ; Thu, 20 Mar 2014 22:47:22 -0700 (PDT) X-ASG-Debug-ID: 1395380840-04bdf05dab78ab20001-S8gJnT Received: from mx3-phx2.redhat.com (unused [209.132.183.37]) by cuda.sgi.com with ESMTP id l2GOa7wOO0Ks8EB0 for ; Thu, 20 Mar 2014 22:47:20 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.37 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2L5lGLA015844; Fri, 21 Mar 2014 01:47:16 -0400 Date: Fri, 21 Mar 2014 01:47:16 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Dave Brolley , Ken McDonell Cc: PCP Mailing List Message-ID: <479138455.3472719.1395380836346.JavaMail.zimbra@redhat.com> In-Reply-To: <1292873021.3471920.1395380388911.JavaMail.zimbra@redhat.com> Subject: QA dev branch notes MIME-Version: 1.0 X-ASG-Orig-Subj: QA dev branch notes Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: QA dev branch notes Thread-Index: cK7cl44ZfUtZtN49hofqACRPfaW0qA== X-Barracuda-Connect: unused[209.132.183.37] X-Barracuda-Start-Time: 1395380840 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4114 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi guys, Firstly, thanks so much for that qa/src/multithread4.c fix Ken (the "fix ugly race" one) - that intermittent failure has plagued me for ages, and I'd never been able to quite put my finger on it. Thanks! Dave, I have a consistent failure on 260 now ... .bad file vs .out shows: 324c324 < r: 0.4 --- > r: 0.50 I've never seen this before, and its just started since the pmlogger/pmlc merge. For the life of me, I can't see how that could have affected this test though. It seems like we have someone sending an additional PDU to pmcd at some point. I'll continue to look into it next week, just thought I'd put it out there in case anyone else is seeing it and/or has any ideas. cheers. -- Nathan From minnus@buffalo.edu Fri Mar 21 14:47:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id ECF0F7F81 for ; Fri, 21 Mar 2014 14:47:50 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8F01FAC005 for ; Fri, 21 Mar 2014 12:47:50 -0700 (PDT) X-ASG-Debug-ID: 1395431265-04bdf05daa7c50d0001-S8gJnT Received: from mtareserve1.acsu.buffalo.edu (mtareserve13.acsu.buffalo.edu [128.205.6.38]) by cuda.sgi.com with ESMTP id hFInbFsgJ0IyoUJT for ; Fri, 21 Mar 2014 12:47:45 -0700 (PDT) X-Barracuda-Envelope-From: minnus@buffalo.edu X-Barracuda-Apparent-Source-IP: 128.205.6.38 Received: from localmailB.acsu.buffalo.edu (localmailb.acsu.buffalo.edu [128.205.5.200]) by mtareserve1.acsu.buffalo.edu (Postfix) with ESMTP id 6B4B8635 for ; Fri, 21 Mar 2014 15:47:45 -0400 (EDT) Received: from localmailB.acsu.buffalo.edu (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id 67E89C9EC for ; Fri, 21 Mar 2014 15:47:45 -0400 (EDT) Received: from localmailB.acsu.buffalo.edu (localhost [127.0.0.1]) by localmailB.acsu.buffalo.edu (Postfix) with ESMTP id 904AAC9E3 for ; Fri, 21 Mar 2014 15:47:44 -0400 (EDT) Received: from smtp.buffalo.edu (smtp2.acsu.buffalo.edu [128.205.5.254]) by localmailB.acsu.buffalo.edu (Prefixe) with ESMTP id 8B88EC9E2 for ; Fri, 21 Mar 2014 15:47:44 -0400 (EDT) Received: from gilmour.ccr.buffalo.edu (gilmour.ccr.buffalo.edu [128.205.40.13]) (Authenticated sender: minnus@buffalo.edu) by smtp.buffalo.edu (Postfix) with ESMTPSA id 752D49B6D for ; Fri, 21 Mar 2014 15:47:44 -0400 (EDT) Message-ID: <532C975F.4020808@buffalo.edu> Date: Fri, 21 Mar 2014 15:47:43 -0400 From: Martins Innus User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: pcp developers Subject: pmcd gives up on slow starting Perl PMDA Content-Type: multipart/mixed; boundary="------------080003000604000202080901" X-ASG-Orig-Subj: pmcd gives up on slow starting Perl PMDA X-PM-EL-Spam-Prob: : 8% X-Barracuda-Connect: mtareserve13.acsu.buffalo.edu[128.205.6.38] X-Barracuda-Start-Time: 1395431265 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4129 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. --------------080003000604000202080901 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hello, I've been trying to debug a problem that I can simplify down to the attached patch to pmdasimple.perl. Output below: Log for pmdasimple on gilmour-vm-cent65 started Fri Mar 21 14:19:50 2014 [Fri Mar 21 14:20:00] pmdasimple(31038) Info: Got line: foo [Fri Mar 21 14:20:00] pmdasimple(31038) Critical: __pmdaSetupPDU: PMDA pmdasimple send creds: Broken pipe [Fri Mar 21 14:20:00] pmdasimple(31038) Error: PMDA Initialisation Failed Log finished Fri Mar 21 14:20:00 2014 I see a similar error posted here: https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1073658 but don't know exactly how to deal with that in a perl pmda on startup. Background is the following. I'm working on adding to the systemtap pmda and need to collect information on available tap points before I decide what metrics to make available. Basically a : $pmda = PCP::PMDA->new('systemtap', 88); open a pipe with stap -l 'syscall.*' and read each into a hash for each hash element loop through a whole bunch of : $pmda->add_metric(.... etc, etc.... The stap call takes a couple seconds to run, and seems to be enough to kill the pmda. I just simulate the delay with the sleep in the attached example. 10 seconds is extreme. 2-3 seconds seems to be enough to make it fail. Any suggestions on how to proceed? Thanks Martins --------------080003000604000202080901 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="pmdasimple_perl.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="pmdasimple_perl.diff" --- pmdasimple.perl.orig 2014-03-21 14:17:30.092596110 -0400 +++ pmdasimple.perl 2014-03-21 14:18:56.723643833 -0400 @@ -28,6 +28,21 @@ my %timeslices; my $file_error = 0; +sub get_foo { + + open( FOOFOO, "sleep 10;echo foo |") || + $pmda->err("pmdasimple failed to open dummy pipe: $!"); + + while( ){ + my $line = $_; + $pmda->log("Got line: $line\n"); + } + + close FOOFOO; + +} + + sub simple_instance # called once per ``instance request'' pdu { &simple_timenow_check; @@ -129,6 +144,8 @@ $pmda = PCP::PMDA->new('simple', 253); +get_foo(); + $pmda->add_metric(pmda_pmid(0,0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT, pmda_units(0,0,0,0,0,0), 'simple.numfetch', '', ''); --------------080003000604000202080901-- From jlim@sgi.com Fri Mar 21 20:55:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D64507F87 for ; Fri, 21 Mar 2014 20:55:16 -0500 (CDT) Received: from shuangzi.engr.sgi.com (shuangzi.engr.sgi.com [150.166.130.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id 76380AC002 for ; Fri, 21 Mar 2014 18:55:13 -0700 (PDT) Received: by shuangzi.engr.sgi.com (Postfix, from userid 1000) id 67B54405B0; Fri, 21 Mar 2014 18:56:02 -0700 (PDT) Date: Fri, 21 Mar 2014 18:56:02 -0700 From: Jonathan Lim To: pcp@sgi.com Subject: bug in python pmGetArchiveEnd() Message-ID: <20140322015602.GA21741@shuangzi.engr.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) I'm getting the following error in pmGetArchiveEnd(): Traceback (most recent call last): ... File "/usr/lib64/python2.6/site-packages/pcp.py", line 1391, in pmGetArchiveEnd status = libpcp.pmGetArchiveEnd ( tvp ) ctypes.ArgumentError: argument 1: : expected timeval instance instead of LP_timeval I fixed it as follows, though I'm not sure if it's the right way: --- pcp.py.O 2014-03-14 01:33:57.000000000 -0500 +++ pcp.py 2014-03-21 20:27:59.000000000 -0500 @@ -645,7 +645,7 @@ libpcp.pmGetArchiveLabel.restype = c_int libpcp.pmGetArchiveLabel.argtypes = [ POINTER(pmLogLabel) ] libpcp.pmGetArchiveEnd.restype = c_int -libpcp.pmGetArchiveEnd.argtypes = [ timeval ] +libpcp.pmGetArchiveEnd.argtypes = [ POINTER(timeval) ] libpcp.pmGetInDomArchive.restype = c_int libpcp.pmGetInDomArchive.argtypes = [ @@ -1384,11 +1384,11 @@ class pmContext( object ): def pmGetArchiveEnd( self ): """PMAPI - Get the last recorded timestamp from the archive """ - tvp = POINTER(timeval)() + tvp = timeval() status = libpcp.pmUseContext( self.ctx ) if status < 0: raise pmErr, status - status = libpcp.pmGetArchiveEnd ( tvp ) + status = libpcp.pmGetArchiveEnd ( byref(tvp) ) if status < 0: raise pmErr, status return status, tvp Can someone please review? Thanks. On a related note, is the loglabel argument to pmGetArchiveLabel() necessary, given that it's called similar to pmGetArchiveEnd()? Jonathan Lim From kenj@internode.on.net Sat Mar 22 01:04:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6E5B17F5F for ; Sat, 22 Mar 2014 01:04:20 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2812930407A for ; Fri, 21 Mar 2014 23:04:20 -0700 (PDT) X-ASG-Debug-ID: 1395468254-04bdf05daa7dc2b0001-S8gJnT Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 9let9PUwIlwf2lZT for ; Fri, 21 Mar 2014 23:04:14 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArZkAK0mLVN5LHc7PGdsb2JhbABZDoJ4O8M7AwKBFRcDAQEBATg1giUBAQEECAIdARIcLwEDAgYDDgMEAQEoBxkgCgMJCAIEARILBYdoDs5OEwSOagwGhDIEjzyeLVMp Received: from ppp121-44-119-59.lns20.syd6.internode.on.net (HELO bozohorize) ([121.44.119.59]) by ipmail06.adl2.internode.on.net with ESMTP; 22 Mar 2014 16:34:13 +1030 From: "Ken McDonell" To: "'Martins Innus'" , "'pcp developers'" References: <532C975F.4020808@buffalo.edu> In-Reply-To: <532C975F.4020808@buffalo.edu> Subject: RE: [pcp] pmcd gives up on slow starting Perl PMDA Date: Sat, 22 Mar 2014 17:04:05 +1100 X-ASG-Orig-Subj: RE: [pcp] pmcd gives up on slow starting Perl PMDA Message-ID: <001701cf4594$8a193d60$9e4bb820$@internode.on.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 15.0 Thread-Index: AQFHR2bYMg6BAZaVkcZ0/IJszlLvFpv8NB7w Content-Language: en-au X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1395468254 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.01 X-Barracuda-Spam-Status: No, SCORE=0.01 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4143 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== Hmm ... there is a problem here Houston. Thanks for a curly weekend problem, Martins. The original pmcd <--> pmda protocol was designed to accommodate _exactly_ this sort of longish delay on pmda startup. But when libpcp_pmda was designed, that capability was overlooked not supported in the library (there is no convenient place for a pmda to exercise the control at the PDU level needed, and the library has no "hook" to do this on behalf of the pmda). And since the Perl PMDA implementation is a wrapper around libpcp_pmda that does not connect to pmcd until the run() method, we have no real chance of doing this in Perl. We need to go back to libpcp_pmda first and figure how to do this safely (my first guess is that it requires a new variant of pmdaConnect that can be safely called before pmdaInit and then possibly launching a worker thread to handle NOTREADY communication with pmcd should a request arrive, then pmdaInit cleans up the worker thread, sends READY if we've gone NOTREADY and charges on as normal). All of this requires some more thought, some design my argument, then an implementation. After that we can provide a Perl implementation. > -----Original Message----- > From: pcp-bounces@oss.sgi.com [mailto:pcp-bounces@oss.sgi.com] On > Behalf Of Martins Innus > Sent: Saturday, 22 March 2014 6:48 AM > To: pcp developers > Subject: [pcp] pmcd gives up on slow starting Perl PMDA > > Hello, > I've been trying to debug a problem that I can simplify down to the > attached patch to pmdasimple.perl. > > Output below: > > Log for pmdasimple on gilmour-vm-cent65 started Fri Mar 21 14:19:50 2014 > [Fri Mar 21 14:20:00] pmdasimple(31038) Info: Got line: foo > > [Fri Mar 21 14:20:00] pmdasimple(31038) Critical: __pmdaSetupPDU: PMDA > pmdasimple send creds: Broken pipe > > [Fri Mar 21 14:20:00] pmdasimple(31038) Error: PMDA Initialisation Failed > > Log finished Fri Mar 21 14:20:00 2014 > > > > I see a similar error posted here: > > https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1073658 > > but don't know exactly how to deal with that in a perl pmda on startup. > > Background is the following. I'm working on adding to the systemtap pmda > and need to collect information on available tap points before I decide what > metrics to make available. Basically a : > > > > $pmda = PCP::PMDA->new('systemtap', 88); > > open a pipe with stap -l 'syscall.*' and read each into a hash > > for each hash element loop through a whole bunch of : $pmda- > >add_metric(.... > > etc, etc.... > > > > The stap call takes a couple seconds to run, and seems to be enough to kill > the pmda. > > I just simulate the delay with the sleep in the attached example. 10 seconds > is extreme. 2-3 seconds seems to be enough to make it fail. > > Any suggestions on how to proceed? > > Thanks > > Martins From fche@redhat.com Sat Mar 22 22:06:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3C8177F73 for ; Sat, 22 Mar 2014 22:06:49 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1D788304059 for ; Sat, 22 Mar 2014 20:06:45 -0700 (PDT) X-ASG-Debug-ID: 1395544001-04cb6c56777d8bc0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id UFQ0s1pzZxk42rzu for ; Sat, 22 Mar 2014 20:06:42 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2N36a4o000508 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 22 Mar 2014 23:06:37 -0400 Received: from fche.csb (vpn-59-64.rdu2.redhat.com [10.10.59.64]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2N36aXC004777; Sat, 22 Mar 2014 23:06:36 -0400 Received: by fche.csb (Postfix, from userid 2569) id 541F958540; Sat, 22 Mar 2014 23:06:35 -0400 (EDT) To: "Ken McDonell" Cc: "'Martins Innus'" , "'pcp developers'" Subject: Re: pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <001701cf4594$8a193d60$9e4bb820$@internode.on.net> X-ASG-Orig-Subj: Re: pmcd gives up on slow starting Perl PMDA From: fche@redhat.com (Frank Ch. Eigler) Date: Sat, 22 Mar 2014 23:06:35 -0400 In-Reply-To: <001701cf4594$8a193d60$9e4bb820$@internode.on.net> (Ken McDonell's message of "Sat, 22 Mar 2014 17:04:05 +1100") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395544002 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - > The original pmcd <--> pmda protocol was designed to accommodate _exactly_ > this sort of longish delay on pmda startup. > [...] > We need to go back to libpcp_pmda first and figure how to do this > safely (my first guess is that it requires a new variant of > pmdaConnect that can be safely called before pmdaInit and then > possibly launching a worker thread [...] Interesting approach - indeed there seems to be little else we can do if we want both timely responses but tolerate potentially indefinitely-long pmda processing. (The same tolerance for pmdaNOTREADY could conceivably also apply to regular pmda traffic, past initialization.) It would be ideal if we could hide any required multithreading within libpcp_pmda, rather than force the complexity to appear within the API, or force all the pmdas to copy it. We'd have to be particularly careful about interfacing perl/python VMs with an appropriate set of (1?) threads. (Please note that the robustness of multithreading support in libpcp* may not be as good as its sole user (pcpqa) may lead one to believe; I recall seeing some problems in an earlier review. These bugs might crawl out from under the rocks if we kick them over.) A lower complexity alternative solution could be to have the pmda contract with the pmcd a different timeout for various operations, e.g., so a particular pmda's startup could be given up to a few minutes of time rather than a few seconds. These values could travel within a larger pmdaInterface struct, or perhaps a pmcd.conf extension. - FChE From kenj@internode.on.net Sun Mar 23 16:47:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 07A917F55 for ; Sun, 23 Mar 2014 16:47:57 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id BD0B6304039 for ; Sun, 23 Mar 2014 14:47:56 -0700 (PDT) X-ASG-Debug-ID: 1395611270-04bdf05dac842b40001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Wtn0uNeQZ3alToeK for ; Sun, 23 Mar 2014 14:47:51 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhASAOVVL1N20adJPGdsb2JhbAANTINBw0mBJgMBAQEBOIJbAQEEOEARCyEWDwkDAgECATEUEwgBAYgCqkmiZBMEjkc6hDgErjw Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl6.internode.on.net with ESMTP; 24 Mar 2014 08:17:49 +1030 Message-ID: <532F56BC.9040500@internode.on.net> Date: Mon, 24 Mar 2014 08:48:44 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA In-Reply-To: <532C975F.4020808@buffalo.edu> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1395611270 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4189 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I have a strawman proposal for consideration. This is long I'm afraid, but the issues are tricky and warrant some detailed explanation. There are 2 use cases to consider: 1. slow start PMDA - Martins' case and https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1073658 2. PMDA distraction - where sometime after start up the PMDA notices things have changed and has to go reconfig itself, or make a new connection, or reparse a file, or ... None of this is relevant to DSO PMDAs ... if a PMDA is going to be slow it cannot be installed as a DSO (this precondition is checked and enforced in pmdaControl() below). I have the bones of a proof of concept implementation, so it would be nice to get some feedback. === slow start PMDA === /* initialize with no metrics or indoms - see note below */ pmdaInit(&dispatch, NULL, 0, NULL, 0); pmdaConnect(&dispatch); /*new*/ pmdaControl(&dispatch, PMDA_CONTROL_BUSY); ... start up code and long delay ... /* optional */ /*new*/ pmdaSetIndoms(&dispatch, &indomtab, nindoms); /* optional */ /*new*/ pmdaSetMetrics(&dispatch, &metrictab, nmetrics); /* else */ pmdaSetFlags(&dispatch, PMDA_FLAG_EXT_HASHED); pmdaRehash(&dispatch, &metrictab, nmetrics); /*new*/ pmdaControl(&dispatch, PMDA_CONTROL_READY); pmdaMain(&dispatch); pmdaControl() is the key new function. With the PMDA_CONTROL_BUSY argument it will launch a pthread to mimic the libpcp_pmda mainloop, blocking in select() on the recv from pmcd file descriptor ... if pmcd sends anything to the PMDA, this thread returns an error PDU to pmcd with the PM_ERR_PMDANOTREADY code, marks a local state to say this has been done and the thread exits. When pmdaControl() is called with the PMDA_CONTROL_READY argument, if the pthread has sent the PM_ERR_PMDANOTREADY error PDU, then send PM_ERR_PMDAREADY error PDU to pmcd, otherwise terminate the pthread. For this to work, pmdaConnect() has to have been called before the first pmdaControl() call so that the pmcd file descriptors are set up, which means pmdaInit() has to have been called earlier. If the PMDA is not sure of the available metrics and/or instance domains at this point (establishing this may well be the reason for the delay), then pmdaInit() has to be called with no metrics and/or no indoms, which is why I've added the helper methods pmdaSetIndoms() and pmdaSetMetrics() ... the C developer has always been able to do this directly, but we need functional interfaces for this to be available in Perl and Python. === PMDA has to have a big think after start up === At some point, one of the PMDA callback routines is called and the PMDA knows it need to do something to reconfigure itself or probe for something or ... anything that might take longer than the pmcd timeout. The current request cannot be serviced before the long delay, so it will return PM_ERR_PMDANOTREADY to pmcd, then do what needs to be done, then return PM_ERR_PMDAREADY to pmcd. /* * in one/all of the PMDA's callback routines that can return * a value, so check() or fetchcallback(), and/or in the PMDA's * PDU handling methods that may be wrappers to the libpcp_pmda * method, so profile(), fetch(), desc(), instance(), text() * store() ... basically in the places where the PMDA has * control and the delay might be expected */ /*new*/ pmdaControl(&dispatch, PMDA_CONTROL_NOREADY); ... long delay ... /*new*/ pmdaControl(&dispatch, PMDA_CONTROL_READY); return PM_ERR_PMDAREADY; No pthreads needed here as a single thread of execution in the PMDA is all we need. First call to pmdaControl() uses PMDA_CONTROL_NOREADY which forces the PM_ERR_PMDANOTREADY error PDU to be sent to pmcd. The second call to pmdaControl() is a bit of a no-op, just cleans up some internal state so pmdaControl() can enforce valid state transitions. The PM_ERR_PMDAREADY error PDU is sent to pmcd from the libpcp_pmda library as a result of the return PM_ERR_PMDAREADY; from the function that was responsible for the delay. From kenj@internode.on.net Sun Mar 23 17:08:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=COMPENSATION autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E25397F55 for ; Sun, 23 Mar 2014 17:08:55 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8F133AC003 for ; Sun, 23 Mar 2014 15:08:52 -0700 (PDT) X-ASG-Debug-ID: 1395612529-04bdf05dac843290001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id gsiQTXiQrCOtGEXL for ; Sun, 23 Mar 2014 15:08:50 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvYVAJ1aL1N20adJPGdsb2JhbAANTItZuCODDoEoAwEBAQE4gloBAQEDAThAAQULCxgJFg8JAwIBAgExFAYNAQcBARUCh1aqU6JkF44pAQFPB4Q4AQOuPIFe Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl6.internode.on.net with ESMTP; 24 Mar 2014 08:38:49 +1030 Message-ID: <532F5BAA.1070507@internode.on.net> Date: Mon, 24 Mar 2014 09:09:46 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: "Frank Ch. Eigler" CC: 'Martins Innus' , 'pcp developers' Subject: Re: pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <001701cf4594$8a193d60$9e4bb820$@internode.on.net> X-ASG-Orig-Subj: Re: pmcd gives up on slow starting Perl PMDA In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1395612529 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4190 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header G'day Frank. Thanks for the feedback ... I've just posted a longish mail with my proposed solution that was already addressing some of your points, so I'll just pick up on a couple of things here. On 23/03/14 14:06, Frank Ch. Eigler wrote: > ... (The same tolerance for > pmdaNOTREADY could conceivably also apply to regular pmda traffic, > past initialization.) Indeed. There are 2 use cases I can think of ... slow start and distraction once started. My proposal addresses both. > It would be ideal if we could hide any required multithreading within > libpcp_pmda, rather than force the complexity to appear within the > API, or force all the pmdas to copy it. ... The proposal does this. > ... We'd have to be particularly > careful about interfacing perl/python VMs with an appropriate > set of (1?) threads. ... I need more detail here to compensate for my ignorance. If libpcp_pmda creates one thread, only when a PMDA flags that it may "slow start" and the pthread only lives as long as the earlier of (a) pmcd sends a PDU and (b) the PMDA is ready for business, will this be a problem? > ... (Please note that the robustness of > multithreading support in libpcp* may not be as good as its sole user > (pcpqa) may lead one to believe; I recall seeing some problems in an > earlier review. These bugs might crawl out from under the rocks if we > kick them over.) Can you point me to that review? In the proposed solution there is no effective concurrency in libpcp ... for the "slow start" case the pthread is only using the PDU recv and send parts of the library and the main PMDA cannot be using those parts of libpcp ... so I think this is safe, even if there is a residual bug in the mutithreading support. For the "distraction once running" case there is no multithreading involved in the proposed solution. > A lower complexity alternative solution could be to have the pmda > contract with the pmcd a different timeout for various operations, > e.g., so a particular pmda's startup could be given up to a few > minutes of time rather than a few seconds. These values could travel > within a larger pmdaInterface struct, or perhaps a pmcd.conf > extension. The problem I forsee with this is that it involves parallel mechanisms to implement functionality we already have and that demonstrably works for a PMDA written in C. In addition, I doubt that the "distraction once running" case can be handled by prior negotiation/configuration that pmcd knows about (it is an asynchronous event in the life of the PMDA). From nscott@redhat.com Sun Mar 23 18:09:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 327257F55 for ; Sun, 23 Mar 2014 18:09:49 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 15C5A304043 for ; Sun, 23 Mar 2014 16:09:49 -0700 (PDT) X-ASG-Debug-ID: 1395616184-04cb6c567880ded0001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id ft1CfJuKUPneyOPn; Sun, 23 Mar 2014 16:09:44 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2NN9iRD002028; Sun, 23 Mar 2014 19:09:44 -0400 Date: Sun, 23 Mar 2014 19:09:44 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Jonathan Lim Cc: PCP Mailing List Message-ID: <1604716078.4187743.1395616184247.JavaMail.zimbra@redhat.com> In-Reply-To: <328821978.4187531.1395615936648.JavaMail.zimbra@redhat.com> References: <20140322015602.GA21741@shuangzi.engr.sgi.com> <328821978.4187531.1395615936648.JavaMail.zimbra@redhat.com> Subject: Re: [pcp] bug in python pmGetArchiveEnd() MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] bug in python pmGetArchiveEnd() Content-Type: multipart/mixed; boundary="----=_Part_4187741_633516991.1395616184246" X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: bug in python pmGetArchiveEnd() Thread-Index: dz3g/557yI78141+2UJMO3tnnapzQv1rzVDG X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395616184 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4190 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ------=_Part_4187741_633516991.1395616184246 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit [Resending with list address fixed] ----- Original Message ----- > Hi Jonathan, > > ----- Original Message ----- > > I'm getting the following error in pmGetArchiveEnd(): > > > > Traceback (most recent call last): > > ... > > File "/usr/lib64/python2.6/site-packages/pcp.py", line 1391, in > > pmGetArchiveEnd > > status = libpcp.pmGetArchiveEnd ( tvp ) > > ctypes.ArgumentError: argument 1: : expected > > timeval instance instead of LP_timeval > > > > I fixed it as follows, though I'm not sure if it's the right way: > > Yep, that looks good. We'll need to extend the testsuite coverage > as it appears this API is missing (see qa/src/test_pcp.python, and > qa/707, and the attached path). The codebase you're using doesn't > appear to match what I have here though... > > > --- pcp.py.O 2014-03-14 01:33:57.000000000 -0500 > > +++ pcp.py 2014-03-21 20:27:59.000000000 -0500 > > @@ -645,7 +645,7 @@ libpcp.pmGetArchiveLabel.restype = c_int > > libpcp.pmGetArchiveLabel.argtypes = [ POINTER(pmLogLabel) ] > > > > libpcp.pmGetArchiveEnd.restype = c_int > > -libpcp.pmGetArchiveEnd.argtypes = [ timeval ] > > +libpcp.pmGetArchiveEnd.argtypes = [ POINTER(timeval) ] > > > > libpcp.pmGetInDomArchive.restype = c_int > > libpcp.pmGetInDomArchive.argtypes = [ > > @@ -1384,11 +1384,11 @@ class pmContext( object ): > > def pmGetArchiveEnd( self ): > > """PMAPI - Get the last recorded timestamp from the archive > > """ > > - tvp = POINTER(timeval)() > > + tvp = timeval() > > status = libpcp.pmUseContext( self.ctx ) > > if status < 0: > > raise pmErr, status > > - status = libpcp.pmGetArchiveEnd ( tvp ) > > + status = libpcp.pmGetArchiveEnd ( byref(tvp) ) > > if status < 0: > > raise pmErr, status > > return status, tvp > > > > Can someone please review? Thanks. > > > > So in the current version of PCP (and for quite some time IIRC - > Stan will know for sure though), the error handling in the python > API makes use of exceptions rather than this kind of status/value > tuple. > > > On a related note, is the loglabel argument to pmGetArchiveLabel() > > necessary, given that it's called similar to pmGetArchiveEnd()? > > I think the answer to that question is different on the code you > are using versus current PCP. > > Can you make use of the code from git://oss.sgi.com/pcp/pcp and > resend your patch against that? (other than that your patch looks > fine to be merged, along with the QA patch I've attached). > > cheers. > > -- > Nathan > ------=_Part_4187741_633516991.1395616184246 Content-Type: text/x-patch; name=pmapi-py-qa.patch Content-Disposition: attachment; filename=pmapi-py-qa.patch Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3FhL3NyYy90ZXN0X3BjcC5weXRob24gYi9xYS9zcmMvdGVzdF9wY3AucHl0 aG9uCmluZGV4IGVlNjY4YjkuLjFjMmZmMjYgMTAwNzU1Ci0tLSBhL3FhL3NyYy90ZXN0X3BjcC5w eXRob24KKysrIGIvcWEvc3JjL3Rlc3RfcGNwLnB5dGhvbgpAQCAtMzcxLDExICszNzEsMjAgQEAg ZGVmIHRlc3RfcGNwKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2dsYWJlbCA9 IGN0eC5wbUdldEFyY2hpdmVMYWJlbCgpCiAgICAgICAgICAgICBwcmludCAicG1HZXRBcmNoaXZl TGFiZWw6ICIKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSAoVHJ1ZSkKKyAgICAgICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShUcnVlKQogICAgICAgICBleGNlcHQgcG1hcGkucG1FcnIsIGVycm9y OgogICAgICAgICAgICAgcHJpbnQgInBtR2V0QXJjaGl2ZUxhYmVsOiAiLCBlcnJvcgogICAgICAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKEZhbHNlKQogCisgICAgICAgICMgcG1HZXRBcmNoaXZlRW5k CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHR2YWwgPSBjdHgucG1HZXRBcmNoaXZlRW5kKCkK KyAgICAgICAgICAgIHByaW50ICJwbUdldEFyY2hpdmVFbmQ6ICIsIHR2YWwKKyAgICAgICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShUcnVlKQorICAgICAgICBleGNlcHQgcG1hcGkucG1FcnIsIGVycm9y OgorICAgICAgICAgICAgcHJpbnQgInBtR2V0QXJjaGl2ZUVuZDogIiwgZXJyb3IKKyAgICAgICAg ICAgIHNlbGYuYXNzZXJ0VHJ1ZShGYWxzZSkKKwogICAgICMgcG1QcmludFZhbHVlCiAgICAgaWYg bm90IHNlbGYuYXJjaGl2ZV90eXBlOgogICAgICAgICBwcmludCAicG1QcmludFZhbHVlOiAiCg== ------=_Part_4187741_633516991.1395616184246-- From nscott@redhat.com Sun Mar 23 20:02:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3BFD77F50 for ; Sun, 23 Mar 2014 20:02:42 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id CAAF9AC003 for ; Sun, 23 Mar 2014 18:02:38 -0700 (PDT) X-ASG-Debug-ID: 1395622953-04bdf05dac848810001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id AxD5qZN8CzpUlgOD for ; Sun, 23 Mar 2014 18:02:33 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2O12J5L020500; Sun, 23 Mar 2014 21:02:19 -0400 Date: Sun, 23 Mar 2014 21:02:19 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1144957407.4199771.1395622939082.JavaMail.zimbra@redhat.com> In-Reply-To: <532F56BC.9040500@internode.on.net> References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pmcd gives up on slow starting Perl PMDA Thread-Index: pfXEcVJMWNYroPZ3VG7nvooaSw55fg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395622953 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4194 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > I have a strawman proposal for consideration. > > This is long I'm afraid, but the issues are tricky and warrant some > detailed explanation. > > There are 2 use cases to consider: > 1. slow start PMDA - Martins' case and > https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1073658 > 2. PMDA distraction - where sometime after start up the PMDA notices > things have changed and has to go reconfig itself, or make a new > connection, or reparse a file, or ... > > None of this is relevant to DSO PMDAs ... if a PMDA is going to be slow > it cannot be installed as a DSO (this precondition is checked and > enforced in pmdaControl() below). *nod* > I have the bones of a proof of concept implementation, so it would be > nice to get some feedback. > > === slow start PMDA === > In this case, there is a problem in that pmcd currently assumes that a PMDA which does not promptly respond (ie not within the first "-q" pmcd(1) option seconds) is a version 1.x PMDA. It may be time to retire 1.x PMDA support? > [...] > For this to work, pmdaConnect() has to have been called before the first > pmdaControl() call so that the pmcd file descriptors are set up, which > means pmdaInit() has to have been called earlier. If the PMDA is not > sure of the available metrics and/or instance domains at this point > (establishing this may well be the reason for the delay), then > pmdaInit() has to be called with no metrics and/or no indoms, which is > why I've added the helper methods pmdaSetIndoms() and pmdaSetMetrics() > ... the C developer has always been able to do this directly, but we > need functional interfaces for this to be available in Perl and Python. BTW, it would suit the perl and python APIs if they could do this one metric/indom at a time - currently they expose APIs behaving like that, and the wrapper APIs perform the table building internally. > === PMDA has to have a big think after start up === > > The current request cannot be serviced before the long delay, so > it will return PM_ERR_PMDANOTREADY to pmcd, then do what needs > to be done, then return PM_ERR_PMDAREADY to pmcd. > ... > First call to pmdaControl() uses PMDA_CONTROL_NOREADY which forces the NOTREADY? (typo?) Its not really stated, but I guess this will mean that pmcd will now begin to propagate PM_ERR_PMDANOTREADY back to clients, for the subset of PMIDs that the tardy PMDA should have serviced? I think thats OK, just wanted to be sure I have that bit understood. We may want to tweak the wording on the error message: $ pmerr -l | grep PMDA -13394 PM_ERR_PMDANOTREADY PMDA is not yet ready to respond to requests -13393 PM_ERR_PMDAREADY PMDA is now responsive to requests As its now not going to be used only for PMDA startup (if my above assumptions are correct), we should drop the "yet" from that first message. > PM_ERR_PMDANOTREADY error PDU to be sent to pmcd. The second call to > pmdaControl() is a bit of a no-op, just cleans up some internal state so > pmdaControl() can enforce valid state transitions. The PM_ERR_PMDAREADY > error PDU is sent to pmcd from the libpcp_pmda library as a result of > the return PM_ERR_PMDAREADY; from the function that was responsible for > the delay. I think this will work, and is a good improvement on the way some of us - i.e. me :) - had assumed this would have to be done within pmcd (which is problematic in terms of PMDA recovery, since it is not done with any kind of control/cooperation wrt PDU exchanges. Nicely done! cheers. -- Nathan From nscott@redhat.com Sun Mar 23 20:12:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B89287F50 for ; Sun, 23 Mar 2014 20:12:15 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7A6AD8F8035 for ; Sun, 23 Mar 2014 18:12:15 -0700 (PDT) X-ASG-Debug-ID: 1395623530-04cbb054b7617bb0001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id YGvo5t0fuSVaYU4x for ; Sun, 23 Mar 2014 18:12:10 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2O1C7TY028421; Sun, 23 Mar 2014 21:12:07 -0400 Date: Sun, 23 Mar 2014 21:12:07 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <146115274.4201680.1395623527453.JavaMail.zimbra@redhat.com> In-Reply-To: <532F56BC.9040500@internode.on.net> References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pmcd gives up on slow starting Perl PMDA Thread-Index: 6x6SRrg7EU45lh7E7gXFoNDF6WhzKw== X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395623530 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4194 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > [...] > === PMDA has to have a big think after start up === > > At some point, one of the PMDA callback routines is called and > the PMDA knows it need to do something to reconfigure itself or > probe for something or ... anything that might take longer than > the pmcd timeout. > > The current request cannot be serviced before the long delay, so > it will return PM_ERR_PMDANOTREADY to pmcd, then do what needs > to be done, then return PM_ERR_PMDAREADY to pmcd. Thinking more deeply on this, it occurs to me that one possible problem here is that the PMDA doesn't necessarily know if it is going to take a long time. This proposed model, AIUI, would require that whenever a PMDA *might* take a long time, it has to tell pmcd, even if it doesn't end up taking a long time. The potential problem there is that pmcd might get some client request at an unfortunate time, which might have been quickly satisfied by the PMDA, but could end up telling the client we had a slow PMDA, when in fact we did not. e.g. I'm thinking of the pmdaproc case here, where a /proc scan may be quick, or it may not. It may be possible to tackle this using a thread in libpcp_pmda which has a timer, and if the timer is not quickly cancelled then the thread could inform pmcd of the delay as it is happening? cheers. -- Nathan From kenj@internode.on.net Mon Mar 24 00:12:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4DA487F4E for ; Mon, 24 Mar 2014 00:12:44 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id C0B59AC001 for ; Sun, 23 Mar 2014 22:12:40 -0700 (PDT) X-ASG-Debug-ID: 1395637954-04cbb054b7621e00001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 7PWJ2F3aLYYMi6S2 for ; Sun, 23 Mar 2014 22:12:35 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AggWAIq9L1N20adJPGdsb2JhbAANTIcfhDq4HoMOgSgDAQEBATiCWgEBAQMBIwQRQAEFCwsYAgIFFgsCAgkDAgECATEUBg0BBwEBh22qWXahfBeBKY0eMweCb4FJAQOuPA Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail06.adl6.internode.on.net with ESMTP; 24 Mar 2014 15:42:33 +1030 Message-ID: <532FBEF9.3070905@internode.on.net> Date: Mon, 24 Mar 2014 16:13:29 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <1144957407.4199771.1395622939082.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA In-Reply-To: <1144957407.4199771.1395622939082.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1395637954 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4198 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 24/03/14 12:02, Nathan Scott wrote: > ... > In this case, there is a problem in that pmcd currently assumes that > a PMDA which does not promptly respond (ie not within the first "-q" > pmcd(1) option seconds) is a version 1.x PMDA. > > It may be time to retire 1.x PMDA support? This issue is dodged to some extent by demanding that pmdaConnect() has been called before pmdaControl() ... so the creds pdu and version handshake is done ... pmcd should never see a timeout at this point. Independent of that, 1.x PMDA support can probably be sent to the clean land fill. > ... > BTW, it would suit the perl and python APIs if they could do this one > metric/indom at a time - currently they expose APIs behaving like that, > and the wrapper APIs perform the table building internally. I doubt that this will be needed ... based on a quick look at the Perl wrappers for libpcp_pmda, it seems the wrappers maintain private copies of the indomtab and metrictab and do not use the ones hanging of the pmdaInterface struct. But there is another problem in the Perl wrapper ... pmdaInit() and pmdaConnect() are both done in the run() method, immediately before calling local_pmdaMain(). So we'd need an optional connect() method to do the pmdaInit() and pmdaConnect(), then conditional code in run() to not do this again. With these changes something like this should just work (tm) ... $pmda = PCP::PMDA->new(...); $pmda->set_user('pcp'); # optional $pmda->connect; # long think happens here $pmda->add_metric(...) # etc $pmda->add_indom(...) # etc $pmda->run; If python works the same way, I'd suggest dropping pmdaSetIndoms() and pmdaSetMetrics() as they add no value (C programmers can do this directly already). >> === PMDA has to have a big think after start up === >> ... >> First call to pmdaControl() uses PMDA_CONTROL_NOREADY which forces the > > NOTREADY? (typo?) *nod*, ta. > Its not really stated, but I guess this will mean that pmcd will now > begin to propagate PM_ERR_PMDANOTREADY back to clients, for the subset > of PMIDs that the tardy PMDA should have serviced? I think thats OK, > just wanted to be sure I have that bit understood. That is correct. At the moment under the same circumstances, it might work, or the PMDA might be unilaterally terminated by pmcd. > We may want to tweak the wording on the error message: > $ pmerr -l | grep PMDA > -13394 PM_ERR_PMDANOTREADY PMDA is not yet ready to respond to requests > -13393 PM_ERR_PMDAREADY PMDA is now responsive to requests > > As its now not going to be used only for PMDA startup (if my above > assumptions are correct), we should drop the "yet" from that first > message. *nod* From kenj@internode.on.net Mon Mar 24 05:25:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 073667F4E for ; Mon, 24 Mar 2014 05:25:27 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id DD6CE8F8039 for ; Mon, 24 Mar 2014 03:25:26 -0700 (PDT) X-ASG-Debug-ID: 1395656723-04cb6c567583d960001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id jMjlAamC9oBs3bia for ; Mon, 24 Mar 2014 03:25:24 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApQBAA4HMFN20adJ/2dsb2JhbAANTIcfvFuDDoEtgxkBAQEDASMVQAEFBwQLGAICBRYLAgIJAwIBAgFFBg0BBwEBh22qdnaiDxeBKY0eMweCb4FJAQOuPIFVBA Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 24 Mar 2014 20:55:22 +1030 Message-ID: <53300840.1070009@internode.on.net> Date: Mon, 24 Mar 2014 21:26:08 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <146115274.4201680.1395623527453.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA In-Reply-To: <146115274.4201680.1395623527453.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1395656723 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4203 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 24/03/14 12:12, Nathan Scott wrote: > > > ----- Original Message ----- >> [...] >> === PMDA has to have a big think after start up === >> >> At some point, one of the PMDA callback routines is called and >> the PMDA knows it need to do something to reconfigure itself or >> probe for something or ... anything that might take longer than >> the pmcd timeout. >> >> The current request cannot be serviced before the long delay, so >> it will return PM_ERR_PMDANOTREADY to pmcd, then do what needs >> to be done, then return PM_ERR_PMDAREADY to pmcd. > > Thinking more deeply on this, it occurs to me that one possible > problem here is that the PMDA doesn't necessarily know if it is > going to take a long time. This proposed model, AIUI, would > require that whenever a PMDA *might* take a long time, it has > to tell pmcd, even if it doesn't end up taking a long time. Yep, that's the bones of the proposal for the "distracted" case. But not necessarily for the startup case where pmcd would be none the wiser if it does not send a PDU to the PMDA before the PMDA is ready. > The potential problem there is that pmcd might get some client > request at an unfortunate time, which might have been quickly > satisfied by the PMDA, but could end up telling the client we > had a slow PMDA, when in fact we did not. e.g. I'm thinking of > the pmdaproc case here, where a /proc scan may be quick, or it > may not. It may be possible to tackle this using a thread in > libpcp_pmda which has a timer, and if the timer is not quickly > cancelled then the thread could inform pmcd of the delay as it > is happening? If I can get the BUSY case to work, then I think we can generalize the pmdaControl method to provide the sort of semantics you're after here. From minnus@buffalo.edu Mon Mar 24 08:17:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CFDBE7F4E for ; Mon, 24 Mar 2014 08:17:20 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id C22FE304053 for ; Mon, 24 Mar 2014 06:17:17 -0700 (PDT) X-ASG-Debug-ID: 1395667036-04cbb054b7654790001-S8gJnT Received: from mtareserve1.acsu.buffalo.edu (mtareserve14.acsu.buffalo.edu [128.205.6.46]) by cuda.sgi.com with ESMTP id VfPF5RY8Cx4t4unQ for ; Mon, 24 Mar 2014 06:17:16 -0700 (PDT) X-Barracuda-Envelope-From: minnus@buffalo.edu X-Barracuda-Apparent-Source-IP: 128.205.6.46 Received: from localmailC.acsu.buffalo.edu (localmailc.acsu.buffalo.edu [128.205.5.204]) by mtareserve1.acsu.buffalo.edu (Postfix) with ESMTP id 80C142022; Mon, 24 Mar 2014 09:17:16 -0400 (EDT) Received: from localmailC.acsu.buffalo.edu (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id 7C3A9D7F7; Mon, 24 Mar 2014 09:17:16 -0400 (EDT) Received: from localmailC.acsu.buffalo.edu (localhost [127.0.0.1]) by localmailC.acsu.buffalo.edu (Postfix) with ESMTP id 19AABD7F3; Mon, 24 Mar 2014 09:17:16 -0400 (EDT) Received: from smtp.buffalo.edu (smtp1.acsu.buffalo.edu [128.205.5.253]) by localmailC.acsu.buffalo.edu (Prefixe) with ESMTP id 1131ED7F2; Mon, 24 Mar 2014 09:17:16 -0400 (EDT) Received: from gilmour.ccr.buffalo.edu (gilmour.ccr.buffalo.edu [128.205.40.13]) (Authenticated sender: minnus@buffalo.edu) by smtp.buffalo.edu (Postfix) with ESMTPSA id 05C229DC1; Mon, 24 Mar 2014 09:17:16 -0400 (EDT) Message-ID: <5330305B.1020600@buffalo.edu> Date: Mon, 24 Mar 2014 09:17:15 -0400 From: Martins Innus User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Ken McDonell , 'pcp developers' Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <001701cf4594$8a193d60$9e4bb820$@internode.on.net> X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA In-Reply-To: <001701cf4594$8a193d60$9e4bb820$@internode.on.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-PM-EL-Spam-Prob: : 8% X-Barracuda-Connect: mtareserve14.acsu.buffalo.edu[128.205.6.46] X-Barracuda-Start-Time: 1395667036 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4206 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Ken, On 3/22/14 2:04 AM, Ken McDonell wrote: > Hmm ... there is a problem here Houston. Thanks for a curly weekend > problem, Martins. > Ha! Sorry, I had hoped I was just doing something wrong. I am happy to help test an potential solution. Thanks Martins From minnus@buffalo.edu Mon Mar 24 08:25:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id BCC317F4E for ; Mon, 24 Mar 2014 08:25:28 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 52884AC004 for ; Mon, 24 Mar 2014 06:25:25 -0700 (PDT) X-ASG-Debug-ID: 1395667523-04cb6c5678850530001-S8gJnT Received: from mtareserve1.acsu.buffalo.edu (mtareserve14.acsu.buffalo.edu [128.205.6.46]) by cuda.sgi.com with ESMTP id 2XkYcztHKIDsBwKd for ; Mon, 24 Mar 2014 06:25:24 -0700 (PDT) X-Barracuda-Envelope-From: minnus@buffalo.edu X-Barracuda-Apparent-Source-IP: 128.205.6.46 Received: from localmailB.acsu.buffalo.edu (localmailb.acsu.buffalo.edu [128.205.5.200]) by mtareserve1.acsu.buffalo.edu (Postfix) with ESMTP id C7C282441; Mon, 24 Mar 2014 09:25:23 -0400 (EDT) Received: from localmailB.acsu.buffalo.edu (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id C2CFCE8CD; Mon, 24 Mar 2014 09:25:23 -0400 (EDT) Received: from localmailB.acsu.buffalo.edu (localhost [127.0.0.1]) by localmailB.acsu.buffalo.edu (Postfix) with ESMTP id 474E1E8CA; Mon, 24 Mar 2014 09:25:23 -0400 (EDT) Received: from smtp.buffalo.edu (smtp1.acsu.buffalo.edu [128.205.5.253]) by localmailB.acsu.buffalo.edu (Prefixe) with ESMTP id 3D6B1E8C9; Mon, 24 Mar 2014 09:25:23 -0400 (EDT) Received: from gilmour.ccr.buffalo.edu (gilmour.ccr.buffalo.edu [128.205.40.13]) (Authenticated sender: minnus@buffalo.edu) by smtp.buffalo.edu (Postfix) with ESMTPSA id 319059E9E; Mon, 24 Mar 2014 09:25:23 -0400 (EDT) Message-ID: <53303242.5020605@buffalo.edu> Date: Mon, 24 Mar 2014 09:25:22 -0400 From: Martins Innus User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Ken McDonell , Nathan Scott , PCP Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <146115274.4201680.1395623527453.JavaMail.zimbra@redhat.com> <53300840.1070009@internode.on.net> X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA In-Reply-To: <53300840.1070009@internode.on.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-PM-EL-Spam-Prob: : 8% X-Barracuda-Connect: mtareserve14.acsu.buffalo.edu[128.205.6.46] X-Barracuda-Start-Time: 1395667524 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4206 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 3/24/14 6:26 AM, Ken McDonell wrote: > On 24/03/14 12:12, Nathan Scott wrote: >> The potential problem there is that pmcd might get some client >> request at an unfortunate time, which might have been quickly >> satisfied by the PMDA, but could end up telling the client we >> had a slow PMDA, when in fact we did not. e.g. I'm thinking of >> the pmdaproc case here, where a /proc scan may be quick, or it >> may not. It may be possible to tackle this using a thread in >> libpcp_pmda which has a timer, and if the timer is not quickly >> cancelled then the thread could inform pmcd of the delay as it >> is happening? > > If I can get the BUSY case to work, then I think we can generalize the > pmdaControl method to provide the sort of semantics you're after here. We have proc pmdas that are timing out on heavily loaded systems, my next task was going to be looking into this. Should I wait until this new api/method is fleshed out before doing so? Thanks Martins From brolley@redhat.com Mon Mar 24 09:15:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E3C4B7F4E for ; Mon, 24 Mar 2014 09:15:37 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C18188F804C for ; Mon, 24 Mar 2014 07:15:34 -0700 (PDT) X-ASG-Debug-ID: 1395670530-04bdf076f05a7c30001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 1KZvfdd6Ji1Fnosi for ; Mon, 24 Mar 2014 07:15:30 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2OEFLO9031647 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Mar 2014 10:15:21 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2OEFKf9021568; Mon, 24 Mar 2014 10:15:20 -0400 Message-ID: <53303E3B.9020607@redhat.com> Date: Mon, 24 Mar 2014 10:16:27 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott , Ken McDonell CC: PCP Mailing List Subject: Re: QA dev branch notes References: <479138455.3472719.1395380836346.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: QA dev branch notes In-Reply-To: <479138455.3472719.1395380836346.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395670530 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 03/21/2014 01:47 AM, Nathan Scott wrote: > Hi guys, > > Firstly, thanks so much for that qa/src/multithread4.c fix > Ken (the "fix ugly race" one) - that intermittent failure > has plagued me for ages, and I'd never been able to quite > put my finger on it. Thanks! > > Dave, I have a consistent failure on 260 now ... .bad file > vs .out shows: > > 324c324 > < r: 0.4 > --- >> r: 0.50 I'm not seeing this failure in my results. Dave From fche@redhat.com Mon Mar 24 10:35:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 499FA7F4E for ; Mon, 24 Mar 2014 10:35:35 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1834F304032 for ; Mon, 24 Mar 2014 08:35:32 -0700 (PDT) X-ASG-Debug-ID: 1395675331-04bdf05dab887960001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id a3kaBDApJBQk9TFw for ; Mon, 24 Mar 2014 08:35:31 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2OFZPig015479 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Mar 2014 11:35:26 -0400 Received: from fche.csb (vpn-59-64.rdu2.redhat.com [10.10.59.64]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2OFZOut032698; Mon, 24 Mar 2014 11:35:25 -0400 Received: by fche.csb (Postfix, from userid 2569) id 5D9745853F; Mon, 24 Mar 2014 11:35:24 -0400 (EDT) To: Ken McDonell Cc: pcp@oss.sgi.com Subject: Re: pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> X-ASG-Orig-Subj: Re: pmcd gives up on slow starting Perl PMDA From: fche@redhat.com (Frank Ch. Eigler) Date: Mon, 24 Mar 2014 11:35:24 -0400 In-Reply-To: <532F56BC.9040500@internode.on.net> (Ken McDonell's message of "Mon, 24 Mar 2014 08:48:44 +1100") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395675331 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Ken - kenj wrote: > I have a strawman proposal for consideration. Thanks! > [...] None of this is relevant to DSO PMDAs ... if a PMDA is going > to be slow it cannot be installed as a DSO [...] (Over time, we should move away from DSO's anyway, for failure tolerance. We've seen pmda bugs crash & bring down pmcd. I think we've seen memory leaks.) > [...] > === PMDA has to have a big think after start up === > > At some point, one of the PMDA callback routines is called and > the PMDA knows it need to do something to reconfigure itself or > probe for something or ... anything that might take longer than > the pmcd timeout. [...] In the general case, the pmda might not know ahead of time if a request might blow a particular timeout because of transient overloads or lock conflicts or whatever. It seem what we'd need more is - a pmda-side watchdog thread, to reply with NOTREADY indication to pmcd when/if the pmda callbacks are taking too long - intelligence in pmcd to relay that NOTREADY to the pmapi client - intelligence in pmcd to quench further requests to the pmda until it is ready (so reply NOTREADY to other clients without even asking the pmda) - yet more intelligence in pmcd to NOT forget about the original pmda request that timed out, so that when the pmda eventually finishes, the results can get dropped on the floor, then go back into full service This approach could maybe apply to the pmda initialization problem also: let these pmdas defer any possibly-timetaking initialization to the first post-pmda-setup packet, and let the watchdog handle NOTREADY as above. - FChE From fche@redhat.com Mon Mar 24 12:07:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 506407F4E for ; Mon, 24 Mar 2014 12:07:46 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 339D8304053 for ; Mon, 24 Mar 2014 10:07:46 -0700 (PDT) X-ASG-Debug-ID: 1395680862-04cbb054b966c810001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id AyBcA1bptXLT7FpQ for ; Mon, 24 Mar 2014 10:07:42 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2OH7bKY025214 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Mar 2014 13:07:38 -0400 Received: from fche.csb (vpn-59-64.rdu2.redhat.com [10.10.59.64]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2OH7b76025115; Mon, 24 Mar 2014 13:07:37 -0400 Received: by fche.csb (Postfix, from userid 2569) id 417F75853F; Mon, 24 Mar 2014 13:07:36 -0400 (EDT) To: Ken McDonell Cc: pcp@oss.sgi.com Subject: Possible multithreading problems, Was Re: pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <001701cf4594$8a193d60$9e4bb820$@internode.on.net> <532F5BAA.1070507@internode.on.net> X-ASG-Orig-Subj: Possible multithreading problems, Was Re: pmcd gives up on slow starting Perl PMDA From: fche@redhat.com (Frank Ch. Eigler) Date: Mon, 24 Mar 2014 13:07:36 -0400 In-Reply-To: <532F5BAA.1070507@internode.on.net> (Ken McDonell's message of "Mon, 24 Mar 2014 09:09:46 +1100") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395680862 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 kenj wrote: > [...] >> ... (Please note that the robustness of >> multithreading support in libpcp* may not be as good as its sole user >> (pcpqa) may lead one to believe; I recall seeing some problems in an >> earlier review. These bugs might crawl out from under the rocks if we >> kick them over.) > > Can you point me to that review? Sorry, I only noted some in passing (on IRC). Just going for a random drive-by in libpcp/src ... - access.c, getClientIds(), a mismatched PM_UNLOCK in the loop around line 1295. (By the way, the 'myhostid' variable is probably a symptom of more inappropriate FQDN assumptions that will need to be fixed.) - context.c, pmNewContext(), contexts*, old_*context* used unprotected in FAILED: path. - context.c, pmDupContext(), quite possibly unsafe if another thread is manipulating the oldcon at the same time; by the way, is that condition (same pmUseContext by different threads) detected / forbidden / permitted? The __pmHandleToPtr() ctxp->c_lock design sounds fine, but it's not used in all context-structure users - context.c __pmHandleToPtr race condition between the libpcp unlock and the context lock (what if another thread deletes the context) during this time?) (Flipping the locks around could maybe cause deadlocks OTOH; __pmLogFetchInterp nests the libpcp lock within the ctxp lock already.) - interp.c cache_read: race condition between PM_UNLOCK and use of lfup pointer; another thread may have nuked that cache[] slot in the mean time; this general pattern recurs several places in the code (look for UNLOCK followed by a return FOO->BAR, e.g. logmeta.c) - util.c: using libpcp lock for all kinds of printing, possibly nesting within context locks -> possible deadlock - loop.c: no locking at all ... anyway, this was just about 30 mins' random browsing, not a systematic audit. Even with that, a couple of non-trivial problems showed up. As difficult as it is to prove the absence of bugs in general, when you add concurrency to it, it's many times worse. We should accept the idea that if functionality is only used by small synthetic pcpqa test cases, we should not trust it too much (see also pmDupContext). After a more thorough audit & bug-fixing pass, we could seriously multithread something like pmchart or pmie or pmwebd to get some confidence. But even then, latent concurrency bugs won't make themselves obvious. - FChE From jlim@sgi.com Mon Mar 24 14:11:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EFA3529DF7 for ; Mon, 24 Mar 2014 14:11:21 -0500 (CDT) Received: from shuangzi.engr.sgi.com (shuangzi.engr.sgi.com [150.166.130.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id CADC08F8035 for ; Mon, 24 Mar 2014 12:11:18 -0700 (PDT) Received: by shuangzi.engr.sgi.com (Postfix, from userid 1000) id 4BE20405B0; Mon, 24 Mar 2014 12:12:12 -0700 (PDT) Date: Mon, 24 Mar 2014 12:12:12 -0700 From: Jonathan Lim To: pcp@oss.sgi.com Subject: Re: [pcp] bug in python pmGetArchiveEnd() Message-ID: <20140324191212.GA31882@shuangzi.engr.sgi.com> References: <20140322015602.GA21741@shuangzi.engr.sgi.com> <328821978.4187531.1395615936648.JavaMail.zimbra@redhat.com> <1604716078.4187743.1395616184247.JavaMail.zimbra@redhat.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="r5Pyd7+fXNt84Ff3" Content-Disposition: inline In-Reply-To: <1604716078.4187743.1395616184247.JavaMail.zimbra@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) --r5Pyd7+fXNt84Ff3 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sun, Mar 23, 2014 at 07:09:44PM -0400, Nathan Scott wrote: > > Can you make use of the code from git://oss.sgi.com/pcp/pcp and > resend your patch against that? (other than that your patch looks > fine to be merged, along with the QA patch I've attached). Thanks, Nathan. I've attached a new diff against the git source. Regarding pmGetArchiveLabel(), I was looking at an older version, so yes, the loglabel argument has been removed. Jonathan --r5Pyd7+fXNt84Ff3 Content-Type: text/x-patch; charset=us-ascii Content-Disposition: attachment; filename="pmapi-py-pmGetArchiveEnd.patch" --- src/python/pcp/pmapi.py.O 2014-03-24 13:17:49.000000000 -0500 +++ src/python/pcp/pmapi.py 2014-03-24 13:19:31.000000000 -0500 @@ -546,7 +546,7 @@ LIBPCP.pmGetArchiveLabel.restype = c_int LIBPCP.pmGetArchiveLabel.argtypes = [POINTER(pmLogLabel)] LIBPCP.pmGetArchiveEnd.restype = c_int -LIBPCP.pmGetArchiveEnd.argtypes = [timeval] +LIBPCP.pmGetArchiveEnd.argtypes = [POINTER(timeval)] LIBPCP.pmGetInDomArchive.restype = c_int LIBPCP.pmGetInDomArchive.argtypes = [ @@ -1228,11 +1228,11 @@ class pmContext(object): def pmGetArchiveEnd(self): """PMAPI - Get the last recorded timestamp from the archive """ - tvp = POINTER(timeval)() + tvp = timeval() status = LIBPCP.pmUseContext(self.ctx) if status < 0: raise pmErr, status - status = LIBPCP.pmGetArchiveEnd(tvp) + status = LIBPCP.pmGetArchiveEnd(byref(tvp)) if status < 0: raise pmErr, status return tvp --r5Pyd7+fXNt84Ff3-- From kenj@internode.on.net Mon Mar 24 14:59:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E7C597F4E for ; Mon, 24 Mar 2014 14:59:14 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 84003AC002 for ; Mon, 24 Mar 2014 12:59:11 -0700 (PDT) X-ASG-Debug-ID: 1395691148-04cb6c567587bea0001-S8gJnT Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id BWVaxIazUYKGaK9S for ; Mon, 24 Mar 2014 12:59:09 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmgWAN6NMFN20adJPGdsb2JhbAANTA6LS7gggw6BNgMBAQEBOIJaAQEBBDhAEQsOCgkWDwkDAgECATEUBgEMCAEBs12jYRePAYQ4AQOtaVM Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail05.adl6.internode.on.net with ESMTP; 25 Mar 2014 06:29:07 +1030 Message-ID: <53308EC6.6000705@internode.on.net> Date: Tue, 25 Mar 2014 07:00:06 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Martins Innus , Nathan Scott , PCP Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <146115274.4201680.1395623527453.JavaMail.zimbra@redhat.com> <53300840.1070009@internode.on.net> <53303242.5020605@buffalo.edu> X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA In-Reply-To: <53303242.5020605@buffalo.edu> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1395691148 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4216 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 25/03/14 00:25, Martins Innus wrote: > ... > We have proc pmdas that are timing out on heavily loaded systems, my > next task was going to be looking into this. Should I wait until this > new api/method is fleshed out before doing so? Waiting would be good ... 8^)> In the interim, you have a sledge hammer that can be used. The timeout in pmcd is configurable ... both at pmcd start up (via -t , usually using /etc/pcp/pmcd/pmcd.options) and dynamically (via pmstore pmcd.control.timeout ) ... see the -t option in pmcd(1). The down-side of making this bigger than the default 5 (seconds) is that you'll wait longer for a really dead PMDA to be noticed, and the semantics of the data returned in a pmResult may be a little fuzzy ... if the requested metrics span more than one PMDA they all come back with a single timestamp, but the data may have been collected several seconds apart from the different PMDAs (comparing a fast PMDA to a slow PMDA) From nscott@redhat.com Mon Mar 24 22:44:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C80687F37 for ; Mon, 24 Mar 2014 22:44:00 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id A163F8F8054 for ; Mon, 24 Mar 2014 20:43:57 -0700 (PDT) X-ASG-Debug-ID: 1395719031-04cb6c56788aa0f0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id hkHCCMU1u4M2mRKW; Mon, 24 Mar 2014 20:43:52 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2P3hpMA030416; Mon, 24 Mar 2014 23:43:51 -0400 Date: Mon, 24 Mar 2014 23:43:51 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Cc: Jonathan Lim Message-ID: <1628399455.5090299.1395719031564.JavaMail.zimbra@redhat.com> In-Reply-To: <437982085.5087507.1395718585298.JavaMail.zimbra@redhat.com> Subject: pcp updates: qa, long options, python fix MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: qa, long options, python fix Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: qa, long options, python fix Thread-Index: I4+tgk2/jVyKYNw4rLkw7IlveTTBRg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395719031 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4224 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev debian/libpcp-pmda3-dev.install | 1 man/man3/pmdagetopt.3 | 196 ------- man/man3/pmdagetoptions.3 | 239 +++++++++ man/man3/pmgetoptions.3 | 21 qa/260 | 10 qa/702 | 20 qa/702.out | 2 qa/707 | 43 - qa/707.out | 1 qa/750 | 2 qa/GNUmakefile | 3 qa/common.python | 31 + qa/group | 1 qa/src/GNUlocaldefs | 5 qa/src/pyapi.0 |binary qa/src/pyapi.index |binary qa/src/pyapi.meta |binary qa/src/test_pcp.python | 11 src/dbpmda/src/dbpmda.c | 12 src/include/pcp/pmapi.h | 4 src/include/pcp/pmda.h | 74 ++ src/libpcp/src/getopt.c | 6 src/libpcp_pmda/src/exports | 5 src/libpcp_pmda/src/open.c | 188 +++---- src/newhelp/newhelp.c | 93 +-- src/pmcd/src/pmcd.c | 182 +++---- src/pmcd_wait/pmcd_wait.c | 140 +---- src/pmcpp/pmcpp.c | 31 - src/pmdas/trace/src/.gitignore | 1 src/pmdas/trace/src/GNUmakefile | 22 src/pmdate/pmdate.c | 2 src/pmdbg/pmdbg.c | 54 +- src/pmerr/pmerr.c | 13 src/pmhostname/pmhostname.c | 55 -- src/pmieconf/pmieconf.c | 70 +- src/pmimport/collectl2pcp/collectl2pcp.c | 71 +- src/pmlc/pmlc.c | 182 ++----- src/pmlc/pmlc.h | 17 src/pmmgr/pmmgr.cxx | 61 +- src/pmproxy/pmproxy.c | 172 +++--- src/pmwebapi/main.c | 801 ++++++++++++++----------------- src/python/pcp/pmapi.py | 6 42 files changed, 1457 insertions(+), 1391 deletions(-) commit cf186ecf5e296ccd19016ee9e6f0de647d4da1ec Author: Nathan Scott Date: Tue Mar 25 14:26:44 2014 +1100 Fix test qa/750 for some host namings Improve filtering in test qa/750 - rpm appears to use the moral equivalent of "hostname -f" as build host name and not simply "hostname". Adjust filter to handle both of these cases. commit 088a563bdc007cc7da5f0947405e3ab2afa03a88 Author: Nathan Scott Date: Tue Mar 25 14:24:25 2014 +1100 Update trace PMDA makefile to use modern make macros commit f00a8656ffa3371254435c21e4d7cef1a9f392b7 Author: Nathan Scott Date: Tue Mar 25 14:23:50 2014 +1100 Remove the qa/260 check for pmRegisterDerived in pmapi.h commit 1d721ce1659aeb76ef3982033e5b1503584d5c15 Author: Nathan Scott Date: Tue Mar 25 14:23:02 2014 +1100 Fix test qa/707 by using a custom archive Test 707 was failing since it was recently cleft in two to separate out live and archive modes of test, exposing a testing bug where the latter could never fail. This commit now fixes test 707, via addition of a new archive (qa/src/pyapi) containing all of the metrics it is expecting (missing sample.bin in particular was the root cause of the earlier failure). commit 70735f5c7582d6ce2dcb3924826f74a17bd84662 Author: Jonathan Lim Date: Tue Mar 25 14:17:00 2014 +1100 Fix the python pmGetArchiveEnd interface Incorrect pointer types were being used when declaring the ctypes pmGetArchiveEnd libpcp interface, and again later when building the on-stack (python) parameters to pass on into libpcp. commit 18ac147ab0ba9505280337a9033b7cffc6fd1f25 Author: Nathan Scott Date: Tue Mar 25 14:10:55 2014 +1100 Introduce long option command line processing for PMDAs Using the same libpcp infrastructure exposed by pmGetOptions, this commit supplements the existing pmdaGetOpt interface with a new pmdaGetOptions routine. The latter supports the use of long options in PMDAs. Through use of devious cunning, the old interface is implemented using the new (and hence both build on pmgetopt_r). This will let us remove the POSIXLY_CORRECT environment variable setting that pmcd and dbpmda do, because pmGetOpt alone drives that flag (PM_OPTFLAG_POSIX) into the getopt code, whereas (new) users of the pmdatGetOptions interface can choose whether or not they'll need POSIX option handling. At this stage, I've left all of the PMDAs using the old interface to build some QA confidence in the backward-compat aspect. Soon, however, PMDA long option assimilation will begin. commit ec3a76579ad691b1b98467bcb6edcf5c4d19deb8 Author: Nathan Scott Date: Mon Mar 24 13:30:07 2014 +1100 Split python PMAPI test into live and archive variants Looking to extend the python PMAPI test, I noticed that the archive component was already failing but that the test still passes. This is because both live & archive modes send output into $seq.full, and both grep on "OK" in that output file to verify pass. So, if live mode passed, the test always passed. Sadly, archive mode throws its toys^W^Wan exception part way through - the test should have been failing all along. Fix the test issue by splitting into two tests. This makes it simpler, faster, workier, and debugging should be easier now. Test 707 is still failing though - Stan will hopefully get to that shortly, else I will circle back, sneak up on it when its not looking, and fix it (the fix is to create an archive with all the metrics that the test needs, commit it and use it in 707). Also, added in a pmArchiveEnd check while I was there. commit 3df7efc1f581638628320597a98504186ca32a57 Author: Nathan Scott Date: Sun Mar 23 20:03:50 2014 +1100 Next round of additions of tool long options support Converted tools this time: newhelp, pmcd, pmcd_wait, pmcpp, pmdate, pmdbg, pmerr, pmhostname, pmieconf, collectl2pcp, pmlc, pmmgr, pmproxy, pmwebd. Found need for a couple more flags to pmGetOptions - pmieconf wants to add commands to usage, so a no-flush option is added. The tools were also not correctly reporting incorrect usage - bad option reporting was suppressed - reenable this, but allow for it to be disabled via flag. Some minor code cleanups to tools along the way; conformance to general pcp coding style in particular. Discovered pmcd and dbpmda still need to put POSIXLY_CORRECT in the environment for now. A future libpcp_pmda conversion to pmgetopt_r will once and for all do away with this beast, however. From nscott@redhat.com Mon Mar 24 23:53:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 047167F37 for ; Mon, 24 Mar 2014 23:53:50 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id CE4AE304067 for ; Mon, 24 Mar 2014 21:53:46 -0700 (PDT) X-ASG-Debug-ID: 1395723221-04bdf05daa8d62a0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id vIKOOfh6vSKQoXOq for ; Mon, 24 Mar 2014 21:53:42 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2P4rb5Y007311; Tue, 25 Mar 2014 00:53:37 -0400 Date: Tue, 25 Mar 2014 00:53:37 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: Ken McDonell , pcp@oss.sgi.com Message-ID: <2130236572.5100446.1395723217046.JavaMail.zimbra@redhat.com> In-Reply-To: References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> Subject: DSO PMDAs (was Re: [pcp] pmcd gives up on slow starting Perl PMDA) MIME-Version: 1.0 X-ASG-Orig-Subj: DSO PMDAs (was Re: [pcp] pmcd gives up on slow starting Perl PMDA) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: DSO PMDAs (was Re: [pcp] pmcd gives up on slow starting Perl PMDA) Thread-Index: +za1E9yDjoAILFyC2/OnmwLpCFsy5g== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395723222 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4226 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Frank, I agree with all the other good points you make about pmcd/pmda not-ready interaction here, but it looks like we need to revisit this DSO PMDA topic once more ...? ----- Original Message ----- > [...] > Over time, we should move away from DSO's anyway, The components that are DSO's today have been carefully selected as such, and those decisions are sound. I agree people should have the choice to change from DSO to daemon if they wish (and they do). The defaults are working well though and there isn't a compelling reason to change 'em - e.g. ... > > We've seen pmda bugs crash & bring down pmcd. > I think we've seen memory leaks. > In the case of the kernel PMDA in particular, these are not arguments for using a daemon. The level of importance of the kernel metrics is so great that a crash in pmdalinux (whether daemon or DSO) may as well take out pmcd, cos not much useful work is going to happen beyond that point either way. Given that fact, we should use the more efficient transfer mechanism there. Yes, we certainly have fixed some memory leaks in the past. But any PMDA that leaks as a DSO, still leaks as a daemon. So that's not a reason to switch either. If these issues are concerning you, I propose we increase the level of testing done on the kernel PMDA (we have no pmdalinux tests using valgrind, IIRC, which needs to change). DSO mode makes this form of memory-check testing much easier too, ironically (valgrind->pminfo). I'd also like to see an increase in the kernel PMDA testing done via the non-/proc-prefix approach to exercise the many little parsers it has with canned, targeted data access (currently all pmdalinux tests use the running kernel as the data source, but it doesn't have to be that way). Also, bear in mind we have many hosts running pmcd with the current DSO PMDA set in 24x7 production operation, and have for many years. We should (and do) have high levels of confidence in this code. It can be made better still and we must strive to do so, but switching the kernel PMDA in particular into a daemon does not help us toward that goal IMO. cheers. -- Nathan From nscott@redhat.com Tue Mar 25 01:26:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 652177F3F for ; Tue, 25 Mar 2014 01:26:25 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 54A95304053 for ; Mon, 24 Mar 2014 23:26:22 -0700 (PDT) X-ASG-Debug-ID: 1395728780-04bdf05daa8de840001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id CA8uVsohqSPG9tC4 for ; Mon, 24 Mar 2014 23:26:20 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2P6QKuD017883 for ; Tue, 25 Mar 2014 02:26:20 -0400 Date: Tue, 25 Mar 2014 02:26:20 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <135377578.5124168.1395728780240.JavaMail.zimbra@redhat.com> In-Reply-To: <2130236572.5100446.1395723217046.JavaMail.zimbra@redhat.com> References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <2130236572.5100446.1395723217046.JavaMail.zimbra@redhat.com> Subject: Re: DSO PMDAs (was Re: [pcp] pmcd gives up on slow starting Perl PMDA) MIME-Version: 1.0 X-ASG-Orig-Subj: Re: DSO PMDAs (was Re: [pcp] pmcd gives up on slow starting Perl PMDA) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: DSO PMDAs (was Re: [pcp] pmcd gives up on slow starting Perl PMDA) Thread-Index: +za1E9yDjoAILFyC2/OnmwLpCFsy5turPAzH X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395728780 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4227 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > If these issues are concerning you, I propose we increase the level > of testing done on the kernel PMDA (we have no pmdalinux tests using > valgrind, IIRC, which needs to change). DSO mode makes this form of > memory-check testing much easier too, ironically (valgrind->pminfo). I've created test 957 which does this local context checking on the Linux kernel PMDA. Its failing on a couple of sub-trees, if anyone would like to take a closer look (else, I'll come back to it soon). > I'd also like to see an increase in the kernel PMDA testing done via > the non-/proc-prefix approach to exercise the many little parsers it > has with canned, targeted data access (currently all pmdalinux tests > use the running kernel as the data source, but it doesn't have to be > that way). This is a long-term project of course, any helpers here also would be very much appreciated. Needs some dedicated individuals to go through each of the /proc file parsers and begin producing test cases that will exercise the more unusual situations. Fuzz testing might be handy here if anyone is game to look into some of the open source fuzzers? Also, we could begin making all new pmdalinux commits raise the bar on their level of testing effort (whenever there's a bug, lets aim to produce a decent set of coverage in the affected area). cheers. -- Nathan From nscott@redhat.com Tue Mar 25 01:29:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E0E827F3F for ; Tue, 25 Mar 2014 01:29:36 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id DDC87304051 for ; Mon, 24 Mar 2014 23:29:36 -0700 (PDT) X-ASG-Debug-ID: 1395728975-04cbb054b66c2770001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id LZrgOAfXzPzf9PqN for ; Mon, 24 Mar 2014 23:29:35 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2P6TZwX022477 for ; Tue, 25 Mar 2014 02:29:35 -0400 Date: Tue, 25 Mar 2014 02:29:35 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <1639681838.5125797.1395728975259.JavaMail.zimbra@redhat.com> In-Reply-To: <1630591414.5124506.1395728818721.JavaMail.zimbra@redhat.com> Subject: pcp updates: pmdalinux qa MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: pmdalinux qa Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.12] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: pmdalinux qa Thread-Index: 4RgwmV/d5IVj6/vIDOuWODglAPWeZA== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395728975 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4227 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev qa/957 | 48 ++++++++++++++ qa/957.out | 207 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ qa/group | 1 3 files changed, 256 insertions(+) commit 2ddeae9eeb1e7d164e61f0178d5503e14707ed6d Author: Nathan Scott Date: Tue Mar 25 17:19:42 2014 +1100 Create a valgrind test for metric fetching from pmdalinux Adds test qa/957 which iterates over the top level names for the namespace exported by pmdalinux, then runs local context mode pminfo (in -v verification mode) on each of the subtrees, using the valgrind QA wrapper. From fche@redhat.com Tue Mar 25 06:54:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 361567F3F for ; Tue, 25 Mar 2014 06:54:24 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 148C5304048 for ; Tue, 25 Mar 2014 04:54:20 -0700 (PDT) X-ASG-Debug-ID: 1395748456-04cb6c56788d52b0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 6rMQmnRDhyoEgERi for ; Tue, 25 Mar 2014 04:54:16 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2PBs91e004019 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 25 Mar 2014 07:54:11 -0400 Received: from fche.csb (vpn-59-64.rdu2.redhat.com [10.10.59.64]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2PBs9JN005118; Tue, 25 Mar 2014 07:54:09 -0400 Received: by fche.csb (Postfix, from userid 2569) id ACB9B584E8; Tue, 25 Mar 2014 07:54:08 -0400 (EDT) To: Nathan Scott Cc: pcp@oss.sgi.com Subject: Re: DSO PMDAs References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <2130236572.5100446.1395723217046.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: DSO PMDAs From: fche@redhat.com (Frank Ch. Eigler) Date: Tue, 25 Mar 2014 07:54:08 -0400 In-Reply-To: <2130236572.5100446.1395723217046.JavaMail.zimbra@redhat.com> (Nathan Scott's message of "Tue, 25 Mar 2014 00:53:37 -0400 (EDT)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395748456 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi - nathans wrote: >> [...] >> Over time, we should move away from DSO's anyway, > > The components that are DSO's today have been carefully selected as > such, and those decisions are sound. I agree people should have the > choice to change from DSO to daemon if they wish (and they do). The > defaults are working well though and there isn't a compelling reason > to change 'em - e.g. ... We agree there's no emergency, but as you know we have encountered real problems even recently (bz10555818). >> We've seen pmda bugs crash & bring down pmcd. >> I think we've seen memory leaks. > > In the case of the kernel PMDA in particular, these are not arguments > for using a daemon. The level of importance of the kernel metrics is > so great that a crash in pmdalinux (whether daemon or DSO) may as well > take out pmcd, cos not much useful work is going to happen beyond that > point either way. [...] We agree that the mem/hinv/kernel/disk/network stats form the core, yet they are not all jointly crucial. There may well be sysadmins who would agree "give me everything or give me nothing" - and there are others who say "give me whatever you can". It's not obvious whether a failure-amplification approach based on the former is any wiser than a failure-resilience approach is based on the latter. If we had sufficient isolation, we could continue producing partial results. If we had automated pmcd/pmda restartability, we could continue producing full results, in case the underlying problem was temporary. See for example how bz1065803 (in the non-dso proc pmda) failures are intermittent, and a manual restart restores function for a while. (Maybe per-pmda control via systemd could do the heavy lifting for us.) > [...] DSO mode makes this form of [pmda] memory-check testing much > easier too, ironically (valgrind->pminfo). FWIW, I have also had success running pipe type pmdas under analysis by interposing valgrind at the /etc/pcp/pmcd/pmcd.conf command line level. (Note that the absence of valgrind reports is only weak evidence of an absence of bugs.) > Also, bear in mind we have many hosts running pmcd with the current > DSO PMDA set in 24x7 production operation, and have for many years. > We should (and do) have high levels of confidence in this code. > [...] High levels of confidence are totally justified by such experience, especially in relatively static / homogenous environments. And yet we would be remiss not to consider implications of actual failures seen outside those particular 24x7 operations. - FChE From wwwrun@oss.sgi.com Tue Mar 25 09:40:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 0086129DF7; Tue, 25 Mar 2014 09:40:37 -0500 (CDT) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1035] PMCD Should Not Fail to Start if NSS Fails to Initialize Date: Tue, 25 Mar 2014 14:40:37 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: brolley@redhat.com X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: brolley@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: bug_status assigned_to Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1395758437.fc238381.2342"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1395758437.fc238381.2342 Date: Tue, 25 Mar 2014 09:40:37 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1035 brolley@redhat.com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED Assignee|pcp@kenj.com.au |brolley@redhat.com -- You are receiving this mail because: You are on the CC list for the bug. --1395758437.fc238381.2342 Date: Tue, 25 Mar 2014 09:40:37 -0500 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" changed bug 1035
What Removed Added
Status NEW ASSIGNED
Assignee pcp@kenj.com.au brolley@redhat.com


You are receiving this mail because:
  • You are on the CC list for the bug.
--1395758437.fc238381.2342-- From brolley@redhat.com Tue Mar 25 09:59:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1C20B7F3F for ; Tue, 25 Mar 2014 09:59:38 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id F1DA3304070 for ; Tue, 25 Mar 2014 07:59:37 -0700 (PDT) X-ASG-Debug-ID: 1395759572-04cb6c56768e7300001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id h4RXBF6BvelksHhw for ; Tue, 25 Mar 2014 07:59:33 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2PExW91024984 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 25 Mar 2014 10:59:32 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2PExWTS000843 for ; Tue, 25 Mar 2014 10:59:32 -0400 Message-ID: <53319A17.6060608@redhat.com> Date: Tue, 25 Mar 2014 11:00:39 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: PCP Mailing List Subject: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395759573 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Branch brolley/dev in pcpfans. -------------------------------------------------------------------------- commit b9d2adfa5ae7cc5d8ef8416bbf804736a40efda5 Author: Dave Brolley Date: Tue Mar 25 10:35:25 2014 -0400 When NSS fails to initialize, pmcd should still start successfully. oss.sgi.com/bugzilla/show_bug.cgi?id=1035 Previously, pmcd would fail to start if NSS failed to start or if a suitable certificate could not be established for secure connections. With this change, pmcd will start under these conditions, but will not accept secure connections. New qa test 966 checks that pmcd starts and accepts non-secure connections. From wwwrun@oss.sgi.com Tue Mar 25 10:19:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 30) id 5E25429DF7; Tue, 25 Mar 2014 10:19:58 -0500 (CDT) From: bugzilla-daemon@oss.sgi.com To: pcp@oss.sgi.com Subject: [Bug 1035] PMCD Should Not Fail to Start if NSS Fails to Initialize Date: Tue, 25 Mar 2014 15:19:58 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Classification: Unclassified X-Bugzilla-Product: pcp X-Bugzilla-Component: pcp X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: brolley@redhat.com X-Bugzilla-Status: ASSIGNED X-Bugzilla-Priority: P5 X-Bugzilla-Assigned-To: brolley@redhat.com X-Bugzilla-Target-Milestone: --- X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: multipart/alternative; boundary="1395760798.EbF5Aa10.8576"; charset="us-ascii" X-Bugzilla-URL: http://oss.sgi.com/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 --1395760798.EbF5Aa10.8576 Date: Tue, 25 Mar 2014 10:19:58 -0500 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" http://oss.sgi.com/bugzilla/show_bug.cgi?id=1035 --- Comment #1 from brolley@redhat.com --- Fixed by commit b9d2adfa5ae7cc5d8ef8416bbf804736a40efda5 in the brolley/dev branch of the pcpfans repository. -- You are receiving this mail because: You are on the CC list for the bug. --1395760798.EbF5Aa10.8576 Date: Tue, 25 Mar 2014 10:19:58 -0500 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8"

Comment # 1 on bug 1035 from
Fixed by commit b9d2adfa5ae7cc5d8ef8416bbf804736a40efda5 in the brolley/dev
branch of the pcpfans repository.


You are receiving this mail because:
  • You are on the CC list for the bug.
--1395760798.EbF5Aa10.8576-- From brolley@redhat.com Tue Mar 25 11:37:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3DE117F4E for ; Tue, 25 Mar 2014 11:37:33 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2575F8F8035 for ; Tue, 25 Mar 2014 09:37:30 -0700 (PDT) X-ASG-Debug-ID: 1395765448-04cb6c56788f2850001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id HihUSCW0Q8z4Nfgj for ; Tue, 25 Mar 2014 09:37:29 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2PGaghD017110 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 25 Mar 2014 12:37:27 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2PEuoQ5028975 for ; Tue, 25 Mar 2014 10:56:51 -0400 Message-ID: <53319976.10107@redhat.com> Date: Tue, 25 Mar 2014 10:57:58 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: PCP Mailing List Subject: PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395765449 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On the brolley/dev branch of pcpfans.... --------------------------------------------------------- commit 58a2dd93a9b020fbe99a9e1518628925332c0902 Author: Dave Brolley Date: Mon Mar 24 15:42:04 2014 -0400 Fix intermittent failure in nss_setup_certificates. certutil uses the current time, within an accuracy of 1 second, to generate certificate serial numbers. So, wait 1 second between generating the local CA certificate and the PCP collector certificate so that they don't get the same serial number. This fixes intermittent failures of qa tests 712, 713 and 714. From fche@redhat.com Tue Mar 25 11:47:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E716D7F4E for ; Tue, 25 Mar 2014 11:47:07 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C338A8F8035 for ; Tue, 25 Mar 2014 09:47:07 -0700 (PDT) X-ASG-Debug-ID: 1395766022-04bdf076f0642b20001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id DixtD4KaH0Gm564y for ; Tue, 25 Mar 2014 09:47:02 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2PGjUEp009449 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 25 Mar 2014 12:45:34 -0400 Received: from fche.csb (vpn-59-64.rdu2.redhat.com [10.10.59.64]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2PGjT2s017075; Tue, 25 Mar 2014 12:45:30 -0400 Received: by fche.csb (Postfix, from userid 2569) id 22AE2584E8; Tue, 25 Mar 2014 12:45:29 -0400 (EDT) To: Dave Brolley Cc: PCP Mailing List Subject: Re: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize References: <53319A17.6060608@redhat.com> X-ASG-Orig-Subj: Re: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize From: fche@redhat.com (Frank Ch. Eigler) Date: Tue, 25 Mar 2014 12:45:29 -0400 In-Reply-To: <53319A17.6060608@redhat.com> (Dave Brolley's message of "Tue, 25 Mar 2014 11:00:39 -0400") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395766022 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Dave Brolley writes: > commit b9d2adfa5ae7cc5d8ef8416bbf804736a40efda5 > Author: Dave Brolley > Date: Tue Mar 25 10:35:25 2014 -0400 > > When NSS fails to initialize, pmcd should still start successfully. > [...] Have you considered doing this at the pmcd/pmproxy.c level instead, so that a bad rc from __pmSecureServerSetup is sent but tolerated (instead of triggering DontStart())? That way, the __pmSecureServerSetup function doesn't lie about its success, which in turn would later let us extend pmcd with a $PCP_SECURE_SOCKETS-like option to *require* ssl? - FChE From brolley@redhat.com Tue Mar 25 13:05:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 06C067F3F for ; Tue, 25 Mar 2014 13:05:05 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id D89D5304070 for ; Tue, 25 Mar 2014 11:05:01 -0700 (PDT) X-ASG-Debug-ID: 1395770700-04bdf05dac923490001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id kA2KsEy081HMtT9I for ; Tue, 25 Mar 2014 11:05:01 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2PI4s9E006012 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 25 Mar 2014 14:04:59 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2PHssTE004305; Tue, 25 Mar 2014 13:54:55 -0400 Message-ID: <5331C332.2060008@redhat.com> Date: Tue, 25 Mar 2014 13:56:02 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "Frank Ch. Eigler" CC: PCP Mailing List Subject: Re: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize References: <53319A17.6060608@redhat.com> X-ASG-Orig-Subj: Re: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395770700 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 03/25/2014 12:45 PM, Frank Ch. Eigler wrote: > Dave Brolley writes: > >> commit b9d2adfa5ae7cc5d8ef8416bbf804736a40efda5 >> Author: Dave Brolley >> Date: Tue Mar 25 10:35:25 2014 -0400 >> >> When NSS fails to initialize, pmcd should still start successfully. >> [...] > Have you considered doing this at the pmcd/pmproxy.c level instead, so > that a bad rc from __pmSecureServerSetup is sent but tolerated > (instead of triggering DontStart())? That way, the > __pmSecureServerSetup function doesn't lie about its success, which in > turn would later let us extend pmcd with a $PCP_SECURE_SOCKETS-like > option to *require* ssl? > I did think of this and still think that within libpcp is the best place for this change. I thought that there might possibly be a future reason (like your example) for __pmSecureServerSetup() to fail in a fatal way. The current implementation does allow for this. I don't see it as __pmSecureServerSetup() lying. There was already a case (no server certificates exist at all) for which it was returning 0. I took this to mean that a return code of zero was not asserting that the setup was completely successful, just that the problem was not fatal. Dave From nscott@redhat.com Tue Mar 25 16:29:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 66A447F3F for ; Tue, 25 Mar 2014 16:29:32 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2CB4BAC002 for ; Tue, 25 Mar 2014 14:29:31 -0700 (PDT) X-ASG-Debug-ID: 1395782966-04bdf05dab938410001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 7d0eGucZeJgmkcEw for ; Tue, 25 Mar 2014 14:29:27 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2PLTMh4021420; Tue, 25 Mar 2014 17:29:22 -0400 Date: Tue, 25 Mar 2014 17:29:22 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Dave Brolley , Ken McDonell Cc: PCP Mailing List Message-ID: <1005100877.391595.1395782962539.JavaMail.zimbra@redhat.com> In-Reply-To: <479138455.3472719.1395380836346.JavaMail.zimbra@redhat.com> References: <479138455.3472719.1395380836346.JavaMail.zimbra@redhat.com> Subject: Re: QA dev branch notes MIME-Version: 1.0 X-ASG-Orig-Subj: Re: QA dev branch notes Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: QA dev branch notes Thread-Index: cK7cl44ZfUtZtN49hofqACRPfaW0qGV4fOH+ X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395782967 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4243 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > Hi guys, > > Firstly, thanks so much for that qa/src/multithread4.c fix > Ken (the "fix ugly race" one) - that intermittent failure > has plagued me for ages, and I'd never been able to quite > put my finger on it. Thanks! Hmm - I spoke too soon, and still see intermittent 449 failures. $ ./check -q -l 449 449 0s ... Passed all 1 tests $ ./check -q -l 449 449 1s ... Passed all 1 tests $ ./check -q -l 449 449 1s ... Passed all 1 tests $ ./check -q -l 449 449 1s ... Passed all 1 tests $ ./check -q -l 449 449 0s ... - output mismatch (see 449.out.bad) 32c32 < pmStore: No permission to perform requested operation --- > pmStore: Operation not supported for multi-threaded applications Check local PMCD is still alive ... PMDA probe: pminfo -h smash -f sample.milliseconds PMDA probe: pminfo -h smash -f sampledso.milliseconds PMDA probe: pminfo -h smash -f simple.numfetch Failures: 449 Failed 1 of 1 tests ... which is the same issue I'm used to seeing on occasion. > Dave, I have a consistent failure on 260 now ... .bad file > vs .out shows: > > 324c324 > < r: 0.4 > --- > > r: 0.50 > > I've never seen this before, and its just started since the > pmlogger/pmlc merge. For the life of me, I can't see how > that could have affected this test though. It seems like we > have someone sending an additional PDU to pmcd at some point. > I'll continue to look into it next week, just thought I'd put > it out there in case anyone else is seeing it and/or has any > ideas. In other strange sightings, test 260 spontaneously begun to pass again (sometimes), and worse - the bug has multiplied! Its evil offspring have jumped the fenceand test 259 has now started to fail occasionally. Both are derived metrics tests and, yeah, nothings changed in this area recently. $ ./check -q -l 259 259 2s ... - output mismatch (see 259.out.bad) 147c147 < __dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=-1 u=3 --- > __dmpostfetch: [0] root node 511.0.2: numval=1 vset[0]: inst=-1 u=5 161,162c161,162 < value 3 < 3 --- > value 5 > 5 Check local PMCD is still alive ... PMDA probe: pminfo -h smash -f sample.milliseconds PMDA probe: pminfo -h smash -f sampledso.milliseconds PMDA probe: pminfo -h smash -f simple.numfetch Failures: 259 Failed 1 of 1 tests $ ./check -q -l 260 260 4s ... Passed all 1 tests $ ./check -q -l 259 260 259 2s ... 260 3s ... - output mismatch (see 260.out.bad) 348c348 < r: 0.50 --- > r: 0.57 Check local PMCD is still alive ... PMDA probe: pminfo -h smash -f sample.milliseconds PMDA probe: pminfo -h smash -f sampledso.milliseconds PMDA probe: pminfo -h smash -f simple.numfetch Failures: 260 Failed 1 of 2 tests cheers. -- Nathan From nscott@redhat.com Tue Mar 25 16:39:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C859E7F3F for ; Tue, 25 Mar 2014 16:39:34 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id D20198F8039 for ; Tue, 25 Mar 2014 14:39:31 -0700 (PDT) X-ASG-Debug-ID: 1395783567-04cbb054b672b5d0001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id VOWz1yxTiBhOKfCA for ; Tue, 25 Mar 2014 14:39:27 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2PLdNxC017130; Tue, 25 Mar 2014 17:39:23 -0400 Date: Tue, 25 Mar 2014 17:39:23 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1918399066.396500.1395783563283.JavaMail.zimbra@redhat.com> In-Reply-To: <53300840.1070009@internode.on.net> References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <146115274.4201680.1395623527453.JavaMail.zimbra@redhat.com> <53300840.1070009@internode.on.net> Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pmcd gives up on slow starting Perl PMDA Thread-Index: qgnCuOB3iVaqZ4Pj7uKsWEpuAuwHrA== X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395783567 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4243 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Ken, ----- Original Message ----- > Yep, that's the bones of the proposal for the "distracted" case. But > not necessarily for the startup case where pmcd would be none the wiser > if it does not send a PDU to the PMDA before the PMDA is ready. > OK. That creds exchange happens immediately, as we discussed, so I guess we'll need to document that we need to get through that early protocol exchange before any long running transactions (IOW, Franks observed pmdasystemd journald-API-takes-ridiculously-long-to-return problem will not get fixed here). I wonder if we should tweak/add an API to allow a PMDA to enter the creds exchange earlier than it normally would? > If I can get the BUSY case to work, then I think we can generalize the > pmdaControl method to provide the sort of semantics you're after here. > Perfect. I'm wondering too if, once we have this facility available, we should reduce that default 5 second pmcd/pmda timeout to something much shorter (1 second or less, even) to start weeding out any badly behaving PMDAs and improve overall sampling accuracy? cheers. -- Nathan From nscott@redhat.com Tue Mar 25 16:56:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 970617F3F for ; Tue, 25 Mar 2014 16:56:41 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7FF3D30407A for ; Tue, 25 Mar 2014 14:56:41 -0700 (PDT) X-ASG-Debug-ID: 1395784598-04bdf05daa93aa00001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id PtDyaRGcUY6pCrc3 for ; Tue, 25 Mar 2014 14:56:39 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2PLuZkp025696; Tue, 25 Mar 2014 17:56:35 -0400 Date: Tue, 25 Mar 2014 17:56:35 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" , Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1476890552.402528.1395784595641.JavaMail.zimbra@redhat.com> In-Reply-To: References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pmcd gives up on slow starting Perl PMDA Thread-Index: +mhCW12g6FVrBv1iEtAaMqlQzvbqVw== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395784599 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > > [...] > - a pmda-side watchdog thread, to reply with NOTREADY indication to pmcd > when/if the pmda callbacks are taking too long *nod* > - intelligence in pmcd to relay that NOTREADY to the pmapi client Coding-wise this bit is trivial BTW - in fact, on closer inspection, it appears to already be implemented! (Ken, do you plan to keep the PM_ERR_AGAIN return? I think it would be better to switch over to using PM_ERR_PMDANOTREADY here so the root-cause is clear). > - intelligence in pmcd to quench further requests to the pmda until it > is ready (so reply NOTREADY to other clients without even asking the pmda) This is also already in place in the existing code. > - yet more intelligence in pmcd to NOT forget about the original pmda > request that timed out, so that when the pmda eventually finishes, > the results can get dropped on the floor, then go back into full service If I'm understand it correctly, one of the clever aspects of Kens approach here is that fixing this (tough issue, given PDUs may be split arbitrarily) is not actually required! He's turned horrible complexity into something that is almost too easy from pmcd's POV... 'tis a cunning plan, Baldrich. cheers. -- Nathan From kenj@internode.on.net Tue Mar 25 17:11:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EB0D87F3F for ; Tue, 25 Mar 2014 17:11:18 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id DE6E530407A for ; Tue, 25 Mar 2014 15:11:15 -0700 (PDT) X-ASG-Debug-ID: 1395785472-04bdf076f0664840001-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id yRNiRbRopdrH7kUo for ; Tue, 25 Mar 2014 15:11:13 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Am0WAD7+MVN20adJPGdsb2JhbAANTINBiBm8XQMBAQEBOIQJDTQCMicGAgEBtFejGhePC4QiBK5B Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail04.adl6.internode.on.net with ESMTP; 26 Mar 2014 08:41:12 +1030 Message-ID: <5331FF3C.20304@internode.on.net> Date: Wed, 26 Mar 2014 09:12:12 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - qa and pmlogmv Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates - qa and pmlogmv Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1395785472 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- pmlogmv is new -- deals with an itch, solves a production problem I had yesterday, and is needed for one of the agreed pmlogger_daily changes that is on my plate. Changes committed to git://oss.sgi.com/kenj/pcp.git dev man/man1/GNUmakefile | 2 man/man1/pmlogmv.1 | 81 +++++++++++++++++ qa/738 | 200 ++++++++++++++++++++++++++++++++++++++++++++ qa/738.out | 217 ++++++++++++++++++++++++++++++++++++++++++++++++ qa/admin/pcp-daily | 6 + qa/admin/pcp-qa-summary | 2 qa/common | 4 qa/group | 51 ++++++----- qa/new | 29 +++--- src/GNUmakefile | 2 10 files changed, 559 insertions(+), 35 deletions(-) commit 40aa15e0c04d41adaf5fe931a0a00530c316d236 Author: Ken McDonell Date: Wed Mar 26 09:05:13 2014 +1100 qa/new - adjustments for new ## convention in groups file In the groups file, lines with prefixed with a single # are comments that are interpreted as one-line descriptions that the new script looks for if the user asks for a list of groups at the end of the creation of a new qa test. Lines with prefixed with ## are also comments, but are ignored for the purpose of finding the one-line descriptions. Block (multi-line) descriptions of a group are the intended use of the (newly introduced) ## prefix. commit d1779bce78e82455c9c7ae29267168ba6ba1e875 Author: Ken McDonell Date: Wed Mar 26 09:01:57 2014 +1100 pmlogmv (new) - atomic move/rename PCP archive files New shell script to atomically move (rename) all the physical files in a PCP archive. Aside from direct use, the justification is to enable an optimization for the common "one archive case" in pmlogger_daily. commit e0c99b6df2d7695883547165ab834744fbf7ed43 Author: Ken McDonell Date: Sun Mar 23 08:47:42 2014 +1100 qa/common - report retired tests commit 103a75f120d1d1397652f63a96c03077bbd122ba Author: Ken McDonell Date: Sun Mar 23 08:46:00 2014 +1100 qa/admin/pcp-qa-summary - add special case for host bozo-vm commit d8afb153f3ba9a2e2faca4268f5334e466452fe2 Author: Ken McDonell Date: Sun Mar 23 08:45:17 2014 +1100 qa/admin/pcp-daily - add some more of kenj's QA hosts From kenj@internode.on.net Tue Mar 25 17:34:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8EBE87F3F for ; Tue, 25 Mar 2014 17:34:56 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 45A36AC002 for ; Tue, 25 Mar 2014 15:34:55 -0700 (PDT) X-ASG-Debug-ID: 1395786890-04cb6c567791b890001-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 05Y5ZEOnkgjbjY95 for ; Tue, 25 Mar 2014 15:34:51 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: An0WAPEDMlN20adJPGdsb2JhbAANTIcfhDu4HIMOgTMDAQEBATiCWgEBAQQdBgQRQRALGAICBSECAg8CMhQGDQEHAQG0SXaiJBeBKYx0AQFPB4JvgUkBA65BgV4 Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail04.adl6.internode.on.net with ESMTP; 26 Mar 2014 09:04:49 +1030 Message-ID: <533204C5.10104@internode.on.net> Date: Wed, 26 Mar 2014 09:35:49 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <146115274.4201680.1395623527453.JavaMail.zimbra@redhat.com> <53300840.1070009@internode.on.net> <1918399066.396500.1395783563283.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA In-Reply-To: <1918399066.396500.1395783563283.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1395786890 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 26/03/14 08:39, Nathan Scott wrote: > ... > OK. That creds exchange happens immediately, as we discussed, so I > guess we'll need to document that we need to get through that early > protocol exchange before any long running transactions (IOW, Franks > observed pmdasystemd journald-API-takes-ridiculously-long-to-return > problem will not get fixed here). I wonder if we should tweak/add > an API to allow a PMDA to enter the creds exchange earlier than it > normally would? For C I think the API hook is already there ... just call pmdaConnect() (and before that pmdaInit()) earlier. As I think I said in an earlier mail (a couple of days ago), this will require a new method for Perl (and Python I suspect if that wrapper follows the Perl model) to force the connect earlier than the run() method, I suggested connect(). From the earlier mail here is the pseudo-code ... $pmda = PCP::PMDA->new(...); $pmda->set_user('pcp'); # optional $pmda->connect; # long think happens here $pmda->add_metric(...) # etc $pmda->add_indom(...) # etc $pmda->run; I'd implement this so that run() calls connect() and connect() has a one-trip guard to ensure the pmcd connection is only done once. This way existing PMDAs (and any new ones that are not tardy starters) would remain the same as today. The example above needs to be tested to ensure that the add_metric() and add_indom() logic works after the connect() ... if this is OK, then we can add $pmda->control(..BUSY..) after the connect() call for the slow starters. > ... > Perfect. I'm wondering too if, once we have this facility available, > we should reduce that default 5 second pmcd/pmda timeout to something > much shorter (1 second or less, even) to start weeding out any badly > behaving PMDAs and improve overall sampling accuracy? That would be good. From kenj@internode.on.net Tue Mar 25 17:38:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8C9CE7F3F for ; Tue, 25 Mar 2014 17:38:15 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8F2F930407F for ; Tue, 25 Mar 2014 15:38:15 -0700 (PDT) X-ASG-Debug-ID: 1395787093-04bdf05daa93e1e0001-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id tIZiOwjQotdFyKBJ for ; Tue, 25 Mar 2014 15:38:13 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: An0WAPEDMlN20adJPGdsb2JhbAANTIcfhDu4HIMOgTMDAQEBATiCWgEBAQQjFUEQCxgCAgUhAgIPAjIUBgEMAQcBAbRJdqIkF4EpjUUHgm+BSQEDrkE Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail04.adl6.internode.on.net with ESMTP; 26 Mar 2014 09:08:12 +1030 Message-ID: <53320591.40108@internode.on.net> Date: Wed, 26 Mar 2014 09:39:13 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Nathan Scott , "Frank Ch. Eigler" CC: pcp@oss.sgi.com Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <1476890552.402528.1395784595641.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA In-Reply-To: <1476890552.402528.1395784595641.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1395787093 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 26/03/14 08:56, Nathan Scott wrote: > ... (Ken, do you plan to keep the > PM_ERR_AGAIN return? I think it would be better to switch over to > using PM_ERR_PMDANOTREADY here so the root-cause is clear). I had not delved that deeply ... this will depend on the extent to which clients are taking any action based on PM_ERR_AGAIN and/or PM_ERR_AGAIN is already being used for something different. This is all TBD, but thanks for the heads up. From nscott@redhat.com Tue Mar 25 17:45:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A72A77F3F for ; Tue, 25 Mar 2014 17:45:41 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 587B2AC002 for ; Tue, 25 Mar 2014 15:45:41 -0700 (PDT) X-ASG-Debug-ID: 1395787539-04cb6c567791c0d0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id FHw3Ln4xnNZEeZ7P for ; Tue, 25 Mar 2014 15:45:39 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2PMjanu002378; Tue, 25 Mar 2014 18:45:36 -0400 Date: Tue, 25 Mar 2014 18:45:36 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1874895638.424059.1395787536032.JavaMail.zimbra@redhat.com> In-Reply-To: <533204C5.10104@internode.on.net> References: <532C975F.4020808@buffalo.edu> <532F56BC.9040500@internode.on.net> <146115274.4201680.1395623527453.JavaMail.zimbra@redhat.com> <53300840.1070009@internode.on.net> <1918399066.396500.1395783563283.JavaMail.zimbra@redhat.com> <533204C5.10104@internode.on.net> Subject: Re: [pcp] pmcd gives up on slow starting Perl PMDA MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pmcd gives up on slow starting Perl PMDA Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pmcd gives up on slow starting Perl PMDA Thread-Index: eph60lJBR292QBhhSjoNNyj3Kk+Dvg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395787539 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > > ... > As I think I said in an earlier mail (a couple of days ago), this will > require a new method for Perl (and Python I suspect if that wrapper > follows the Perl model) to force the connect earlier than the run() > method, I suggested connect(). Sorry about my reply tardiness (you didn't get the NOTREADY PDU I sent?) I've been attempting to keep my head down, coding. :) Yes, both of the languages wrappers will need to be tweaked as you say; python is wrapped slightly differently but mainly in its object-oriented-ness: > The example above needs to be tested to ensure that the add_metric() and > add_indom() logic works after the connect() ... if this is OK, then we That will work just fine I expect. Those add* calls update in-memory data structures - the gears only engage when run() is called. cheers. -- Nathan From kenj@internode.on.net Tue Mar 25 17:45:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BD6BC7F52 for ; Tue, 25 Mar 2014 17:45:42 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id D45ED304064 for ; Tue, 25 Mar 2014 15:45:42 -0700 (PDT) X-ASG-Debug-ID: 1395787540-04cb6c567591c0d0001-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 9RvGU7OzlWieUflH for ; Tue, 25 Mar 2014 15:45:40 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoAWAEsGMlN20adJPGdsb2JhbAANTIcfhDu4HIMOgTMDAQEBATiCWgEBAQQjFUABDAQLGAICBRYLAgIJAwIBAgExFAYBDAEHAQG0SHaiJBeBKY1FB4JvgUkBA65B Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail04.adl6.internode.on.net with ESMTP; 26 Mar 2014 09:15:39 +1030 Message-ID: <5332074F.6000102@internode.on.net> Date: Wed, 26 Mar 2014 09:46:39 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Nathan Scott , Dave Brolley CC: PCP Mailing List Subject: Re: QA dev branch notes References: <479138455.3472719.1395380836346.JavaMail.zimbra@redhat.com> <1005100877.391595.1395782962539.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: QA dev branch notes In-Reply-To: <1005100877.391595.1395782962539.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1395787540 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 26/03/14 08:29, Nathan Scott wrote: > > > ----- Original Message ----- >> Hi guys, >> >> Firstly, thanks so much for that qa/src/multithread4.c fix >> Ken (the "fix ugly race" one) - that intermittent failure >> has plagued me for ages, and I'd never been able to quite >> put my finger on it. Thanks! > > Hmm - I spoke too soon, and still see intermittent 449 failures. > > $ ./check -q -l 449 > 449 0s ... > Passed all 1 tests > $ ./check -q -l 449 > 449 1s ... > Passed all 1 tests > $ ./check -q -l 449 > 449 1s ... > Passed all 1 tests > $ ./check -q -l 449 > 449 1s ... > Passed all 1 tests > $ ./check -q -l 449 > 449 0s ... - output mismatch (see 449.out.bad) > 32c32 > < pmStore: No permission to perform requested operation > --- >> pmStore: Operation not supported for multi-threaded applications But this is from src/multithread1.c (not ...4.c), correct? From nscott@redhat.com Tue Mar 25 17:48:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C11F07F3F for ; Tue, 25 Mar 2014 17:48:35 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id DAEA38F8039 for ; Tue, 25 Mar 2014 15:48:32 -0700 (PDT) X-ASG-Debug-ID: 1395787708-04cbb054b8731340001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id rkdo2JkjfJ98ZnpX for ; Tue, 25 Mar 2014 15:48:28 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2PMmLGa001415; Tue, 25 Mar 2014 18:48:21 -0400 Date: Tue, 25 Mar 2014 18:48:21 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: Dave Brolley , PCP Mailing List Message-ID: <242660823.425120.1395787701578.JavaMail.zimbra@redhat.com> In-Reply-To: <5332074F.6000102@internode.on.net> References: <479138455.3472719.1395380836346.JavaMail.zimbra@redhat.com> <1005100877.391595.1395782962539.JavaMail.zimbra@redhat.com> <5332074F.6000102@internode.on.net> Subject: Re: QA dev branch notes MIME-Version: 1.0 X-ASG-Orig-Subj: Re: QA dev branch notes Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: QA dev branch notes Thread-Index: OcZqZRbANqrKCIIChzdCTVX3J4jEuw== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395787708 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4246 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > > $ ./check -q -l 449 > > 449 0s ... - output mismatch (see 449.out.bad) > > 32c32 > > < pmStore: No permission to perform requested operation > > --- > >> pmStore: Operation not supported for multi-threaded applications > > But this is from src/multithread1.c (not ...4.c), correct? > Ah - yes, right you are! That fix was never going to help - I had simply punted it was the same issue. cheers. -- Nathan From nscott@redhat.com Tue Mar 25 19:03:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B474A29DF7 for ; Tue, 25 Mar 2014 19:03:26 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id A2789304075 for ; Tue, 25 Mar 2014 17:03:23 -0700 (PDT) X-ASG-Debug-ID: 1395792197-04cbb054b6738fc0001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id EQoCVgqJV7TD2Hnr for ; Tue, 25 Mar 2014 17:03:17 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2Q03E9S014214; Tue, 25 Mar 2014 20:03:14 -0400 Date: Tue, 25 Mar 2014 20:03:14 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1966248368.446271.1395792194044.JavaMail.zimbra@redhat.com> In-Reply-To: <5331FF3C.20304@internode.on.net> References: <5331FF3C.20304@internode.on.net> Subject: Re: [pcp] pcp updates - qa and pmlogmv MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates - qa and pmlogmv Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates - qa and pmlogmv Thread-Index: A9gcQe+afz45DY/v4VNZHoqskuQw2g== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395792197 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4247 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Ken, This branch appears to be missing one small detail... src/pmlogmv ;) ----- Original Message ----- > pmlogmv is new -- deals with an itch, solves a production problem I had > yesterday, and is needed for one of the agreed pmlogger_daily changes that > is on my plate. > > Changes committed to git://oss.sgi.com/kenj/pcp.git dev > > man/man1/GNUmakefile | 2 > man/man1/pmlogmv.1 | 81 +++++++++++++++++ > qa/738 | 200 ++++++++++++++++++++++++++++++++++++++++++++ > qa/738.out | 217 > ++++++++++++++++++++++++++++++++++++++++++++++++ > qa/admin/pcp-daily | 6 + > qa/admin/pcp-qa-summary | 2 > qa/common | 4 > qa/group | 51 ++++++----- > qa/new | 29 +++--- > src/GNUmakefile | 2 > 10 files changed, 559 insertions(+), 35 deletions(-) > > commit 40aa15e0c04d41adaf5fe931a0a00530c316d236 > Author: Ken McDonell > Date: Wed Mar 26 09:05:13 2014 +1100 > > qa/new - adjustments for new ## convention in groups file > > In the groups file, lines with prefixed with a single # are > comments that are interpreted as one-line descriptions that the > new script looks for if the user asks for a list of groups at > the end of the creation of a new qa test. > > Lines with prefixed with ## are also comments, but are ignored > for the purpose of finding the one-line descriptions. Block > (multi-line) descriptions of a group are the intended use of the > (newly introduced) ## prefix. > > commit d1779bce78e82455c9c7ae29267168ba6ba1e875 > Author: Ken McDonell > Date: Wed Mar 26 09:01:57 2014 +1100 > > pmlogmv (new) - atomic move/rename PCP archive files > > New shell script to atomically move (rename) all the physical > files in a PCP archive. Aside from direct use, the justification > is to enable an optimization for the common "one archive case" in > pmlogger_daily. > > commit e0c99b6df2d7695883547165ab834744fbf7ed43 > Author: Ken McDonell > Date: Sun Mar 23 08:47:42 2014 +1100 > > qa/common - report retired tests > > commit 103a75f120d1d1397652f63a96c03077bbd122ba > Author: Ken McDonell > Date: Sun Mar 23 08:46:00 2014 +1100 > > qa/admin/pcp-qa-summary - add special case for host bozo-vm > > commit d8afb153f3ba9a2e2faca4268f5334e466452fe2 > Author: Ken McDonell > Date: Sun Mar 23 08:45:17 2014 +1100 > > qa/admin/pcp-daily - add some more of kenj's QA hosts > > _______________________________________________ > pcp mailing list > pcp@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/pcp > From nscott@redhat.com Tue Mar 25 19:05:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7A1CD29DF7 for ; Tue, 25 Mar 2014 19:05:54 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 714BF304075 for ; Tue, 25 Mar 2014 17:05:54 -0700 (PDT) X-ASG-Debug-ID: 1395792353-04cbb054b8739250001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id vKrzruSfIFIhD1dy for ; Tue, 25 Mar 2014 17:05:53 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2Q05nrA017804; Tue, 25 Mar 2014 20:05:49 -0400 Date: Tue, 25 Mar 2014 20:05:49 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1495312102.446632.1395792349918.JavaMail.zimbra@redhat.com> In-Reply-To: <1966248368.446271.1395792194044.JavaMail.zimbra@redhat.com> References: <5331FF3C.20304@internode.on.net> <1966248368.446271.1395792194044.JavaMail.zimbra@redhat.com> Subject: Re: [pcp] pcp updates - qa and pmlogmv MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates - qa and pmlogmv Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates - qa and pmlogmv Thread-Index: A9gcQe+afz45DY/v4VNZHoqskuQw2pYcRV/q X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395792353 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4247 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > Hi Ken, > > This branch appears to be missing one small detail... src/pmlogmv ;) > Also, if its just a short-and-sweet shell script, src/pmlogger houses several similar scriptlets - perhaps that might be a good home? cheers. -- Nathan From nscott@redhat.com Tue Mar 25 19:50:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CF3FC7F3F for ; Tue, 25 Mar 2014 19:50:18 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id CBBA38F8039 for ; Tue, 25 Mar 2014 17:50:15 -0700 (PDT) X-ASG-Debug-ID: 1395795013-04cbb054b773dfb0001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id eVnMSwjUIdeOdDXu for ; Tue, 25 Mar 2014 17:50:13 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2Q0o40s027007; Tue, 25 Mar 2014 20:50:04 -0400 Date: Tue, 25 Mar 2014 20:50:04 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Dave Brolley Cc: PCP Mailing List Message-ID: <1102981313.459447.1395795004225.JavaMail.zimbra@redhat.com> In-Reply-To: <53319976.10107@redhat.com> References: <53319976.10107@redhat.com> Subject: Re: [pcp] PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 Thread-Index: y5P2PP/oTW/t9qqrZHTcvHq+FDNRpQ== X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395795013 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > On the brolley/dev branch of pcpfans.... > Seems OK to me (I've not observed this race though - different NSS libs/tools version perhaps). That earlier qa/966 looks nicely put together too, just trying it out locally - thanks! cheers. -- Nathan From nscott@redhat.com Tue Mar 25 20:03:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 984327F3F for ; Tue, 25 Mar 2014 20:03:36 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7467830407A for ; Tue, 25 Mar 2014 18:03:33 -0700 (PDT) X-ASG-Debug-ID: 1395795810-04bdf05dab949d70001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 253Hq36wHxP4Tr5y for ; Tue, 25 Mar 2014 18:03:30 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2Q13UP8021524 for ; Tue, 25 Mar 2014 21:03:30 -0400 Date: Tue, 25 Mar 2014 21:03:30 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: PCP Mailing List Message-ID: <1851455664.462267.1395795810613.JavaMail.zimbra@redhat.com> In-Reply-To: <1742294420.462134.1395795743418.JavaMail.zimbra@redhat.com> Subject: pcp updates: merge o'clock MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: merge o'clock Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: merge o'clock Thread-Index: HcwAhcab7yCMsB2nhmpTH429rYvphg== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395795810 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev configure | 53 - configure.in | 50 - man/man1/GNUmakefile | 2 man/man1/pmlogmv.1 | 81 ++ man/man1/pmmgr.1 | 5 man/man3/pmdiscoverservices.3 | 10 man/man5/pcp-archive.5 | 11 qa/738 | 200 +++++++ qa/738.out | 217 +++++++ qa/946 | 14 qa/946.out | 7 qa/966 | 79 ++ qa/966.out | 35 + qa/admin/pcp-daily | 6 qa/admin/pcp-qa-summary | 2 qa/common | 4 qa/common.secure | 1 qa/group | 54 + qa/new | 29 - src/GNUmakefile | 6 src/dbpmda/src/dbpmda.c | 12 src/include/pcp/config.h.in | 10 src/include/pcp/platform_header.h | 675 ------------------------ src/include/pcp/pmda.h | 4 src/libpcp/src/avahi.c | 28 src/libpcp/src/avahi.h | 4 src/libpcp/src/discovery.c | 4 src/libpcp/src/secureserver.c | 6 src/libpcp_pmda/src/exports | 1 src/libpcp_pmda/src/open.c | 51 + src/pmcd/src/pmcd.c | 14 src/pmdas/mailq/.gitignore | 1 src/pmdas/mailq/GNUmakefile | 4 src/pmdas/mailq/mailq.c | 151 ++--- src/pmlogger/GNUmakefile | 11 src/pmlogger/pmlogmv.sh | 181 ++++++ src/pmmgr/config/target-discovery.example-avahi | 2 src/pmmgr/pmmgr.cxx | 4 src/win32ctl/services/pcp-services.c | 1 39 files changed, 1082 insertions(+), 948 deletions(-) commit b0a87cefdf21e9e48b8ce539d9975d197e74eb24 Author: Nathan Scott Date: Wed Mar 26 12:00:56 2014 +1100 Update src makefile for pmlogmv mv commit 27f10b779659cb441f3f4c720ae175ad60c5c2a7 Merge: 9bd05bb 85bb821 Author: Nathan Scott Date: Wed Mar 26 11:57:40 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/kenj/pcp into dev commit 85bb821ad3eba70a6881b99130d705fbdf43636a Author: Ken McDonell Date: Wed Mar 26 11:47:30 2014 +1100 qa/group - hide 824 test 824 is from notready-land and will appear a little later. commit b4391b604cadd089fb2101fc4a948c9c5d2c4695 Author: Ken McDonell Date: Wed Mar 26 11:46:46 2014 +1100 pmlogmv - oops fixup Really check the source in this time. Relocate to src/pmlogger. commit 9bd05bbdbdfbe3893bb272f0f19a552d42cc85c2 Merge: 8f337a7 032da3b Author: Nathan Scott Date: Wed Mar 26 10:59:20 2014 +1100 Merge branch 'brolley/dev' of ../pcpfans into brolley/dev commit 8f337a7e6b5ea3b2ec11a18f5d0ce6c053049a84 Author: Frank Ch. Eigler Date: Thu Mar 20 12:13:34 2014 -0400 man5/pcp-archive.5: make lintian man page parser happy Clarified and reworded a few spots to make lintian happy. Tested with hand-rolled check: cat pcp-archive.5 | man --warnings -E UTF-8 -l -Tutf8 -Z - >/dev/null commit e72ecb0409d20a76f85ff2e8dd3ba5fec75ec781 Author: Frank Ch. Eigler Date: Sun Mar 9 20:34:33 2014 -0400 pmmgr/avahi: demonstrate new timeout param in sample configuration file commit df4fbe74f59ae24b48362a0c36041141ce35fd4d Author: Frank Ch. Eigler Date: Sat Mar 8 21:18:11 2014 -0500 __pmAvahiDiscoverServices: tolerate NULL incoming mechanism (Can't be too eager strstr'ing.) commit 2e9d0fb17ab073c5e1fe6c32d2eeeb93903d3287 Author: Frank Ch. Eigler Date: Sat Mar 8 21:04:30 2014 -0500 __pmAvahiDiscoverServices: support optional ,timeout=NNNN mechanism suffix We need to let clients control how long to search for avahi announcements; the 0.5 second default is just too short at times. The existing environment variable control is undocumented and clumsy (but retained in this revision). commit cd885d149d2feea49efa62cc5fee52b817cc0910 Author: Frank Ch. Eigler Date: Fri Mar 7 20:55:21 2014 -0500 pmmgr: append a space after config-loaded pmie/pmlogger options commit 27b60c158697235f8a2dd8101df8f6e12f843215 Author: Nathan Scott Date: Wed Mar 26 10:42:49 2014 +1100 Convert pmdamailq over to using long options command line API Straight forward conversion as an example. Makes use of the --username option and has decent QA coverage already, so seems a good candidate. Add in a wrapper for the usage message API with PMDA structure variant, otherwise it was a straight forward conversion. commit 6e4431c6b429b678d350529732fa7fa201d25a26 Merge: 0e83e4d fb30a61 Author: Nathan Scott Date: Wed Mar 26 09:27:24 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/kenj/pcp into dev commit 0e83e4d98ef79133ac334dbd1b60e8d97c7d0f3a Author: Nathan Scott Date: Wed Mar 26 09:27:01 2014 +1100 Remove POSIXLY_CORRECT environment variable modifications Remove the last remaining vestiges of forced POSIX arg handling in pmcd and dbpmda. PMDAs now have the option of defining their own destiny, and existing PMDAs using the pmdaGetOpt (now back-compat) interface will find themselves automagically POSIX conformant, without the need for anyone to modify their environment. Remove all traces of configure scripting behind the old getopt.h checks too, nothing is #include'ing that now. commit fb30a61a9fd164fc3ff95cb4fbe6bec0ae69e8e8 Merge: 40aa15e 2ddeae9 Author: Ken McDonell Date: Wed Mar 26 09:17:39 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev commit 40aa15e0c04d41adaf5fe931a0a00530c316d236 Author: Ken McDonell Date: Wed Mar 26 09:05:13 2014 +1100 qa/new - adjustments for new ## convention in groups file In the groups file, lines with prefixed with a single # are comments that are interpreted as one-line descriptions that the new script looks for if the user asks for a list of groups at the end of the creation of a new qa test. Lines with prefixed with ## are also comments, but are ignored for the purpose of finding the one-line descriptions. Block (multi-line) descriptions of a group are the intended use of the (newly introduced) ## prefix. commit d1779bce78e82455c9c7ae29267168ba6ba1e875 Author: Ken McDonell Date: Wed Mar 26 09:01:57 2014 +1100 pmlogmv (new) - atomic move/rename PCP archive files New shell script to atomically move (rename) all the physical files in a PCP archive. Aside from direct use, the justification is to enable an optimization for the common "one archive case" in pmlogger_daily. commit 032da3b67ab4dcb9e4f900b92934188d10b28078 Merge: b9d2adf 2ddeae9 Author: Dave Brolley Date: Tue Mar 25 10:38:51 2014 -0400 Merge remote-tracking branch 'origin/dev' into brolley/dev commit b9d2adfa5ae7cc5d8ef8416bbf804736a40efda5 Author: Dave Brolley Date: Tue Mar 25 10:35:25 2014 -0400 When NSS fails to initialize, pmcd should still start successfully. oss.sgi.com/bugzilla/show_bug.cgi?id=1035 Previoulsy, pmcd would fail to start if NSS failed to start or if a suitable certificate could not be established for secure connections. With this change, pmcd will start under these conditions, but will not accept secure connections. New qa test 966 checks that pmcd starts and accepts non-secure connections. commit 58a2dd93a9b020fbe99a9e1518628925332c0902 Author: Dave Brolley Date: Mon Mar 24 15:42:04 2014 -0400 Fix intermittent failure in nss_setup_certificates. certutil uses the current time, within an accuracy of 1 second, to generate certificate serial numbers. So, wait 1 second between generating the local CA certificate and the PCP collector certificate so that they don't get the same serial number. This fixes intermittent failures of qa tests 712, 713 and 714. commit e0c99b6df2d7695883547165ab834744fbf7ed43 Author: Ken McDonell Date: Sun Mar 23 08:47:42 2014 +1100 qa/common - report retired tests commit 103a75f120d1d1397652f63a96c03077bbd122ba Author: Ken McDonell Date: Sun Mar 23 08:46:00 2014 +1100 qa/admin/pcp-qa-summary - add special case for host bozo-vm commit d8afb153f3ba9a2e2faca4268f5334e466452fe2 Author: Ken McDonell Date: Sun Mar 23 08:45:17 2014 +1100 qa/admin/pcp-daily - add some more of kenj's QA hosts commit 3777215243ff9458fa29a37d37659633cba5ad95 Merge: c615547 d1d3d95 Author: Dave Brolley Date: Wed Mar 19 11:09:42 2014 -0400 Merge remote-tracking branch 'origin/dev' into brolley/dev From nscott@redhat.com Tue Mar 25 21:43:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 33DB87F3F for ; Tue, 25 Mar 2014 21:43:44 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 18C14304081 for ; Tue, 25 Mar 2014 19:43:41 -0700 (PDT) X-ASG-Debug-ID: 1395801816-04cbb054b774ba10001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id LcRFibgEzxW6lUnz for ; Tue, 25 Mar 2014 19:43:36 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2Q2hapI005673; Tue, 25 Mar 2014 22:43:36 -0400 Date: Tue, 25 Mar 2014 22:43:36 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Dave Brolley Cc: PCP Mailing List Message-ID: <878628419.479859.1395801816032.JavaMail.zimbra@redhat.com> In-Reply-To: <1102981313.459447.1395795004225.JavaMail.zimbra@redhat.com> References: <53319976.10107@redhat.com> <1102981313.459447.1395795004225.JavaMail.zimbra@redhat.com> Subject: Re: [pcp] PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 Thread-Index: y5P2PP/oTW/t9qqrZHTcvHq+FDNRpeebht4L X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1395801816 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4249 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Dave, ----- Original Message ----- > ----- Original Message ----- > > On the brolley/dev branch of pcpfans.... > >=20 >=20 > Seems OK to me (I've not observed this race though - different NSS > libs/tools version perhaps). That earlier qa/966 looks nicely put > together too, just trying it out locally - thanks! >=20 One minor issue - the output has dependencies on the version of coreutils installed (also unlikely to work cross-platform, if we ever did secure socket builds somewhere else someday)... diff 966.out 966.out.bad 14,15c14,15 < chmod: cannot access =E2=80=98COLLECTORDB/*=E2=80=99: No such file or dir= ectory < chown: cannot access =E2=80=98COLLECTORDB=E2=80=99: No such file or direc= tory --- > chmod: cannot access `COLLECTORDB/*': No such file or directory > chown: cannot access `COLLECTORDB': No such file or directory This is from common.secure I guess - when nss_setup_certificates is skipped (the withcerts=3Dfalse case). Would ... if $withcerts then nss_setup_certificates $fqdn $host $sudo chmod -R 0644 $collectordb/* $sudo chown -R pcp:pcp $collectordb else echo "Skipping addition of certificates to certdb" fi and remaking 966.out do the trick here? cheers. -- Nathan From fche@redhat.com Tue Mar 25 22:22:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A7F7D7F3F for ; Tue, 25 Mar 2014 22:22:38 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9F61C8F8037 for ; Tue, 25 Mar 2014 20:22:35 -0700 (PDT) X-ASG-Debug-ID: 1395804154-04cbb054b8750950001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id keO9XRYAn1jC7JZK for ; Tue, 25 Mar 2014 20:22:34 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2Q3MT0V018982 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Mar 2014 23:22:29 -0400 Received: from fche.csb (vpn-59-64.rdu2.redhat.com [10.10.59.64]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2Q3MSOF014659; Tue, 25 Mar 2014 23:22:28 -0400 Received: by fche.csb (Postfix, from userid 2569) id 2ACE158190; Tue, 25 Mar 2014 23:22:28 -0400 (EDT) To: Ken McDonell Cc: pcp@oss.sgi.com Subject: Re: pcp updates - qa and pmlogmv References: <5331FF3C.20304@internode.on.net> X-ASG-Orig-Subj: Re: pcp updates - qa and pmlogmv From: fche@redhat.com (Frank Ch. Eigler) Date: Tue, 25 Mar 2014 23:22:28 -0400 In-Reply-To: <5331FF3C.20304@internode.on.net> (Ken McDonell's message of "Wed, 26 Mar 2014 09:12:12 +1100") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395804154 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 kenj wrote: > pmlogmv is new -- deals with an itch, solves a production problem I > had yesterday, and is needed for one of the agreed pmlogger_daily > changes that is on my plate. [...] Sounds interesting & piqued my interest after the multithreading matters the other day. > commit d1779bce78e82455c9c7ae29267168ba6ba1e875 > Author: Ken McDonell > Date: Wed Mar 26 09:01:57 2014 +1100 > > pmlogmv (new) - atomic move/rename PCP archive files > > New shell script to atomically move (rename) all the physical > files in a PCP archive. Aside from direct use, the justification > is to enable an optimization for the common "one archive case" in > pmlogger_daily. Could you elaborate what kind of atomicity this is intended to guarantee? The man page says: Because PCP archives are important records of system activity, special care is taken to ensure the integrity of an archive's files. Should any problem be encountered during the execution of pmlogmv, all the files associated with oldname will be preserved, and no new files with the newname prefix will be created. In the event of a system crash, at least one of oldname or newname will be preserved. One might reword the last and second-last sentences to indicate that a system crash is not an example of "any problem", so weaker guarantees apply. Looking at the script itself, it's not clear it can deliver even the first guarantee as is. Maybe the most clear-cut problem is in the unlink stage at the end, wherein stat(1) Links:-count is used to validate the state for each input file. But it appears subject to the common TOCTTOU vulnerability: a race between the time link-counts are checked and the results used. If multiple pmlogmv scripts run concurrently with the same inputs, the results are indeterminate. Another scenario is if a detected error occurs during the unlink loop, it appears possible for some files to disappear: say the first two files from $tmp.old were successfully handled (including the unlink of the $old name), but then a failure occurred for the third. At this point, _cleanup nukes all the $tmp.new files, leaving no trace of the first two at all. You might need to track a more accurate transaction-log or undo-log type data, not just a $tmp.old / $tmp.new lists to correct this part. (There might be other problems, these are just two that jumped out.) - FChE From brolley@redhat.com Wed Mar 26 10:14:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 514537F3F for ; Wed, 26 Mar 2014 10:14:45 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0C7C68F8035 for ; Wed, 26 Mar 2014 08:14:45 -0700 (PDT) X-ASG-Debug-ID: 1395846880-04bdf05daa99a5c0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id yV25qLwF57LWNdRE for ; Wed, 26 Mar 2014 08:14:41 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2QFEdXA020760 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 26 Mar 2014 11:14:40 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2QFEcEq030342; Wed, 26 Mar 2014 11:14:39 -0400 Message-ID: <5332EF24.8030704@redhat.com> Date: Wed, 26 Mar 2014 11:15:48 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Nathan Scott CC: PCP Mailing List Subject: Re: [pcp] PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 References: <53319976.10107@redhat.com> <1102981313.459447.1395795004225.JavaMail.zimbra@redhat.com> <878628419.479859.1395801816032.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] PCP Updates: Fix Intermittent Failure of qa tests 712, 713, 714 In-Reply-To: <878628419.479859.1395801816032.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395846881 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 03/25/2014 10:43 PM, Nathan Scott wrote: > One minor issue - the output has dependencies on the version of > coreutils installed (also unlikely to work cross-platform, if we > ever did secure socket builds somewhere else someday)... [ ... ] > Would ... > > if $withcerts > then > nss_setup_certificates $fqdn $host > $sudo chmod -R 0644 $collectordb/* > $sudo chown -R pcp:pcp $collectordb > else > echo "Skipping addition of certificates to certdb" > fi > > and remaking 966.out do the trick here? > The problem is that test 712 depends on the existence of an empty $collectordb with the correct permissions when 'false' is passed in for $withcerts. On the other hand, for the new test 966, I wanted the directory to not exist at all, so that NSS would fail to start. I got a little tricky and passed in the name of a function that removes $collectordb and returns with a failing exit code. I guess the alternative would be to define several exit codes for $withcerts (e.g. 1: leave empty $collectordb, 2: leave no $collectordb). Alternatively, this also solves the problem: $withcerts && nss_setup_certificates $fqdn $host if [ -d $collectordb ] then $sudo chmod -R 0644 $collectordb/* $sudo chown -R pcp:pcp $collectordb fi Dave From brolley@redhat.com Wed Mar 26 10:22:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 088A77F3F for ; Wed, 26 Mar 2014 10:22:15 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B91198F8033 for ; Wed, 26 Mar 2014 08:22:15 -0700 (PDT) X-ASG-Debug-ID: 1395847334-04bdf05daa99af40001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id rcYGHcADGJMkmNqo for ; Wed, 26 Mar 2014 08:22:14 -0700 (PDT) X-Barracuda-Envelope-From: brolley@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2QFMDXx011478 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 26 Mar 2014 11:22:14 -0400 Received: from [10.15.16.134] (dhcp-10-15-16-134.yyz.redhat.com [10.15.16.134]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2QFMCxI031986 for ; Wed, 26 Mar 2014 11:22:13 -0400 Message-ID: <5332F0EA.4010803@redhat.com> Date: Wed, 26 Mar 2014 11:23:22 -0400 From: Dave Brolley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: PCP Mailing List Subject: Re: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize References: <53319A17.6060608@redhat.com> X-ASG-Orig-Subj: Re: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395847334 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 03/25/2014 12:45 PM, Frank Ch. Eigler wrote: > Dave Brolley writes: > >> commit b9d2adfa5ae7cc5d8ef8416bbf804736a40efda5 >> Author: Dave Brolley >> Date: Tue Mar 25 10:35:25 2014 -0400 >> >> When NSS fails to initialize, pmcd should still start successfully. >> [...] > Have you considered doing this at the pmcd/pmproxy.c level instead, so > that a bad rc from __pmSecureServerSetup is sent but tolerated > (instead of triggering DontStart())? That way, the > __pmSecureServerSetup function doesn't lie about its success, which in > turn would later let us extend pmcd with a $PCP_SECURE_SOCKETS-like > option to *require* ssl? > > Frank and I talked a bit more about this and he correctly noted that, with this change, __pmSecureServerSetup() no longer contains a code path which returns anything other than 0. He has suggested changing it to return 'void'. I believe that it is possible that someday, such an error path could once again exist (e.g. if we were to implement Frank's example of having a pmcd/pmproxy mode for which secure connections are required). In that case we would be removing the return code only to add it again later. Even though this is currently only used by pmcd and pmproxy, I think we should think twice about changing the API if we think it could change back in the future. Thoughts? Dave From fche@redhat.com Wed Mar 26 12:54:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8FD157F3F for ; Wed, 26 Mar 2014 12:54:54 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 25F44AC003 for ; Wed, 26 Mar 2014 10:54:50 -0700 (PDT) X-ASG-Debug-ID: 1395856485-04cbb054b97a6270001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id NHV58xG6V44cFQlN for ; Wed, 26 Mar 2014 10:54:46 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2QHsiSO003387 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 26 Mar 2014 13:54:45 -0400 Received: from fche.csb (vpn-59-64.rdu2.redhat.com [10.10.59.64]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2QHsixl031538; Wed, 26 Mar 2014 13:54:44 -0400 Received: by fche.csb (Postfix, from userid 2569) id 38E8D58165; Wed, 26 Mar 2014 13:54:43 -0400 (EDT) To: Dave Brolley Cc: PCP Mailing List Subject: Re: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize References: <53319A17.6060608@redhat.com> <5332F0EA.4010803@redhat.com> X-ASG-Orig-Subj: Re: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize From: fche@redhat.com (Frank Ch. Eigler) Date: Wed, 26 Mar 2014 13:54:43 -0400 In-Reply-To: <5332F0EA.4010803@redhat.com> (Dave Brolley's message of "Wed, 26 Mar 2014 11:23:22 -0400") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395856486 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Dave Brolley writes: > [...] > Frank and I talked a bit more about this and he correctly noted that, > with this change, __pmSecureServerSetup() no longer contains a code > path which returns anything other than 0. He has suggested changing it > to return 'void'. My preferred solution is still having __pmSecureServerSetup report its own actual success/failure, and let the caller decide what to do then. Then the payload part of commit b9d2adfa5ae7c would have consisted of only: --- a/src/pmcd/src/pmcd.c +++ b/src/pmcd/src/pmcd.c @@ -948,8 +948,7 @@ main(int argc, char *argv[]) DontStart(); } - if (__pmSecureServerSetup(certdb, dbpassfile) < 0) - DontStart(); + (void) __pmSecureServerSetup(certdb, dbpassfile); /* ignore failure */ PrintAgentInfo(stderr); __pmAccDumpLists(stderr); > I believe that it is possible that someday, such an error path could > once again exist (e.g. if we were to implement Frank's example of > having a pmcd/pmproxy mode for which secure connections are > required). In that case we would be removing the return code only to > add it again later. [...] At that future time, this single check wouldn't be enough anyway: we'd probably have to do some checks at connection-establishment time too. A SSL_SecurityStatus() inquiry after a connection could probably subsume setup-time checks. - FChE From nscott@redhat.com Wed Mar 26 14:00:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2E3367F3F for ; Wed, 26 Mar 2014 14:00:45 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1450A304070 for ; Wed, 26 Mar 2014 12:00:41 -0700 (PDT) X-ASG-Debug-ID: 1395860436-04cb6c567898b2a0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id ODSnCsaX4ASyxC9S for ; Wed, 26 Mar 2014 12:00:36 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2QJ0QTQ004589; Wed, 26 Mar 2014 15:00:26 -0400 Date: Wed, 26 Mar 2014 15:00:26 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Dave Brolley Cc: PCP Mailing List Message-ID: <1789077435.1721747.1395860426224.JavaMail.zimbra@redhat.com> In-Reply-To: <5332F0EA.4010803@redhat.com> References: <53319A17.6060608@redhat.com> <5332F0EA.4010803@redhat.com> Subject: Re: [pcp] PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: PCP Updates: Fix Bug #1035: PMCD Should Not Fail to Start if NSS Fails to Initialize Thread-Index: KZjf9nUgO6QCdjrzdsq8cwqU9YsAgw== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395860436 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4275 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain Hi Dave, ----- Original Message ----- > [...] > Frank and I talked a bit more about this and he correctly noted that, > with this change, __pmSecureServerSetup() no longer contains a code path > which returns anything other than 0. He has suggested changing it to > return 'void'. I believe that it is possible that someday, such an error > path could once again exist (e.g. if we were to implement Frank's > example of having a pmcd/pmproxy mode for which secure connections are > required). In that case we would be removing the return code only to add > it again later. Even though this is currently only used by pmcd and > pmproxy, I think we should think twice about changing the API if we > think it could change back in the future. > > Thoughts? I tend to agree with you Dave - lets leave it as is please. There's no harm in always returning zero at this stage, and the option remains there when we need it down the track (needed it in the past, will probably need it again someday - it could easily have to malloc something at some point then we'd need to handle the error return again I guess). cheers. -- Nathan From kenj@internode.on.net Wed Mar 26 22:46:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1C7D77F3F for ; Wed, 26 Mar 2014 22:46:50 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id BCD2FAC003 for ; Wed, 26 Mar 2014 20:46:49 -0700 (PDT) X-ASG-Debug-ID: 1395892004-04bdf05dac9cc930001-S8gJnT Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 9rttV50vqQ8M8bTY for ; Wed, 26 Mar 2014 20:46:44 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtV5ABWeM1N20QBDPGdsb2JhbABZgwaDSoUNuzkDAoEaFwMBAQEBODWCJQEBAQMBCAIeEhweBQUHAQMCBgMVASkHGSAKAxECBBMLBYdhB9EWF45xB4Q4BI8+nwQpgS4k Received: from ppp118-209-0-67.lns20.mel4.internode.on.net (HELO bozohorize) ([118.209.0.67]) by ipmail06.adl2.internode.on.net with ESMTP; 27 Mar 2014 14:16:42 +1030 From: "Ken McDonell" To: "'Frank Ch. Eigler'" Cc: References: <5331FF3C.20304@internode.on.net> In-Reply-To: Subject: RE: pcp updates - qa and pmlogmv Date: Thu, 27 Mar 2014 14:46:39 +1100 X-ASG-Orig-Subj: RE: pcp updates - qa and pmlogmv Message-ID: <001701cf496f$2a6f52d0$7f4df870$@internode.on.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 15.0 Thread-Index: AQJ5EVEfTMZP8uquxkUFyWPtek2heAJWw0rgmY4A2kA= Content-Language: en-au X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1395892004 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.01 X-Barracuda-Spam-Status: No, SCORE=0.01 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, THREAD_INDEX X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4291 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header > -----Original Message----- > From: Frank Ch. Eigler [mailto:fche@redhat.com] > Sent: Wednesday, 26 March 2014 2:22 PM > ... > Could you elaborate what kind of atomicity this is intended to guarantee? > The man page says: > > Because PCP archives are important records of system activity, special > care is taken to ensure the integrity of an archive's files. Should > any problem be encountered during the execution of pmlogmv, all the > files associated with oldname will be preserved, and no new files with > the newname prefix will be created. In the event of a system crash, at > least one of oldname or newname will be preserved. > > One might reword the last and second-last sentences to indicate that a > system crash is not an example of "any problem", so weaker guarantees > apply. OK, I was most interested in "failures" of the form ... cannot create link, cannot rm and SIGINT. For system crashes, I'll reword to be less assertive ... if the buffer cache is flushed on the way down, then the intent was that either the new or the old archive would survive (there is a very remote chance that both would survive). I cannot guarantee a file system with snapshorts or multi-operation transactions, so here, like everywhere else we're exposes to file system semantics. My goal was to ensure we did not clobber or delete parts of the archive in the process of renaming, provided the system is still running at the end of pmlogmv. > Looking at the script itself, it's not clear it can deliver even the first guarantee > as is. Maybe the most clear-cut problem is in the unlink stage at the end, > wherein stat(1) Links:-count is used to validate the state for each input file. > But it appears subject to the common TOCTTOU vulnerability: a race > between the time link-counts are checked and the results used. If multiple > pmlogmv scripts run concurrently with the same inputs, the results are > indeterminate. I want to be pragmatic here. The most common use case will be for pmlogger-daily where there is already a directory-level lock to prevent bad concurrency from the pmlogger-check and pmlogger-daily scripts. So I don't think anything special is needed for this case. For interactive ad hoc use, the risk is no different to multiple users/processes executing rm and mv at the same time ... I think this is a case of don't point loaded weapons are your feet, not a case for genetic engineering to remove feet from humans. > Another scenario is if a detected error occurs during the unlink loop, it > appears possible for some files to disappear: say the first two files from > $tmp.old were successfully handled (including the unlink of the $old name), > but then a failure occurred for the third. At this point, _cleanup nukes all the > $tmp.new files, leaving no trace of the first two at all. You might need to > track a more accurate transaction-log or undo-log type data, not just a > $tmp.old / $tmp.new lists to correct this part. OK, this is indeed a design/implementation bug. In an earlier version I used $tmp.old as the driver and reversed the links if the old file did not exist, then cleaned up the $tmp.new files if they existed. In an overly aggressive optimization I removed the first part and did not have qa coverage for the case you described (or did not notice that the result had changed and was wrong). I'll fix this. > (There might be other problems, these are just two that jumped out.) Code reviews and feedback are always welcome, thanks. From nscott@redhat.com Thu Mar 27 00:07:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E557D7F3F for ; Thu, 27 Mar 2014 00:07:39 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B74318F8033 for ; Wed, 26 Mar 2014 22:07:36 -0700 (PDT) X-ASG-Debug-ID: 1395896853-04bdf076f06fab20001-S8gJnT Received: from mx3-phx2.redhat.com (mx5-phx2.redhat.com [209.132.183.37]) by cuda.sgi.com with ESMTP id S8G0qXzTT5JTaMUg for ; Wed, 26 Mar 2014 22:07:34 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.37 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2R57XYX002434 for ; Thu, 27 Mar 2014 01:07:33 -0400 Date: Thu, 27 Mar 2014 01:07:33 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <958400261.2302650.1395896853587.JavaMail.zimbra@redhat.com> Subject: pcp updates: build packaging MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: build packaging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: build packaging Thread-Index: gLuu43IIHsdET41Os1aWjQ7xTgb7Gg== X-Barracuda-Connect: mx5-phx2.redhat.com[209.132.183.37] X-Barracuda-Start-Time: 1395896854 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4293 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev .gitignore | 4 GNUmakefile | 8 Makepkgs | 460 +++++++++++++++++++++++++--------------- build/.gitignore | 1 build/GNUmakefile | 56 ---- build/rpm/macros.template | 2 configure | 16 - configure.in | 23 -- debian/libpcp-pmda3-dev.install | 1 src/pmdas/mmv/.gititgnore | 1 10 files changed, 310 insertions(+), 262 deletions(-) commit d8ee9168d77a47725852c7e9ad5ec656cf024baf Author: Nathan Scott Date: Thu Mar 27 12:56:44 2014 +1100 Remove use of "local" in Makepkgs, fails on Solaris with ksh commit 56dedf8edad4055ec8a9d273b8487595ee80824c Author: Nathan Scott Date: Thu Mar 27 12:53:13 2014 +1100 Add missing man page reference into deb packaging commit 59154c3aa776e0fad8fcf5c2933ad66065f09cfc Author: Nathan Scott Date: Thu Mar 27 10:24:21 2014 +1100 Rework the source tarball generation to use git tools Previously, we generated the source tarball from macros in the various makefiles. Now, we generate the source tarball beforehand based on the (active) contents of the repository as git sees it. This means we no longer need to worry about whether or not new files are in the source tarball, and also means we can rework the local-git-rpm-build (so not Fedora/EPEL/RHEL) to not perform the entire build twice. We must still run the configure phase twice (for rpm and deb packaging) so spec and debian/control files are generated, but that is where the doubling-up ends. From nscott@redhat.com Thu Mar 27 00:14:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B66FA7F3F for ; Thu, 27 Mar 2014 00:14:19 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id A10C68F8033 for ; Wed, 26 Mar 2014 22:14:19 -0700 (PDT) X-ASG-Debug-ID: 1395897258-04cb6c56779b5310001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id MyKoSYfLn56EkCix for ; Wed, 26 Mar 2014 22:14:18 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2R5E95G013869; Thu, 27 Mar 2014 01:14:10 -0400 Date: Thu, 27 Mar 2014 01:14:09 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1676674258.2309467.1395897249956.JavaMail.zimbra@redhat.com> In-Reply-To: <958400261.2302650.1395896853587.JavaMail.zimbra@redhat.com> References: <958400261.2302650.1395896853587.JavaMail.zimbra@redhat.com> Subject: Re: [pcp] pcp updates: build packaging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates: build packaging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: build packaging Thread-Index: gLuu43IIHsdET41Os1aWjQ7xTgb7GudptGKU X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395897258 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4293 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Ken, Just a heads up - this commit involved fairly deep surgery to Makepkgs, in order to move to generating the source tar file via git instead of make. In particular, that problem where the Debian build needs debian/control came back (the chicken-and-egg situation there); there simply has to be a debian/control file in the final source. So, we do both a generation step and a default-build-for-the-buildd network kind of setup, with Makepkgs taking on the more difficult case of running configure before dpkg-buildpackage. I've tested rpm, deb and solaris packaging. Mac should be fine, as nothing Mac-specific changed, but I'll check that too soon also. I expect it to work on all the QA farm hosts, its working on all the boxes I've tried so far - just lemme know if not, it will probably be something I can easily pinpoint - after so much time in the rats nest today! :) cheers. -- Nathan From kenj@internode.on.net Thu Mar 27 03:59:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 830037F3F for ; Thu, 27 Mar 2014 03:59:51 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 64983304070 for ; Thu, 27 Mar 2014 01:59:48 -0700 (PDT) X-ASG-Debug-ID: 1395910782-04cb6c56769c67a0001-S8gJnT Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id GTm7mC3X5qhTdOGf for ; Thu, 27 Mar 2014 01:59:42 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApMBAJfnM1N20adJ/2dsb2JhbAANTINBxGeEGDANFhgDAgECAVgGAgEBtRSjUBePEIQiBJoAlEM Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Mar 2014 19:29:41 +1030 Message-ID: <5333E8B1.1020208@internode.on.net> Date: Thu, 27 Mar 2014 20:00:33 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - pmlogmv Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates - pmlogmv Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1395910782 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4298 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev man/man1/pmlogmv.1 | 13 ++++-------- qa/738 | 16 +++++++++++++-- qa/738.out | 51 +++++++++++++++++++++++++++++++++++++++++------- src/GNUmakefile | 2 - src/pmlogger/pmlogmv.sh | 50 ++++++++++++++++++++++++++++++++++++----------- 5 files changed, 103 insertions(+), 29 deletions(-) commit c541ce4a53abc238b3f29aa22355c9b7c64b4a9d Author: Ken McDonell Date: Thu Mar 27 19:59:25 2014 +1100 pmlogmv - one last fixup from moving the source around commit e268df1b61cac7b528c3ecc86eea7cb1ce84d85d Author: Ken McDonell Date: Thu Mar 27 19:38:05 2014 +1100 pmlogmv - fix for cleanup problem Frank identified Recover files from newname.* if needs be. commit 12954d6b52e14b5a7864efae21e518a0d496a89f Author: Ken McDonell Date: Thu Mar 27 18:24:57 2014 +1100 pmlogmv - man page updates Tone down the rhetoric .. no reference to system crash, no reference to atomic, and explain the circumstances under which recovery can be achieved. From nscott@redhat.com Thu Mar 27 05:07:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 99D787F3F for ; Thu, 27 Mar 2014 05:07:58 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7EFF9304070 for ; Thu, 27 Mar 2014 03:07:55 -0700 (PDT) X-ASG-Debug-ID: 1395914870-04cbb054b77ebf20001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id sOWEIJ0sPO3xzH2K for ; Thu, 27 Mar 2014 03:07:50 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2RA7lke032455; Thu, 27 Mar 2014 06:07:47 -0400 Date: Thu, 27 Mar 2014 06:07:47 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1475108664.2474156.1395914867126.JavaMail.zimbra@redhat.com> In-Reply-To: <5333E8B1.1020208@internode.on.net> References: <5333E8B1.1020208@internode.on.net> Subject: Re: [pcp] pcp updates - pmlogmv MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates - pmlogmv Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates - pmlogmv Thread-Index: kP3hp/qqxMaNdffLFoxE6JOCuyolag== X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395914870 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4300 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > Changes committed to git://oss.sgi.com/kenj/pcp.git dev > > man/man1/pmlogmv.1 | 13 ++++-------- > qa/738 | 16 +++++++++++++-- > qa/738.out | 51 > +++++++++++++++++++++++++++++++++++++++++------- > src/GNUmakefile | 2 - > src/pmlogger/pmlogmv.sh | 50 > ++++++++++++++++++++++++++++++++++++----------- > 5 files changed, 103 insertions(+), 29 deletions(-) > > commit c541ce4a53abc238b3f29aa22355c9b7c64b4a9d > Author: Ken McDonell > Date: Thu Mar 27 19:59:25 2014 +1100 > > pmlogmv - one last fixup from moving the source around > BTW, doesn't this seem more like a PCP_BINADM_DIR utility than a PCP_BIN_DIR one ... ? Probably noone will ever need to run it "by hand" from the command line, which is the litmus test I have tended to go by in the past. cheers. -- Nathan From nscott@redhat.com Thu Mar 27 05:11:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4BB537F3F for ; Thu, 27 Mar 2014 05:11:47 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id D72D4AC003 for ; Thu, 27 Mar 2014 03:11:43 -0700 (PDT) X-ASG-Debug-ID: 1395915102-04cbb054b77ec240001-S8gJnT Received: from mx3-phx2.redhat.com (mx5-phx2.redhat.com [209.132.183.37]) by cuda.sgi.com with ESMTP id yNv2sr9aD08IzxnH for ; Thu, 27 Mar 2014 03:11:42 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.37 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2RABf7R002485 for ; Thu, 27 Mar 2014 06:11:42 -0400 Date: Thu, 27 Mar 2014 06:11:41 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <498301325.2475606.1395915101962.JavaMail.zimbra@redhat.com> Subject: pcp updates: brolley+kenj merges, build MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: brolley+kenj merges, build Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: brolley+kenj merges, build Thread-Index: f3egHzmVQO+nWarc1QxYq3fG1VNZhw== X-Barracuda-Connect: mx5-phx2.redhat.com[209.132.183.37] X-Barracuda-Start-Time: 1395915102 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4300 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev debian/rules | 1 man/man1/pmlogmv.1 | 13 +++------ qa/738 | 16 ++++++++++-- qa/738.out | 51 +++++++++++++++++++++++++++++++++----- qa/966.out | 2 - qa/common.secure | 7 +++-- src/GNUmakefile | 2 - src/libpcp/src/util.c | 64 ++++++++++++++++++++++++++++++++++++------------ src/pmlogger/pmlogmv.sh | 50 +++++++++++++++++++++++++++++-------- 9 files changed, 157 insertions(+), 49 deletions(-) commit b1e1a0e3240be2547cde307fd0f83d84fb630aff Author: Nathan Scott Date: Thu Mar 27 21:10:17 2014 +1100 Remove a now-redundant build step in deb packaging process commit 4ea5e3260c646e57fcb726d18bfd7b2282d578e8 Merge: c541ce4 011a7dc Author: Ken McDonell Date: Thu Mar 27 20:01:06 2014 +1100 Merge branch 'dev' of git://oss.sgi.com/pcp/pcp into dev commit c541ce4a53abc238b3f29aa22355c9b7c64b4a9d Author: Ken McDonell Date: Thu Mar 27 19:59:25 2014 +1100 pmlogmv - one last fixup from moving the source around commit e268df1b61cac7b528c3ecc86eea7cb1ce84d85d Author: Ken McDonell Date: Thu Mar 27 19:38:05 2014 +1100 pmlogmv - fix for cleanup problem Frank identified Recover files from newname.* if needs be. commit 12954d6b52e14b5a7864efae21e518a0d496a89f Author: Ken McDonell Date: Thu Mar 27 18:24:57 2014 +1100 pmlogmv - man page updates Tone down the rhetoric .. no reference to system crash, no reference to atomic, and explain the circumstances under which recovery can be achieved. commit 011a7dc260f87e0d1532b46c4efb4b81ef778aa4 Merge: d8ee916 6bf2663 Author: Nathan Scott Date: Thu Mar 27 17:04:10 2014 +1100 Merge branch 'brolley/dev' of ../pcpfans into dev commit 6bf2663dccf9c4826d25643abd801fae16c46168 Merge: cc69522 b0a87ce Author: Dave Brolley Date: Wed Mar 26 16:28:00 2014 -0400 Merge remote-tracking branch 'origin/dev' into brolley/dev commit cc69522a0855e528215d05dbc7cf7ef1be175024 Author: Dave Brolley Date: Wed Mar 26 16:24:03 2014 -0400 Use libpcp socket APIs instead of inet-specific APIs Use __pmGetAddrInfo() and __pmSockAddrToString() instead of gethostbyname() and inet_ntoa() in src/libpcp/src/util.c. commit 33639e1aa1758fa572eaf1591246b809cdf4c4ae Author: Dave Brolley Date: Wed Mar 26 16:21:00 2014 -0400 nss_setup_collector: $collectordb errors. Test for the existence of $collectordb before using it. This eliminates errors which may be platform-specific. From fche@redhat.com Thu Mar 27 06:01:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8142229DF7 for ; Thu, 27 Mar 2014 06:01:10 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 741EA304066 for ; Thu, 27 Mar 2014 04:01:07 -0700 (PDT) X-ASG-Debug-ID: 1395918063-04cb6c56769d15a0001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id U6H29AyVZc8r85X8 for ; Thu, 27 Mar 2014 04:01:03 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2RB0vFL023449 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Mar 2014 07:00:58 -0400 Received: from fche.csb (vpn-59-222.rdu2.redhat.com [10.10.59.222]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2RB0vmF031405; Thu, 27 Mar 2014 07:00:57 -0400 Received: by fche.csb (Postfix, from userid 2569) id AC0315852D; Thu, 27 Mar 2014 07:00:56 -0400 (EDT) Date: Thu, 27 Mar 2014 07:00:56 -0400 From: "Frank Ch. Eigler" To: Ken McDonell Cc: pcp@oss.sgi.com Subject: Re: pcp updates - qa and pmlogmv Message-ID: <20140327110056.GO11440@redhat.com> X-ASG-Orig-Subj: Re: pcp updates - qa and pmlogmv References: <5331FF3C.20304@internode.on.net> <001701cf496f$2a6f52d0$7f4df870$@internode.on.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <001701cf496f$2a6f52d0$7f4df870$@internode.on.net> User-Agent: Mutt/1.4.2.2i X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395918063 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi, Ken - > [...] My goal was to ensure we did not clobber or delete parts of > the archive in the process of renaming, provided the system is still > running at the end of pmlogmv. > [...] The most common use case will be for pmlogger-daily where > there is already a directory-level lock to prevent bad concurrency > from the pmlogger-check and pmlogger-daily scripts. So I don't > think anything special is needed for this case. If locking is already coming from another context, then perhaps you just need to dress up a few plain calls /bin/cp and/or /bin/mv into pmlogmv. Perhaps it need only be a subroutine within the pmlogger* shell scripts. > For interactive ad hoc use, the risk is no different to multiple > users/processes executing rm and mv at the same time ... I think > this is a case of don't point loaded weapons are your feet [...] That's fine, but use of words like "atomic" can be misinterpreted as the term of art, as if we were advertising a safe blue training gun but delivered a real thing. Maybe replace the word throughout with "as a group"? - FChE From tyearke@buffalo.edu Thu Mar 27 08:15:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CC8F129DF7 for ; Thu, 27 Mar 2014 08:15:00 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6BBB6AC003 for ; Thu, 27 Mar 2014 06:14:57 -0700 (PDT) X-ASG-Debug-ID: 1395926091-04bdf05dac9fa150001-S8gJnT Received: from mtareserve1.acsu.buffalo.edu (mtareserve4.acsu.buffalo.edu [128.205.7.164]) by cuda.sgi.com with ESMTP id b1Ss4wJJDop7OCAS for ; Thu, 27 Mar 2014 06:14:52 -0700 (PDT) X-Barracuda-Envelope-From: tyearke@buffalo.edu X-Barracuda-Apparent-Source-IP: 128.205.7.164 Received: from localmailD.acsu.buffalo.edu (localmaild.acsu.buffalo.edu [128.205.5.208]) by mtareserve1.acsu.buffalo.edu (Postfix) with ESMTP id 71C141E37 for ; Thu, 27 Mar 2014 09:14:51 -0400 (EDT) Received: from localmailD.acsu.buffalo.edu (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id 6C4F213AFD for ; Thu, 27 Mar 2014 09:14:51 -0400 (EDT) Received: from localmailD.acsu.buffalo.edu (localhost [127.0.0.1]) by localmailD.acsu.buffalo.edu (Postfix) with ESMTP id 91CCC13AE3 for ; Thu, 27 Mar 2014 09:14:50 -0400 (EDT) Received: from smtp.buffalo.edu (smtp2.acsu.buffalo.edu [128.205.5.254]) by localmailD.acsu.buffalo.edu (Prefixe) with ESMTP id 7044713ADF for ; Thu, 27 Mar 2014 09:14:50 -0400 (EDT) Received: from everly.ccr.buffalo.edu (everly.ccr.buffalo.edu [128.205.40.21]) (Authenticated sender: tyearke@buffalo.edu) by smtp.buffalo.edu (Postfix) with ESMTPSA id 652CE91ED for ; Thu, 27 Mar 2014 09:14:50 -0400 (EDT) Message-ID: <53342449.7070602@buffalo.edu> Date: Thu, 27 Mar 2014 09:14:49 -0400 From: Tom Yearke User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: Patch for Python's pmExtractValue Function Content-Type: multipart/mixed; boundary="------------010309040905050703050302" X-ASG-Orig-Subj: Patch for Python's pmExtractValue Function X-PM-EL-Spam-Prob: : 8% X-Barracuda-Connect: mtareserve4.acsu.buffalo.edu[128.205.7.164] X-Barracuda-Start-Time: 1395926091 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4304 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. --------------010309040905050703050302 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi all, In developing some scripts using the Python bindings for PCP, I discovered the scripts were leaking memory whenever they extracted string values from pmResult objects. As the man page for pmExtractValue states, the user is responsible for freeing strings returned by the function, but freeing memory was not something I expected to do in Python beyond pmResult objects, which have an explicit function for doing so. This was a simple enough fix to make on the script side, but I'd like to suggest that the issue be taken care of on the API side to prevent other developers from making the same mistake. Part of my confusion stemmed from the fact that many Python functions return either Python objects or C objects allocated in Python code, both of which are subject to Python's memory management scheme. In the case of pmExtractValue, while the returned pmAtomValue objects are allocated in the Python function, any strings returned inside those objects are allocated in the C function. This means that the former are deallocated automatically when there are no more Python references to them, while the latter will stay in memory until manually freed. I've attached a patch based on 3.9.1 for one possible approach to the problem, which involves performing an additional step in the Python pmExtractValue function after the C function returns. A string returned by the C function will be copied into Python memory and freed from C memory before the Python function returns. This will allow both the returned pmAtomValue object and its string to be automatically freed when there are no more Python references. Thanks for your consideration! Hope this helps! Tom Yearke --------------010309040905050703050302 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="patch.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch.diff" RnJvbSA5ZDE0Y2M0MjM0ZTEwMGJhMTQ2MDZkMzA5NzU1MDg5MzRmMDY5MjU1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gWWVhcmtlIDx0eWVhcmtlQGJ1ZmZhbG8uZWR1 PgpEYXRlOiBXZWQsIDI2IE1hciAyMDE0IDE1OjQ0OjI2IC0wNDAwClN1YmplY3Q6IFtQQVRD SF0gcHl0aG9uL3BtYXBpIC0gc2ltcGxpZnkgbWVtb3J5IG1hbmFnZW1lbnQgZm9yIHVzZXJz IGluCiBwbUV4dHJhY3RWYWx1ZQoKLS0tCiBzcmMvcHl0aG9uL3BjcC9wbWFwaS5weSB8IDYg KysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEv c3JjL3B5dGhvbi9wY3AvcG1hcGkucHkgYi9zcmMvcHl0aG9uL3BjcC9wbWFwaS5weQppbmRl eCBmZDY3YTllLi4xOGQxMzZlIDEwMDY0NAotLS0gYS9zcmMvcHl0aG9uL3BjcC9wbWFwaS5w eQorKysgYi9zcmMvcHl0aG9uL3BjcC9wbWFwaS5weQpAQCAtMTMzMyw2ICsxMzMzLDEyIEBA IGNsYXNzIHBtQ29udGV4dChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ5cmVmKG91dEF0b20pLCBvdXR0eXBlKQogICAgICAgICBpZiBzdGF0 dXMgPCAwOgogICAgICAgICAgICAgcmFpc2UgcG1FcnIsIHN0YXR1cworICAgICAgICAjIElm IHZhbHVlIHdhcyBhbGxvY2F0ZWQgaW4gQyBtZW1vcnksIGNvcHkgdG8gUHl0aG9uIG1lbW9y eSBhbmQgZnJlZSBDLgorICAgICAgICBpZiBvdXR0eXBlID09IGNfYXBpLlBNX1RZUEVfU1RS SU5HOgorICAgICAgICAgICAgY19jaGFyX3BvaW50ZXJfYWRkcmVzcyA9IG91dEF0b20udnAK KyAgICAgICAgICAgIHB5dGhvbl9jaGFyX2FycmF5ID0gY3JlYXRlX3N0cmluZ19idWZmZXIo b3V0QXRvbS5jcCkKKyAgICAgICAgICAgIG91dEF0b20uY3AgPSBjYXN0KHB5dGhvbl9jaGFy X2FycmF5LCBjX2NoYXJfcCkKKyAgICAgICAgICAgIExJQkMuZnJlZShjX2NoYXJfcG9pbnRl cl9hZGRyZXNzKQogICAgICAgICByZXR1cm4gb3V0QXRvbQogCiAgICAgQHN0YXRpY21ldGhv ZAotLSAKMS44LjQuMgoK --------------010309040905050703050302-- From fche@redhat.com Thu Mar 27 09:35:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7060329DF7 for ; Thu, 27 Mar 2014 09:35:23 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 19745AC002 for ; Thu, 27 Mar 2014 07:35:19 -0700 (PDT) X-ASG-Debug-ID: 1395930918-04bdf05daca04d80001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Mn4tpymrJWHjhyJe for ; Thu, 27 Mar 2014 07:35:19 -0700 (PDT) X-Barracuda-Envelope-From: fche@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2REZF6A001054 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Mar 2014 10:35:15 -0400 Received: from fche.csb (vpn-59-222.rdu2.redhat.com [10.10.59.222]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2REZAFR022102; Thu, 27 Mar 2014 10:35:10 -0400 Received: by fche.csb (Postfix, from userid 2569) id 9D83958190; Thu, 27 Mar 2014 10:35:09 -0400 (EDT) To: Nathan Scott Cc: Ken McDonell , pcp@oss.sgi.com Subject: Re: pcp updates: build packaging References: <958400261.2302650.1395896853587.JavaMail.zimbra@redhat.com> <1676674258.2309467.1395897249956.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: pcp updates: build packaging From: fche@redhat.com (Frank Ch. Eigler) Date: Thu, 27 Mar 2014 10:35:09 -0400 In-Reply-To: <1676674258.2309467.1395897249956.JavaMail.zimbra@redhat.com> (Nathan Scott's message of "Thu, 27 Mar 2014 01:14:09 -0400 (EDT)") Message-ID: User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395930919 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Nathan Scott writes: > Just a heads up - this commit involved fairly deep surgery > to Makepkgs, in order to move to generating the source tar > file via git instead of make. [...] Hooray! Does this mean we can also ditch GNUmakefile bits like *SRCFILE=foo ? - FChE From scox@redhat.com Thu Mar 27 09:45:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C905129DF7 for ; Thu, 27 Mar 2014 09:45:49 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id BDFF3304064 for ; Thu, 27 Mar 2014 07:45:49 -0700 (PDT) X-ASG-Debug-ID: 1395931544-04cb6c56769e6700001-S8gJnT Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zbht9DhW7mycHXn1 for ; Thu, 27 Mar 2014 07:45:45 -0700 (PDT) X-Barracuda-Envelope-From: scox@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s2REjh44005697 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 27 Mar 2014 10:45:44 -0400 Received: from [10.13.129.29] (dhcp129-29.rdu.redhat.com [10.13.129.29]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2REjhWF005647 for ; Thu, 27 Mar 2014 10:45:43 -0400 Message-ID: <53343997.6070903@redhat.com> Date: Thu, 27 Mar 2014 10:45:43 -0400 From: Stan Cox User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: PCP Subject: patch: make rpm pmda long size aware Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: patch: make rpm pmda long size aware Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1395931544 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 commit 221b0372 in sourceware.org/git/pcpfans Set rpm.size from RPMTAG_LONGSIZE * rpm.c (metrictab, rpm_extract_metadata): Set rpm.size from RPMTAG_LONGSIZE * rpm.h (metadata): Rename size to longsize, same name as rpm tag. * (qa/750, qa/750.out): Test pmlogrewrite of rpm/migrate.conf * migrate.conf: Only migrate rpm.size From nscott@redhat.com Thu Mar 27 16:47:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 37CD97F57 for ; Thu, 27 Mar 2014 16:47:26 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 25E3530406B for ; Thu, 27 Mar 2014 14:47:23 -0700 (PDT) X-ASG-Debug-ID: 1395956841-04cbb054b7824a50001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id sLJQgP4y87xQSh44 for ; Thu, 27 Mar 2014 14:47:21 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2RLlIbi005331; Thu, 27 Mar 2014 17:47:18 -0400 Date: Thu, 27 Mar 2014 17:47:18 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: "Frank Ch. Eigler" Cc: Ken McDonell , pcp@oss.sgi.com Message-ID: <869179488.3268843.1395956838203.JavaMail.zimbra@redhat.com> In-Reply-To: References: <958400261.2302650.1395896853587.JavaMail.zimbra@redhat.com> <1676674258.2309467.1395897249956.JavaMail.zimbra@redhat.com> Subject: Re: pcp updates: build packaging MIME-Version: 1.0 X-ASG-Orig-Subj: Re: pcp updates: build packaging Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: build packaging Thread-Index: mnNrswehuKUl+zbK5aWiCaER/J3jUQ== X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395956841 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.03 X-Barracuda-Spam-Status: No, SCORE=0.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4317 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain ----- Original Message ----- > Nathan Scott writes: > > > Just a heads up - this commit involved fairly deep surgery > > to Makepkgs, in order to move to generating the source tar > > file via git instead of make. [...] > > Hooray! > > Does this mean we can also ditch GNUmakefile bits like *SRCFILE=foo ? > I believe so -- I haven't looked into that side of things yet, but yes I do hope so. :) cheers. -- Nathan From nscott@redhat.com Thu Mar 27 21:36:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0211C7F3F for ; Thu, 27 Mar 2014 21:36:33 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id D68B68F804B for ; Thu, 27 Mar 2014 19:36:32 -0700 (PDT) X-ASG-Debug-ID: 1395974187-04cbb054b8831cc0001-S8gJnT Received: from mx3-phx2.redhat.com (mx6-phx2.redhat.com [209.132.183.39]) by cuda.sgi.com with ESMTP id HEoaQV0I3cx4VLtg for ; Thu, 27 Mar 2014 19:36:27 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.39 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2S2aNcP032029; Thu, 27 Mar 2014 22:36:23 -0400 Date: Thu, 27 Mar 2014 22:36:23 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <680787555.3349055.1395974183412.JavaMail.zimbra@redhat.com> In-Reply-To: <1176589565.3333049.1395973754870.JavaMail.zimbra@redhat.com> Subject: Makepkgs dependence on gnu tar MIME-Version: 1.0 X-ASG-Orig-Subj: Makepkgs dependence on gnu tar Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Makepkgs dependence on gnu tar Thread-Index: nK6sgdDgF1717VU+vlVsRIzCZtbtIw== X-Barracuda-Connect: mx6-phx2.redhat.com[209.132.183.39] X-Barracuda-Start-Time: 1395974187 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4328 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hi Ken, Following up from our IRC chat earlier - the --transform issue I mentioned (reason for using GNU tar) turns out to be a bit uglier than I has hoped it'd be to resolve, and I'm wondering if we can solve this another way. It turns out Mac OS X has GNU tar, its just called gnutar and wasn't in the search path in the script. I've added it, so I think Mac builds are OK. Which leaves the other members of the BSD family - they do seem to have one but not installed by default, I think (basing that on poking around on a FreeBSD box). I *believe* "pkg install gtar" will resolve this ... Since we already have a deep GNU-make dependency, is this something that we could live with for tar also, to make our lives easier? Otherwise, yeah, we need to implement that very convenient option in a cross-platform way (bit of a pain, really). cheers. -- Nathan From lbatista@evolutirh.com.br Thu Mar 27 23:40:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=EMAIL_URI_PHISH, MSGID_FROM_MTA_HEADER,TVD_PH_BODY_ACCOUNTS_PRE autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 013867F3F for ; Thu, 27 Mar 2014 23:40:58 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id D2F3D8F804C for ; Thu, 27 Mar 2014 21:40:57 -0700 (PDT) X-ASG-Debug-ID: 1395981651-04cbb054b6838db0001-S8gJnT Received: from smtpoutvox7.voxtelecom.co.za (smtpoutvox7.voxtelecom.co.za [41.193.38.183]) by cuda.sgi.com with ESMTP id 6ayEaQ4wh1HdXY3c for ; Thu, 27 Mar 2014 21:40:52 -0700 (PDT) X-Barracuda-Envelope-From: lbatista@evolutirh.com.br X-Barracuda-Apparent-Source-IP: 41.193.38.183 Message-Id: <7afe9c$kfvc18@smtpout.vox.co.za> X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Apt2AH78NFMKAAAr/2dsb2JhbAAQExkdgnEBFAE6SwEBqQCCDwKQF4hnFnRqAwaBFwENCUpSECA1BA4vhVwBBkEiC4EaBxgCDYMznCeHFYp0gmuWGJUtEAIBDVOCc4E7BIEshkSBKpYAKEiKd4FegVKBaAIHFwOBFg X-IPAS-Result: Apt2AH78NFMKAAAr/2dsb2JhbAAQExkdgnEBFAE6SwEBqQCCDwKQF4hnFnRqAwaBFwENCUpSECA1BA4vhVwBBkEiC4EaBxgCDYMznCeHFYp0gmuWGJUtEAIBDVOCc4E7BIEshkSBKpYAKEiKd4FegVKBaAIHFwOBFg X-IronPort-AV: E=Sophos;i="4.97,748,1389736800"; d="scan'208";a="687845416" Received: from unknown (HELO vox-outbound-smtp-03) ([10.0.0.43]) by smtpout.vox.co.za with ESMTP; 28 Mar 2014 06:40:50 +0200 Received: from [172.50.0.141] (port=62540 helo=vox-outbound-av-01) by vox-outbound-smtp-03 with esmtp (Exim 4.80.1 (FreeBSD)) (envelope-from ) id 1WTOb4-000FBq-3j; Fri, 28 Mar 2014 06:40:50 +0200 X-Virus-Scanned: amavisd-new at spam.voxtelecom.co.za Received: from vox-outbound-smtp-05 ([10.0.0.45]) by vox-outbound-av-01 (vox-outbound-av-01.spam.voxtelecom.co.za [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2bstX3WOVkn8; Fri, 28 Mar 2014 06:40:43 +0200 (SAST) Received: from [41.203.67.142] (port=16076 helo=[10.11.3.221]) by vox-outbound-smtp-05 with esmtpa (Exim 4.80.1 (FreeBSD)) (envelope-from ) id 1WTOau-000AI8-5y; Fri, 28 Mar 2014 06:40:41 +0200 Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Subject: UPDATE!! To: Recipients X-ASG-Orig-Subj: UPDATE!! From: System Administrator Date: Fri, 28 Mar 2014 05:40:24 +0100 Reply-To: NO-REPLY X-Barracuda-Connect: smtpoutvox7.voxtelecom.co.za[41.193.38.183] X-Barracuda-Start-Time: 1395981651 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.50 X-Barracuda-Spam-Status: No, SCORE=1.50 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MSGID_FROM_MTA_HEADER, MSGID_FROM_MTA_HEADER_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MSGID_FROM_MTA_HEADER Message-Id was added by a relay 1.50 MSGID_FROM_MTA_HEADER_2 Message-Id was added by a relay Dear E-Mail Account User, Access to your Web-Mail E-Mail Account is about to expire, We recommend that you upgrade your Web-Mail E-Mail Account to avoid account suspension.Please Click on the Upgrade link below to update your = Web-Mail E-Mail Account http://online-upgrades.livecity.me Warning: Any Web-Mail subscriber who fail to comply with this = notification message will lose his/her Web-Mail E-Mail Account Noted: Thank You. Web-Mail Technical Support Administrator! Copyright (c)2014 Email Help Desk Center. From nscott@redhat.com Fri Mar 28 00:28:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A65A67F3F for ; Fri, 28 Mar 2014 00:28:43 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 956CA30406A for ; Thu, 27 Mar 2014 22:28:40 -0700 (PDT) X-ASG-Debug-ID: 1395984518-04cbb054b983b8a0001-S8gJnT Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id EtCTN9MHArhswF47 for ; Thu, 27 Mar 2014 22:28:39 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2S5ScGS018884 for ; Fri, 28 Mar 2014 01:28:38 -0400 Date: Fri, 28 Mar 2014 01:28:38 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: pcp@oss.sgi.com Message-ID: <441239275.3409835.1395984518260.JavaMail.zimbra@redhat.com> In-Reply-To: <2057644806.3409310.1395984418563.JavaMail.zimbra@redhat.com> Subject: pcp updates: HACKING MIME-Version: 1.0 X-ASG-Orig-Subj: pcp updates: HACKING Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.7] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates: HACKING Thread-Index: WtlChTpAAmGN5TAe0WLZx5LnfQQr0w== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1395984519 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4332 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Changes committed to git://oss.sgi.com/pcp/pcp.git dev HACKING | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Makepkgs | 35 ++++++++++--------------- 2 files changed, 102 insertions(+), 20 deletions(-) commit c7cb753cdf57a67241b53bce5e50fac180f00b80 Author: Nathan Scott Date: Fri Mar 28 16:25:24 2014 +1100 Attempt to capture PCP development methodology on paper This commit adds a new documentation file - HACKING - at the top level to give guidelines and tips to anyone working on PCP. Please add to (or remove from!) this with anything you feel has been over-looked or over-represented here. commit 548ad9e9a69be4145770b906b61905061c61d5f9 Author: Nathan Scott Date: Fri Mar 28 11:46:09 2014 +1100 Tweak Makepkgs to find Mac OS X gnutar binary commit a6e3204ad9093a11903e8d014ee446363ddccfd7 Author: Nathan Scott Date: Fri Mar 28 10:40:14 2014 +1100 Rename platform references to target in Makepkgs, cosmetic commit 3fbf36b6e8ec9a680009065f2d7ff41228024e5b Author: Nathan Scott Date: Fri Mar 28 10:38:52 2014 +1100 Unconditionally clean the (separate) build tree in Makepkgs Also, unconditionally create the source tarball, using a freshly created git contents manifest. From t-bounce-86ddda12-b659-11e3-8080-808080808080-pcp=oss.sgi.com@bzn-host.eu Fri Mar 28 04:39:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.2 required=5.0 tests=DEAR_SOMETHING, HTML_IMAGE_ONLY_32,HTML_MESSAGE,T_DKIM_INVALID,T_FRT_BELOW2,T_REMOTE_IMAGE autolearn=no version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6D7497F4E for ; Fri, 28 Mar 2014 04:39:08 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id DBF21AC003 for ; Fri, 28 Mar 2014 02:39:07 -0700 (PDT) X-ASG-Debug-ID: 1395999540-04cb6c5676a28d00001-S8gJnT Received: from send1.bzn-host.eu (send1.bzn-host.eu [46.108.240.14]) by cuda.sgi.com with ESMTP id BxCIS8lbpEGSKzDx for ; Fri, 28 Mar 2014 02:39:00 -0700 (PDT) X-Barracuda-Envelope-From: t-bounce-86ddda12-b659-11e3-8080-808080808080-pcp=oss.sgi.com@bzn-host.eu X-Barracuda-Apparent-Source-IP: 46.108.240.14 Subject: Businesses & Properties for sale in Romania DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=bzn-host.eu; s=default; t=1395998152; bh=wiV887/bO1bXV4VCbn7xVZgE2txbRb6rW+3aFJdhGCA=; h=Content-Type:MIME-Version:Message-Id:List-Unsubscribe:From: Reply-To:To:Date:Sender; b=G30UWWUPQPAk+IQgfcoPn+8S5AtqhRPVr32Llum72oU3APUj1mlgveluYLdptKs+l 54OatJduvpKX4Z4z7U6v+DdrPRolPDwbp77Bo5t130fCSuy2XEthBq4+cKu8im+lQZ VZoNtB5bF+6yi7Kj/LijH0os8IROY1ezvrh0v+7U= X-ASG-Orig-Subj: Businesses & Properties for sale in Romania X-Priority: 3 Content-Type: multipart/alternative; boundary="===============3886624467654454320==" MIME-Version: 1.0 Message-Id: <20140328091538.91912.86ddda12-b659-11e3-8080-808080808080.crbrmail@bzn-host.eu> List-Unsubscribe: From: office@business-romania.net Reply-To: office@business-romania.net To: pcp@oss.sgi.com Date: Fri, 28 Mar 2014 09:15:38 -0000 Sender: office@business-romania.net X-Barracuda-Connect: send1.bzn-host.eu[46.108.240.14] X-Barracuda-Start-Time: 1395999540 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.40 X-Barracuda-Spam-Status: No, SCORE=0.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085b, DKIM_SIGNED, DKIM_VERIFIED, FUZZY_VLIUM, HTML_IMAGE_ONLY_32, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4337 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 FUZZY_VLIUM BODY: Attempt to obfuscate words in spam 0.00 HTML_IMAGE_ONLY_32 BODY: HTML: images with 2800-3200 bytes of words 0.00 HTML_MESSAGE BODY: HTML included in message 0.40 BSF_SC0_SA085b Custom Rule SA085b --===============3886624467654454320== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [1]: http://www.business-romania.net/ # Businesses & Properties for sale in Romania Dear Sirs, Please find bellow the properties and businesses we have on sale in Romania: INDUSTRIAL PROPERTY, former factory: 49.200 sqm of land, 10.000 sqm of industrial hall, 1.600 sqm of warehouses, 2.200 sqm of office building OFFICES & SHOWROOM Building: building on 2 levels: 818 sqm ground floor + 641 sqm first floor, land 1068 sqm FORMER FURNITURE FACTORY: land 43500 sqm, 18000 sqm buildings, office building of 200 sqm, production halls 12000 sqm PRODUCER OF PAINTS, VARNISHES, ADHESIVES: annual turnover 2 million Eur FORMER MEAT PROCESSING FACTORY: land 2909 sqm, production hall 1404 sqm, office building 157 sqm, new technologies from 2010 MEDICAL CLINIC: since 1990, 15 medical specialities FORMER SAWN WOOD FACTORY: land 70800 sqm with concrete, production hall 800 sqm AUTO REPAIR & SERVICE Business: land 3000 sqm, showroom 200 sqm, offices 230 sqm, auto repair area 320 sqm For any other details please contact us. Looking forward to your answer. Best Regards, Catalin Rusu Rusu E Catalin PFA Sos Nicolina nr 40, 700687 - IASI ROMANIA VAT 30548758 F22/2172/14.08.2012 Mobile: +40 735 886 201 Fax: +40 372 877 165 ceo@businesses-properties.com office@business-romania.net www.businesses-properties.com www.afaceri-proprietati.com www.business-romania.net This is an informing email and it shouldn\' t be spam. If you don\' t want to receive emails from business-romania.net send a reply to this email with the message DELETE or click the link at the bottom of this email. If you no longer wish to receive messages from us please click the link below, or copy and paste it in your browser: http://tr.bzn-host.eu/tr/u/0328SzuqFu7eFVeJYMCaWpwq6514 --===============3886624467654454320== Content-Type: text/html; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable

Businesses= & Properties for sale in Romania


Dear Sirs,





Please find bellow the properties and businesses we have on sale in Romania= :


INDUSTRIAL PROPERTY, former factory:
49.200 sqm of land, 10.000 sqm of industrial hall, 1.600 sqm of warehouses= , 2.200 sqm of office building


OFFICES & SHOWROOM Building:
building on 2 levels: 818 sqm ground floor + 641 sqm first floor, land 106= 8 sqm


FORMER FURNITURE FACTORY:
land 43500 sqm, 18000 sqm buildings, office building of 200 sqm, production= halls 12000 sqm


PRODUCER OF PAINTS, VARNISHES, ADHESIVES:
annual turnover 2 million Eur


FORMER MEAT PROCESSING FACTORY:
land 2909 sqm, production hall 1404 sqm, office building 157 sqm, new techn= ologies from 2010


MEDICAL CLINIC:
since 1990, 15 medical specialities


FORMER SAWN WOOD FACTORY:
land 70800 sqm with concrete, production hall 800 sqm


AUTO REPAIR & SERVICE Business:
land 3000 sqm, showroom 200 sqm, offices 230 sqm, auto repair area 320 sqm =


For any other details please contact us.

Looking forward to your answer.




Best Regards,
Catalin Rusu


Rusu E Catalin PFA
Sos Nicolina nr 40, 700687 - IASI
ROMANIA
VAT 30548758
F22/2172/14.08.2012

Mobile: +40 735 886 201
Fax: +40 372 877 165
ceo@businesses-properties.com
office@business-romania.net
www.businesses-properties.com
www.afaceri-proprietati.com
www.business-romania.net



This is an informing email and it shouldn\' t be spam. If you don\' t want = to receive emails from business-romania.net send a reply to this email with= the message DELETE or click the link at the bottom of this email.

If you no longer wish to receive messages from us please click the link bel= ow, or copy and paste it in your browser:
http://tr.bzn-host.eu/tr/u/0328SzuqFu7eFVeJYMCaWpwq6514




=
=C2=A0
--===============3886624467654454320==-- From kenj@internode.on.net Fri Mar 28 15:30:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2347B7F72 for ; Fri, 28 Mar 2014 15:30:16 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id A821EAC003 for ; Fri, 28 Mar 2014 13:30:12 -0700 (PDT) X-ASG-Debug-ID: 1396038606-04bdf076f07a9c90001-S8gJnT Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id g84ZOtttMV2VMZjE for ; Fri, 28 Mar 2014 13:30:06 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArkWAFrbNVN20adJPGdsb2JhbAANTIcihDu4IoMOgS4DAQEBATiCWgEBAQMBIxVBBQsLGAICBSECAg8CMhQGDQEHAQGHba4qdqMGF4EpjVEHgm+BSQEDrkc Received: from ppp118-209-167-73.lns20.mel6.internode.on.net (HELO [192.168.1.100]) ([118.209.167.73]) by ipmail05.adl6.internode.on.net with ESMTP; 29 Mar 2014 07:00:05 +1030 Message-ID: <5335DC0F.50105@internode.on.net> Date: Sat, 29 Mar 2014 07:31:11 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: Makepkgs dependence on gnu tar References: <680787555.3349055.1395974183412.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: Makepkgs dependence on gnu tar In-Reply-To: <680787555.3349055.1395974183412.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1396038606 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4354 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 28/03/14 13:36, Nathan Scott wrote: > Hi Ken, > > Following up from our IRC chat earlier - the --transform > issue I mentioned (reason for using GNU tar) turns out to > be a bit uglier than I has hoped it'd be to resolve, and > I'm wondering if we can solve this another way. > > It turns out Mac OS X has GNU tar, its just called gnutar > and wasn't in the search path in the script. I've added > it, so I think Mac builds are OK. ... Yep, my Mac OS X build just worked fine, thanks. > ...Which leaves the other > members of the BSD family - they do seem to have one but > not installed by default, I think (basing that on poking > around on a FreeBSD box). I *believe* "pkg install gtar" > will resolve this ... FreBSD is OK, I've installed gtar there and made PCP packages I have an unresolved issue on NetBSD, but gtar is installed now and this seems to be something else (needs more investigation). > Since we already have a deep GNU-make dependency, is this > something that we could live with for tar also, to make > our lives easier? Otherwise, yeah, we need to implement > that very convenient option in a cross-platform way (bit > of a pain, really). I'm OK to stick with gtar. From kenj@internode.on.net Sat Mar 29 16:51:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6F83F7F50 for ; Sat, 29 Mar 2014 16:51:28 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 63C6030404E for ; Sat, 29 Mar 2014 14:51:28 -0700 (PDT) X-ASG-Debug-ID: 1396129882-04cbb054b88f9200001-S8gJnT Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id Sg9fYpYSoFq4gapD for ; Sat, 29 Mar 2014 14:51:23 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqF/AAVAN1N20TBuPGdsb2JhbABZgwaDSoUMu0QDAoESFwMBAQEBODWCJQEBAQMBCAIeEhwjBQgDAgYDRhkgChQCBB4Fh2EH0T8Xjn8HhDgEjz6fCSk Received: from ppp118-209-48-110.lns20.mel4.internode.on.net (HELO bozohorize) ([118.209.48.110]) by ipmail04.adl6.internode.on.net with ESMTP; 30 Mar 2014 08:21:10 +1030 From: "Ken McDonell" To: "'Nathan Scott'" Cc: References: <680787555.3349055.1395974183412.JavaMail.zimbra@redhat.com> <5335DC0F.50105@internode.on.net> In-Reply-To: <5335DC0F.50105@internode.on.net> Subject: RE: [pcp] Makepkgs dependence on gnu tar Date: Sun, 30 Mar 2014 08:51:05 +1100 X-ASG-Orig-Subj: RE: [pcp] Makepkgs dependence on gnu tar Message-ID: <00a201cf4b98$fdff4170$f9fdc450$@internode.on.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Outlook 15.0 Thread-Index: AQI+f68U8mcODFpWn5P3G9AJuyq1ogJoHYO9mgbu3sA= Content-Language: en-au X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1396129882 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.01 X-Barracuda-Spam-Status: No, SCORE=0.01 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, THREAD_INDEX X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4398 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header > I'm OK to stick with gtar. Update - the tar in my CentOS 5.10 (and I presume RHEL 5) system is gnu tar, but too old to have the --transform option. I've picked the SRPM from Fedora 10 (!), remade the rpm and installed. This has the --transform option and Makepkgs worked. If you go later than Fedora 10 you run into autoconf version incompatibilities (certainly by Fedora 16 this prevents the source rpm rebuild). Earlier then Fedora 10 and the version of gnu tar is too old. Bit of a battle, but done now. From noreply@release.debian.org Sun Mar 30 11:39:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D57797F4E for ; Sun, 30 Mar 2014 11:39:27 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A4C3D8F8039 for ; Sun, 30 Mar 2014 09:39:27 -0700 (PDT) X-ASG-Debug-ID: 1396197560-04bdf05dacb476f0001-S8gJnT Received: from picconi.debian.org (picconi.debian.org [5.153.231.3]) by cuda.sgi.com with ESMTP id CCEHjrYJ8l7LMGvN (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Sun, 30 Mar 2014 09:39:22 -0700 (PDT) X-Barracuda-Envelope-From: noreply@release.debian.org X-Barracuda-Apparent-Source-IP: 5.153.231.3 Received: from franck.debian.org ([138.16.160.12]) from C=NA,ST=NA,L=Ankh Morpork,O=Debian SMTP,OU=Debian SMTP CA,CN=franck.debian.org,EMAIL=hostmaster@franck.debian.org (verified) by picconi.debian.org with esmtps (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1WUIlT-0001sl-HT for pcp@packages.debian.org; Sun, 30 Mar 2014 16:39:19 +0000 Received: from release by franck.debian.org with local (Exim 4.80) (envelope-from ) id 1WUIlQ-0003ci-W6; Sun, 30 Mar 2014 16:39:16 +0000 From: Debian testing watch Precedence: bulk X-Trille: 0.120315.1711 Subject: pcp 3.9.1 MIGRATED to testing X-Testing-Watch-Package: pcp X-ASG-Orig-Subj: pcp 3.9.1 MIGRATED to testing X-Testing-Watch-Version: 3.9.1 To: pcp@packages.debian.org Message-Id: Sender: Release Managers Date: Sun, 30 Mar 2014 16:39:16 +0000 Delivered-To: pcp@packages.debian.org X-Barracuda-Connect: picconi.debian.org[5.153.231.3] X-Barracuda-Start-Time: 1396197561 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4424 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header FYI: The status of the pcp source package in Debian's testing distribution has changed. Previous version: 3.8.12 Current version: 3.9.1 -- This email is automatically generated once a day. As the installation of new packages into testing happens multiple times a day you will receive later changes on the next day. See http://release.debian.org/testing-watch/ for more information. From nscott@redhat.com Sun Mar 30 16:54:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6DD1F29DF9 for ; Sun, 30 Mar 2014 16:54:38 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5ADF1304043 for ; Sun, 30 Mar 2014 14:54:38 -0700 (PDT) X-ASG-Debug-ID: 1396216473-04cb6c5676b34d30001-S8gJnT Received: from mx3-phx2.redhat.com (mx5-phx2.redhat.com [209.132.183.37]) by cuda.sgi.com with ESMTP id d9chYzHHGE0XAGNG for ; Sun, 30 Mar 2014 14:54:33 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.37 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s2ULsTxG029548; Sun, 30 Mar 2014 17:54:29 -0400 Date: Sun, 30 Mar 2014 17:54:29 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <1258915903.4214609.1396216469372.JavaMail.zimbra@redhat.com> In-Reply-To: <00a201cf4b98$fdff4170$f9fdc450$@internode.on.net> References: <680787555.3349055.1395974183412.JavaMail.zimbra@redhat.com> <5335DC0F.50105@internode.on.net> <00a201cf4b98$fdff4170$f9fdc450$@internode.on.net> Subject: Re: [pcp] Makepkgs dependence on gnu tar MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] Makepkgs dependence on gnu tar Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: Makepkgs dependence on gnu tar Thread-Index: AQI+f68U8mcODFpWn5P3G9AJuyq1ogJoHYO9mgbu3sA3yJweTw== X-Barracuda-Connect: mx5-phx2.redhat.com[209.132.183.37] X-Barracuda-Start-Time: 1396216473 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4435 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > > I'm OK to stick with gtar. > > Update - the tar in my CentOS 5.10 (and I presume RHEL 5) system is gnu tar, > but too old to have the --transform option. > Ugh. > I've picked the SRPM from Fedora 10 (!), remade the rpm and installed. This > has the --transform option and Makepkgs worked. > > If you go later than Fedora 10 you run into autoconf version > incompatibilities (certainly by Fedora 16 this prevents the source rpm > rebuild). Earlier then Fedora 10 and the version of gnu tar is too old. > > Bit of a battle, but done now. Another option I've looked into - if we (optionally?) relax the requirement that modifications to files are included in the tarball, life becomes a bit simpler once more (I spent a fair bit of time trying to coerce git-stash to help us here, but without any luck). So, if we do that, we can use the built-in git-archive tarball generation; git archive --format=tar --prefix=pcp-xyz/ HEAD | gzip > pcp-xyz.src.tar.gz (and then we need to make sure gzip exists!) Any interest in adding this mode as a fallback, when no gnu tar is found? (perhaps using "git-status --porcelain" to warn about any modifications?) cheers. -- Nathan From kenj@internode.on.net Mon Mar 31 03:57:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 81E237F56 for ; Mon, 31 Mar 2014 03:57:45 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 55BEF304032 for ; Mon, 31 Mar 2014 01:57:41 -0700 (PDT) X-ASG-Debug-ID: 1396256255-04bdf05dabb7a000001-S8gJnT Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id E0kXronK1mlo0tLN for ; Mon, 31 Mar 2014 01:57:36 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Al8XAGAtOVN20W2ZPGdsb2JhbAANTItcvQIDAQEBATiDGUA9FhgDAgECATEaDQgBAbV4owcXkz4Erkc Received: from ppp118-209-109-153.lns20.mel4.internode.on.net (HELO [192.168.1.100]) ([118.209.109.153]) by ipmail06.adl2.internode.on.net with ESMTP; 31 Mar 2014 19:27:35 +1030 Message-ID: <53392E47.8060204@internode.on.net> Date: Mon, 31 Mar 2014 19:58:47 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: PCP Mailing List Subject: Dropping machines from my QA farm Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: Dropping machines from my QA farm Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1396256256 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I intend to drop the following platforms from my QA Farm unless a reader on this list can point to someone with a pulse who cares about them ... - opensolaris - never worked well and now no longer boots on my vm - openindiana - after 4 hrs and 2 complete re-installs I cannot get it to boot in my lifetime - slackware - PCP packaging support dropped on the ground recently If I don't hear any cries of anguish in the next week they'll be poxed off. From kenj@internode.on.net Mon Mar 31 14:29:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1A9FB7F37 for ; Mon, 31 Mar 2014 14:29:54 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id BD0F9AC003 for ; Mon, 31 Mar 2014 12:29:53 -0700 (PDT) X-ASG-Debug-ID: 1396294188-04bdf05dacb9f3e0001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id mUx1mvzswFAtK1yr for ; Mon, 31 Mar 2014 12:29:48 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ag8YAEjBOVN20W2ZPGdsb2JhbAANTINBiBu7UoFBAwEBAQE4g1kwDRYYAwIBAgExJwYCAQG1TaJmF48chCIErkc Received: from ppp118-209-109-153.lns20.mel4.internode.on.net (HELO [192.168.1.100]) ([118.209.109.153]) by ipmail06.adl6.internode.on.net with ESMTP; 01 Apr 2014 05:59:47 +1030 Message-ID: <5339C272.3070408@internode.on.net> Date: Tue, 01 Apr 2014 06:30:58 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - pmlogmv Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: pcp updates - pmlogmv Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1396294188 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4463 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev Makepkgs | 11 ++++++----- man/man1/pmlogmv.1 | 2 +- qa/738 | 7 +++---- 3 files changed, 10 insertions(+), 10 deletions(-) commit fd248f5fa4a453c31c8f99fe7df8f6b809aabb22 Author: Ken McDonell Date: Tue Apr 1 06:29:11 2014 +1100 qa/738 - refine filter 1. accommodate differences in ls -l output 2. accommodate differences in the "permissions" error fron ln(1) commit d74788652f33ea876579f57942e90244da172f8c Author: Ken McDonell Date: Tue Apr 1 06:28:40 2014 +1100 pmlogmv man page - minor editorial tweak commit 548ad9e9a69be4145770b906b61905061c61d5f9 Author: Nathan Scott Date: Fri Mar 28 11:46:09 2014 +1100 Tweak Makepkgs to find Mac OS X gnutar binary From lignifies@keimig.de Mon Mar 31 14:33:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9A3187F52 for ; Mon, 31 Mar 2014 14:33:28 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 50604AC002 for ; Mon, 31 Mar 2014 12:33:28 -0700 (PDT) X-ASG-Debug-ID: 1396294404-04bdf05daab9f670001-S8gJnT Received: from yheqonzt.halmerer.ru (d83-191-124-21.cust.tele2.at [83.191.124.21]) by cuda.sgi.com with SMTP id kzGkYGOIsPVHFHJT for ; Mon, 31 Mar 2014 12:33:25 -0700 (PDT) X-Barracuda-Envelope-From: lignifies@keimig.de X-Barracuda-Apparent-Source-IP: 83.191.124.21 Message-ID: <5339C25C.3060506@keimig.de> Date: Mon, 31 Mar 2014 21:33:25 +0200 From: Versteeg Sarwinski X-Mailer: Lysol v0.5 MIME-Version: 1.0 To: Subject: moolah Content-Type: text/plain; charset=windows-1252 X-ASG-Orig-Subj: moolah Content-Transfer-Encoding: quoted-printable X-PCToolsMIME: Updated by PC Tools Mime Parser 1.0.0.4 X-Barracuda-Connect: d83-191-124-21.cust.tele2.at[83.191.124.21] X-Barracuda-Start-Time: 1396294404 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, BSF_SC7_SA_HREF_FROM_MISMATCH_TEXT_URIx1_HL, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4463 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 2.00 BSF_SC7_SA_HREF_FROM_MISMATCH_TEXT_URIx1_HL Custom Rule HREF_FROM_MISMATCH_TEXT_URIx1_HL to the be =3D=3D=3D=3D=3D=3D=3D E-Mail von PC Tools gescannt =96 Keine Viren oder Spyware gefunden. (Email Guard: 9.1.0.2894, Virus/Spyware Database: 6.21920) http://www.pctools.com/ =3D=3D=3D=3D=3D=3D=3D From kenj@internode.on.net Mon Mar 31 14:37:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7FCA67F52 for ; Mon, 31 Mar 2014 14:37:37 -0500 (CDT) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1A689AC001 for ; Mon, 31 Mar 2014 12:37:36 -0700 (PDT) X-ASG-Debug-ID: 1396294653-04cb6c5676b785c0001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id FW1rg3L1stV2qIGA for ; Mon, 31 Mar 2014 12:37:34 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgsYAJnDOVN20W2ZPGdsb2JhbAANTINBiBu9EwMBAQEBOIMZQDANFhgDAgECATEnBgIBAbVHomgXjxyEIgSuRw Received: from ppp118-209-109-153.lns20.mel4.internode.on.net (HELO [192.168.1.100]) ([118.209.109.153]) by ipmail06.adl6.internode.on.net with ESMTP; 01 Apr 2014 06:07:33 +1030 Message-ID: <5339C446.9090705@internode.on.net> Date: Tue, 01 Apr 2014 06:38:46 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: pcp@oss.sgi.com Subject: pcp updates - qa/738 ... grr Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-ASG-Orig-Subj: pcp updates - qa/738 ... grr Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1396294653 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4463 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Changes committed to git://oss.sgi.com/kenj/pcp.git dev qa/738 | 4 ++++ 1 file changed, 4 insertions(+) commit f594443c97b508cf5abe36844c13009b983c7367 Author: Ken McDonell Date: Tue Apr 1 06:37:26 2014 +1100 qa/738 - more quoting differences in ln error messages From kenj@internode.on.net Mon Mar 31 17:05:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4CC8E7F57 for ; Mon, 31 Mar 2014 17:05:31 -0500 (CDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4709E8F8037 for ; Mon, 31 Mar 2014 15:05:28 -0700 (PDT) X-ASG-Debug-ID: 1396303522-04cbb054b8993610001-S8gJnT Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Qo6HG0Dwox2Sbc3S for ; Mon, 31 Mar 2014 15:05:22 -0700 (PDT) X-Barracuda-Envelope-From: kenj@internode.on.net X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhwYAK3lOVN20W2ZPGdsb2JhbAANTIcihDq4YoMOgTsDAQEBATiCWgEBAQQjFUABEAsYAgIFFgsCAgkDAgECATEUBg0BBwEBtVx2omMXgSmNVgeCb4FJAQOuRw Received: from ppp118-209-109-153.lns20.mel4.internode.on.net (HELO [192.168.1.100]) ([118.209.109.153]) by ipmail06.adl6.internode.on.net with ESMTP; 01 Apr 2014 08:35:22 +1030 Message-ID: <5339E6EB.7090403@internode.on.net> Date: Tue, 01 Apr 2014 09:06:35 +1100 From: Ken McDonell User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: Nathan Scott CC: pcp@oss.sgi.com Subject: Re: [pcp] pcp updates - pmlogmv References: <5333E8B1.1020208@internode.on.net> <1475108664.2474156.1395914867126.JavaMail.zimbra@redhat.com> X-ASG-Orig-Subj: Re: [pcp] pcp updates - pmlogmv In-Reply-To: <1475108664.2474156.1395914867126.JavaMail.zimbra@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1396303522 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4468 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 27/03/14 21:07, Nathan Scott wrote: > ... > BTW, doesn't this seem more like a PCP_BINADM_DIR utility than > a PCP_BIN_DIR one ... ? Probably noone will ever need to run > it "by hand" from the command line, which is the litmus test I > have tended to go by in the past. Well I actually _do_ run this by hand. In one pmlogger farm I have passing pastoral care for, there are currently 5,000 pcp archives from 55 hosts. Things do not go wrong that often, but when something goes wrong I may have to juggle a _lot_ of archives. In at least on case in the past, pmlogmv would have saved me accidentally destroying months of archive data! I will definitely use it from the command line ... and more often than I'd run pmlogger from the command line, and pmlogger is currently installed in the same /usr/bin as pmlogmv. From nscott@redhat.com Mon Mar 31 17:33:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: pcp@oss.sgi.com Delivered-To: pcp@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id BAA467F53 for ; Mon, 31 Mar 2014 17:33:37 -0500 (CDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 51CD7AC004 for ; Mon, 31 Mar 2014 15:33:37 -0700 (PDT) X-ASG-Debug-ID: 1396305214-04bdf05dacba7550001-S8gJnT Received: from mx3-phx2.redhat.com (mx3-phx2.redhat.com [209.132.183.24]) by cuda.sgi.com with ESMTP id aFwuGSfRGk402lr3 for ; Mon, 31 Mar 2014 15:33:35 -0700 (PDT) X-Barracuda-Envelope-From: nscott@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.24 Received: from zmail20.collab.prod.int.phx2.redhat.com (zmail20.collab.prod.int.phx2.redhat.com [10.5.83.23]) by mx3-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s2VMXVBs020314; Mon, 31 Mar 2014 18:33:31 -0400 Date: Mon, 31 Mar 2014 18:33:31 -0400 (EDT) From: Nathan Scott Reply-To: Nathan Scott To: Ken McDonell Cc: pcp@oss.sgi.com Message-ID: <71873184.4924756.1396305211130.JavaMail.zimbra@redhat.com> In-Reply-To: <5339E6EB.7090403@internode.on.net> References: <5333E8B1.1020208@internode.on.net> <1475108664.2474156.1395914867126.JavaMail.zimbra@redhat.com> <5339E6EB.7090403@internode.on.net> Subject: Re: [pcp] pcp updates - pmlogmv MIME-Version: 1.0 X-ASG-Orig-Subj: Re: [pcp] pcp updates - pmlogmv Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.6] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF17 (Linux)/8.0.6_GA_5922) Thread-Topic: pcp updates - pmlogmv Thread-Index: npBZF++zFY9FWQomcyLTcW7YgwuOqg== X-Barracuda-Connect: mx3-phx2.redhat.com[209.132.183.24] X-Barracuda-Start-Time: 1396305215 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.4469 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... ----- Original Message ----- > [...] > > In at least one case in the past, pmlogmv would have saved me > accidentally destroying months of archive data! > > I will definitely use it from the command line ... Ah, OK, very good - I hadn't thought of that kind of scenario. Sounds like it is indeed in the right spot. BTW - pmgetopt(1) will probably appear at some point, to bring long option handling to all of the scripts as well (in addition to all of the C tools, which are not too far off done now). cheers. -- Nathan