Return-Path: Delivered-To: apmail-hadoop-chukwa-user-archive@minotaur.apache.org Received: (qmail 81261 invoked from network); 9 Mar 2010 11:23:53 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 9 Mar 2010 11:23:53 -0000 Received: (qmail 33682 invoked by uid 500); 9 Mar 2010 11:23:27 -0000 Delivered-To: apmail-hadoop-chukwa-user-archive@hadoop.apache.org Received: (qmail 33603 invoked by uid 500); 9 Mar 2010 11:23:26 -0000 Mailing-List: contact chukwa-user-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: chukwa-user@hadoop.apache.org Delivered-To: mailing list chukwa-user@hadoop.apache.org Received: (qmail 33584 invoked by uid 99); 9 Mar 2010 11:23:26 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Mar 2010 11:23:26 +0000 X-ASF-Spam-Status: No, hits=1.0 required=10.0 tests=KHOP_SC_TOP_CIDR8,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of bisho@tuenti.com designates 95.131.168.251 as permitted sender) Received: from [95.131.168.251] (HELO calipso.tuenti.com) (95.131.168.251) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 09 Mar 2010 11:23:22 +0000 Received: from localhost (localhost [127.0.0.1]) by calipso.tuenti.com ((8.14.2/8.14.2)) with ESMTP id 76C3419512CA for ; Tue, 9 Mar 2010 12:23:00 +0100 (CET) Received: from mail-bw0-f225.google.com (mail-bw0-f225.google.com [209.85.218.225]) by calipso.tuenti.com ((8.14.2/8.14.2)) with ESMTP id 5626E19512BB for ; Tue, 9 Mar 2010 12:22:59 +0100 (CET) Received: by bwz25 with SMTP id 25so289809bwz.11 for ; Tue, 09 Mar 2010 03:22:58 -0800 (PST) MIME-Version: 1.0 Received: by 10.204.33.148 with SMTP id h20mr7005520bkd.150.1268133778353; Tue, 09 Mar 2010 03:22:58 -0800 (PST) From: =?UTF-8?Q?Guillermo_P=C3=A9rez?= Date: Tue, 9 Mar 2010 12:22:37 +0100 Message-ID: <9d1281711003090322n404433a3l245fe8c10a9167a4@mail.gmail.com> Subject: Suggestion for changing the way for setting the cluster To: chukwa-user@hadoop.apache.org Content-Type: multipart/mixed; boundary=00032555a73a62ed1e04815c6740 --00032555a73a62ed1e04815c6740 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Right now we are setting the destination cluster by setting the tags field of the record, and then in RecordUtil by applying a regular expression, that may be slow specially if we process tons of records. I would suggest to include the destination cluster in the key object. I think makes more sense, it's an easy change, plus we don't fill chukwa records with unneeded data. I attach a tentative patch that will do this. It's much easier to control now the destination cluster from the mapper, plus the record object is much cleaner now. And the regular expression is done only once per chunk, not once per record, potentially increasing speed. What do you think? Should I open a ticket or this has no sense? --=20 Guille -=E2=84=AC=E1=B8=AD=E1=B9=A9=E1=B8=A9=C3=B8- :wq --00032555a73a62ed1e04815c6740 Content-Type: text/x-patch; charset=US-ASCII; name="cluster_in_ChukwaRecordKey.diff" Content-Disposition: attachment; filename="cluster_in_ChukwaRecordKey.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g6klzzws0 SW5kZXg6IHNyYy9qYXZhL29yZy9hcGFjaGUvaGFkb29wL2NodWt3YS9leHRyYWN0aW9uL2RlbXV4 L3Byb2Nlc3Nvci9tYXBwZXIvQWJzdHJhY3RQcm9jZXNzb3IuamF2YQo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBz cmMvamF2YS9vcmcvYXBhY2hlL2hhZG9vcC9jaHVrd2EvZXh0cmFjdGlvbi9kZW11eC9wcm9jZXNz b3IvbWFwcGVyL0Fic3RyYWN0UHJvY2Vzc29yLmphdmEJKHJldmlzaW9uIDkxODkwMCkKKysrIHNy Yy9qYXZhL29yZy9hcGFjaGUvaGFkb29wL2NodWt3YS9leHRyYWN0aW9uL2RlbXV4L3Byb2Nlc3Nv ci9tYXBwZXIvQWJzdHJhY3RQcm9jZXNzb3IuamF2YQkod29ya2luZyBjb3B5KQpAQCAtMjAsMjkg KzIwLDMxIEBACiAKIAogaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKIGltcG9ydCBvcmcuYXBh Y2hlLmhhZG9vcC5jaHVrd2EuQ2h1a3dhQXJjaGl2ZUtleTsKIGltcG9ydCBvcmcuYXBhY2hlLmhh ZG9vcC5jaHVrd2EuQ2h1bms7CiBpbXBvcnQgb3JnLmFwYWNoZS5oYWRvb3AuY2h1a3dhLmV4dHJh Y3Rpb24uZW5naW5lLkNodWt3YVJlY29yZDsKIGltcG9ydCBvcmcuYXBhY2hlLmhhZG9vcC5jaHVr d2EuZXh0cmFjdGlvbi5lbmdpbmUuQ2h1a3dhUmVjb3JkS2V5OwogaW1wb3J0IG9yZy5hcGFjaGUu aGFkb29wLmNodWt3YS5leHRyYWN0aW9uLmVuZ2luZS5SZWNvcmQ7CitpbXBvcnQgb3JnLmFwYWNo ZS5oYWRvb3AuY2h1a3dhLmV4dHJhY3Rpb24uZW5naW5lLlJlY29yZFV0aWw7CiBpbXBvcnQgb3Jn LmFwYWNoZS5oYWRvb3AuY2h1a3dhLnV0aWwuUmVjb3JkQ29uc3RhbnRzOwogaW1wb3J0IG9yZy5h cGFjaGUuaGFkb29wLm1hcHJlZC5PdXRwdXRDb2xsZWN0b3I7CiBpbXBvcnQgb3JnLmFwYWNoZS5o YWRvb3AubWFwcmVkLlJlcG9ydGVyOwogaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOwog CiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RQcm9jZXNzb3IgaW1wbGVtZW50cyBNYXBQ cm9jZXNzb3IgewogICBzdGF0aWMgTG9nZ2VyIGxvZyA9IExvZ2dlci5nZXRMb2dnZXIoQWJzdHJh Y3RQcm9jZXNzb3IuY2xhc3MpOwogCiAgIENhbGVuZGFyIGNhbGVuZGFyID0gQ2FsZW5kYXIuZ2V0 SW5zdGFuY2UoKTsKICAgYnl0ZVtdIGJ5dGVzOwogICBpbnRbXSByZWNvcmRPZmZzZXRzOwogICBp bnQgY3VycmVudFBvcyA9IDA7CiAgIGludCBzdGFydE9mZnNldCA9IDA7CisgIHByb3RlY3RlZCBT dHJpbmcgY2h1bmtDbHVzdGVyTmFtZTsKIAogICBwcm90ZWN0ZWQgQ2h1a3dhQXJjaGl2ZUtleSBh cmNoaXZlS2V5ID0gbnVsbDsKICAgcHJvdGVjdGVkIENodWt3YVJlY29yZEtleSBrZXkgPSBuZXcg Q2h1a3dhUmVjb3JkS2V5KCk7CiAgIHByb3RlY3RlZCBDaHVuayBjaHVuayA9IG51bGw7CiAKICAg Ym9vbGVhbiBjaHVua0luRXJyb3JTYXZlZCA9IGZhbHNlOwogICBPdXRwdXRDb2xsZWN0b3I8Q2h1 a3dhUmVjb3JkS2V5LCBDaHVrd2FSZWNvcmQ+IG91dHB1dCA9IG51bGw7CiAgIFJlcG9ydGVyIHJl cG9ydGVyID0gbnVsbDsKQEAgLTkwLDMyICs5MiwzNSBAQAogICAgIGNhbGVuZGFyLnNldFRpbWVJ bk1pbGxpcyh0aW1lc3RhbXApOwogICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5NSU5VVEUsIDAp OwogICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5TRUNPTkQsIDApOwogICAgIGNhbGVuZGFyLnNl dChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMCk7CiAKICAgICBrZXkuc2V0S2V5KCIiICsgY2FsZW5k YXIuZ2V0VGltZUluTWlsbGlzKCkgKyAiLyIgKyBjaHVuay5nZXRTb3VyY2UoKSArICIvIgogICAg ICAgICArIHRpbWVzdGFtcCk7CiAgICAga2V5LnNldFJlZHVjZVR5cGUoZGF0YVNvdXJjZSk7Cisg ICAga2V5LnNldENsdXN0ZXJOYW1lKGNodW5rQ2x1c3Rlck5hbWUpOwogCiAgICAgaWYgKGJvZHkg IT0gbnVsbCkgewogICAgICAgcmVjb3JkLmFkZChSZWNvcmQuYm9keUZpZWxkLCBib2R5KTsKICAg ICB9CiAgICAgcmVjb3JkLnNldFRpbWUodGltZXN0YW1wKTsKIAotICAgIHJlY29yZC5hZGQoUmVj b3JkLnRhZ3NGaWVsZCwgY2h1bmsuZ2V0VGFncygpKTsKKyAgICAvLyBDb21wbGV0ZWx5IHJlbW92 ZSB0YWdzRmllbGQsIG9yIGlzIG5lZWRlZCBmb3Igb3RoZXIgYXBwbGljYXRpb25zPworICAgIC8v cmVjb3JkLmFkZChSZWNvcmQudGFnc0ZpZWxkLCBjaHVuay5nZXRUYWdzKCkpOwogICAgIHJlY29y ZC5hZGQoUmVjb3JkLnNvdXJjZUZpZWxkLCBjaHVuay5nZXRTb3VyY2UoKSk7CiAgICAgcmVjb3Jk LmFkZChSZWNvcmQuYXBwbGljYXRpb25GaWVsZCwgY2h1bmsuZ2V0U3RyZWFtTmFtZSgpKTsKIAog ICB9CiAKICAgcHJvdGVjdGVkIHZvaWQgcmVzZXQoQ2h1bmsgY2h1bmspIHsKICAgICB0aGlzLmNo dW5rID0gY2h1bms7CiAgICAgdGhpcy5ieXRlcyA9IGNodW5rLmdldERhdGEoKTsKICAgICB0aGlz LnJlY29yZE9mZnNldHMgPSBjaHVuay5nZXRSZWNvcmRPZmZzZXRzKCk7CisgICAgdGhpcy5jaHVu a0NsdXN0ZXJOYW1lID0gUmVjb3JkVXRpbC5nZXRDbHVzdGVyTmFtZShjaHVuayk7CiAgICAgY3Vy cmVudFBvcyA9IDA7CiAgICAgc3RhcnRPZmZzZXQgPSAwOwogICB9CiAKICAgcHJvdGVjdGVkIGJv b2xlYW4gaGFzTmV4dCgpIHsKICAgICByZXR1cm4gKGN1cnJlbnRQb3MgPCByZWNvcmRPZmZzZXRz Lmxlbmd0aCk7CiAgIH0KIApJbmRleDogc3JjL2phdmEvb3JnL2FwYWNoZS9oYWRvb3AvY2h1a3dh L2V4dHJhY3Rpb24vZGVtdXgvQ2h1a3dhUmVjb3JkT3V0cHV0Rm9ybWF0LmphdmEKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0gc3JjL2phdmEvb3JnL2FwYWNoZS9oYWRvb3AvY2h1a3dhL2V4dHJhY3Rpb24vZGVtdXgv Q2h1a3dhUmVjb3JkT3V0cHV0Rm9ybWF0LmphdmEJKHJldmlzaW9uIDkxODkwMCkKKysrIHNyYy9q YXZhL29yZy9hcGFjaGUvaGFkb29wL2NodWt3YS9leHRyYWN0aW9uL2RlbXV4L0NodWt3YVJlY29y ZE91dHB1dEZvcm1hdC5qYXZhCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxNyArMjgsMTcgQEAKIAog cHVibGljIGNsYXNzIENodWt3YVJlY29yZE91dHB1dEZvcm1hdCBleHRlbmRzCiAgICAgTXVsdGlw bGVTZXF1ZW5jZUZpbGVPdXRwdXRGb3JtYXQ8Q2h1a3dhUmVjb3JkS2V5LCBDaHVrd2FSZWNvcmQ+ IHsKICAgc3RhdGljIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKENodWt3YVJlY29yZE91 dHB1dEZvcm1hdC5jbGFzcyk7CiAKICAgQE92ZXJyaWRlCiAgIHByb3RlY3RlZCBTdHJpbmcgZ2Vu ZXJhdGVGaWxlTmFtZUZvcktleVZhbHVlKENodWt3YVJlY29yZEtleSBrZXksCiAgICAgICBDaHVr d2FSZWNvcmQgcmVjb3JkLCBTdHJpbmcgbmFtZSkgewotICAgIFN0cmluZyBvdXRwdXQgPSBSZWNv cmRVdGlsLmdldENsdXN0ZXJOYW1lKHJlY29yZCkgKyAiLyIKKyAgICBTdHJpbmcgb3V0cHV0ID0g a2V5LmdldENsdXN0ZXJOYW1lKCkgKyAiLyIKICAgICAgICAgKyBrZXkuZ2V0UmVkdWNlVHlwZSgp ICsgIi8iICsga2V5LmdldFJlZHVjZVR5cGUoKQogICAgICAgICArIFV0aWwuZ2VuZXJhdGVUaW1l T3V0cHV0KHJlY29yZC5nZXRUaW1lKCkpOwogCiAgICAgLy8ge2xvZy5pbmZvKCJDaHVrd2FPdXRw dXRGb3JtYXQuZmlsZU5hbWU6IFsiICsgb3V0cHV0ICsiXSIpO30KIAogICAgIHJldHVybiBvdXRw dXQ7CiAgIH0KIH0KSW5kZXg6IHNyYy9qYXZhL29yZy9hcGFjaGUvaGFkb29wL2NodWt3YS9leHRy YWN0aW9uL2VuZ2luZS9DaHVrd2FSZWNvcmRLZXkuamF2YQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMvamF2 YS9vcmcvYXBhY2hlL2hhZG9vcC9jaHVrd2EvZXh0cmFjdGlvbi9lbmdpbmUvQ2h1a3dhUmVjb3Jk S2V5LmphdmEJKHJldmlzaW9uIDkxODkwMCkKKysrIHNyYy9qYXZhL29yZy9hcGFjaGUvaGFkb29w L2NodWt3YS9leHRyYWN0aW9uL2VuZ2luZS9DaHVrd2FSZWNvcmRLZXkuamF2YQkod29ya2luZyBj b3B5KQpAQCAtMTIsMTYgKzEyLDE3IEBACiAgICAgX3Jpb19yZWNUeXBlSW5mby5hZGRGaWVsZCgi cmVkdWNlVHlwZSIsCiAgICAgICAgIG9yZy5hcGFjaGUuaGFkb29wLnJlY29yZC5tZXRhLlR5cGVJ RC5TdHJpbmdUeXBlSUQpOwogICAgIF9yaW9fcmVjVHlwZUluZm8uYWRkRmllbGQoImtleSIsCiAg ICAgICAgIG9yZy5hcGFjaGUuaGFkb29wLnJlY29yZC5tZXRhLlR5cGVJRC5TdHJpbmdUeXBlSUQp OwogICB9CiAKICAgcHJpdmF0ZSBTdHJpbmcgcmVkdWNlVHlwZTsKICAgcHJpdmF0ZSBTdHJpbmcg a2V5OworICBwcml2YXRlIFN0cmluZyBjbHVzdGVyTmFtZT0idW5kZWZpbmVkIjsKIAogICBwdWJs aWMgQ2h1a3dhUmVjb3JkS2V5KCkgewogICB9CiAKICAgcHVibGljIENodWt3YVJlY29yZEtleShm aW5hbCBTdHJpbmcgcmVkdWNlVHlwZSwgZmluYWwgU3RyaW5nIGtleSkgewogICAgIHRoaXMucmVk dWNlVHlwZSA9IHJlZHVjZVR5cGU7CiAgICAgdGhpcy5rZXkgPSBrZXk7CiAgIH0KQEAgLTczLDE2 ICs3NCwyNCBAQAogICBwdWJsaWMgU3RyaW5nIGdldFJlZHVjZVR5cGUoKSB7CiAgICAgcmV0dXJu IHJlZHVjZVR5cGU7CiAgIH0KIAogICBwdWJsaWMgdm9pZCBzZXRSZWR1Y2VUeXBlKGZpbmFsIFN0 cmluZyByZWR1Y2VUeXBlKSB7CiAgICAgdGhpcy5yZWR1Y2VUeXBlID0gcmVkdWNlVHlwZTsKICAg fQogCisgIHB1YmxpYyBTdHJpbmcgZ2V0Q2x1c3Rlck5hbWUoKSB7CisgICAgcmV0dXJuIGNsdXN0 ZXJOYW1lOworICB9CisKKyAgcHVibGljIHZvaWQgc2V0Q2x1c3Rlck5hbWUoZmluYWwgU3RyaW5n IGNsdXN0ZXJOYW1lKSB7CisgICAgdGhpcy5jbHVzdGVyTmFtZSA9IGNsdXN0ZXJOYW1lOworICB9 CisKICAgcHVibGljIFN0cmluZyBnZXRLZXkoKSB7CiAgICAgcmV0dXJuIGtleTsKICAgfQogCiAg IHB1YmxpYyB2b2lkIHNldEtleShmaW5hbCBTdHJpbmcga2V5KSB7CiAgICAgdGhpcy5rZXkgPSBr ZXk7CiAgIH0KIApJbmRleDogc3JjL2phdmEvb3JnL2FwYWNoZS9oYWRvb3AvY2h1a3dhL2V4dHJh Y3Rpb24vZW5naW5lL1JlY29yZFV0aWwuamF2YQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMvamF2YS9vcmcv YXBhY2hlL2hhZG9vcC9jaHVrd2EvZXh0cmFjdGlvbi9lbmdpbmUvUmVjb3JkVXRpbC5qYXZhCShy ZXZpc2lvbiA5MTg5MDApCisrKyBzcmMvamF2YS9vcmcvYXBhY2hlL2hhZG9vcC9jaHVrd2EvZXh0 cmFjdGlvbi9lbmdpbmUvUmVjb3JkVXRpbC5qYXZhCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyNyAr MjYsMTYgQEAKIC8qKgogICogVmFyaW91cyB1dGlsaXR5IG1ldGhvZHMuCiAgKiAKICAqLwogcHVi bGljIGNsYXNzIFJlY29yZFV0aWwgewogICBzdGF0aWMgUGF0dGVybiBjbHVzdGVyUGF0dGVybiA9 IFBhdHRlcm4KICAgICAgIC5jb21waWxlKCIoLiopP2NsdXN0ZXI9XCIoLio/KVwiKC4qKT8iKTsK IAotICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRDbHVzdGVyTmFtZShSZWNvcmQgcmVjb3JkKSB7 Ci0gICAgU3RyaW5nIHRhZ3MgPSByZWNvcmQuZ2V0VmFsdWUoUmVjb3JkLnRhZ3NGaWVsZCk7Ci0g ICAgaWYgKHRhZ3MgIT0gbnVsbCkgewotICAgICAgTWF0Y2hlciBtYXRjaGVyID0gY2x1c3RlclBh dHRlcm4ubWF0Y2hlcih0YWdzKTsKLSAgICAgIGlmIChtYXRjaGVyLm1hdGNoZXMoKSkgewotICAg ICAgICByZXR1cm4gbWF0Y2hlci5ncm91cCgyKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1 cm4gInVuZGVmaW5lZCI7Ci0gIH0KICAgLyoqCiAgICAqIFVzZXMgYSBwcmVjb21waWxlZCBwYXR0 ZXJuLCBzbyB0aGVvcmV0aWNhbGx5IGZhc3RlciB0aGFuCiAgICAqIENodW5rLmdldFRhZygpLgog ICAgKiAKICAgICovCiAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldENsdXN0ZXJOYW1lKENodW5r IGNodW5rKSB7CiAgICAgU3RyaW5nIHRhZ3MgPSBjaHVuay5nZXRUYWdzKCk7CiAgICAgaWYgKHRh Z3MgIT0gbnVsbCkgewpJbmRleDogc3JjL2phdmEvb3JnL2FwYWNoZS9oYWRvb3AvY2h1a3dhL2Rh dGFsb2FkZXIvTWV0cmljRGF0YUxvYWRlci5qYXZhCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9qYXZhL29y Zy9hcGFjaGUvaGFkb29wL2NodWt3YS9kYXRhbG9hZGVyL01ldHJpY0RhdGFMb2FkZXIuamF2YQko cmV2aXNpb24gOTE4OTAwKQorKysgc3JjL2phdmEvb3JnL2FwYWNoZS9oYWRvb3AvY2h1a3dhL2Rh dGFsb2FkZXIvTWV0cmljRGF0YUxvYWRlci5qYXZhCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsMTcg KzE5MywxNyBAQAogICAgIGludCBudW1PZlJlY29yZHMgPSAwOwogICAgIHRyeSB7CiAgICAgICBQ YXR0ZXJuIHAgPSBQYXR0ZXJuLmNvbXBpbGUoIiguKilcXC0oXFxkKykkIik7CiAgICAgICBpbnQg YmF0Y2ggPSAwOwogICAgICAgd2hpbGUgKHJlYWRlci5uZXh0KGtleSwgcmVjb3JkKSkgewogICAg IAludW1PZlJlY29yZHMrKzsKICAgICAgICAgaWYoZmlyc3QpIHsgCiAgICAgICAgICAgdHJ5IHsK LSAgICAgICAgICAgIGNsdXN0ZXIgPSBSZWNvcmRVdGlsLmdldENsdXN0ZXJOYW1lKHJlY29yZCk7 CisgICAgICAgICAgICBjbHVzdGVyID0ga2V5LmdldENsdXN0ZXJOYW1lKCk7CiAgICAgICAgICAg ICBpbml0RW52KGNsdXN0ZXIpOwogICAgICAgICAgICAgZmlyc3Q9ZmFsc2U7CiAgICAgICAgICAg fSBjYXRjaChFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIGxvZy5lcnJvcigiSW5pdGlhbGl6 YXRpb24gZmFpbGVkIGZvcjogIitjbHVzdGVyKyIuICBQbGVhc2UgY2hlY2sgamRiYyBjb25maWd1 cmF0aW9uLiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgIH0KICAgICAg ICAgfQogICAgICAgICBTdHJpbmcgc3FsVGltZSA9IERhdGFiYXNlV3JpdGVyLmZvcm1hdFRpbWVT dGFtcChyZWNvcmQuZ2V0VGltZSgpKTsK --00032555a73a62ed1e04815c6740--