From 3cda6829ccbbfaac08092773b55c9ee315dd5bbd Mon Sep 17 00:00:00 2001 From: Stefan Podkowinski Date: Tue, 26 Jul 2016 16:42:06 +0200 Subject: [PATCH] Add JVM metrics for custom metrics reporter patch by Stefan Podkowinski; reviewed by tjake for CASSANDRA-12312 --- CHANGES.txt | 3 +- build.xml | 2 + lib/licenses/metrics-jvm-3.1.0.txt | 202 ++++++++++++++++++ lib/metrics-jvm-3.1.0.jar | Bin 0 -> 35907 bytes .../cassandra/service/CassandraDaemon.java | 14 +- 5 files changed, 217 insertions(+), 4 deletions(-) create mode 100644 lib/licenses/metrics-jvm-3.1.0.txt create mode 100644 lib/metrics-jvm-3.1.0.jar diff --git a/CHANGES.txt b/CHANGES.txt index 7fcf373a96..67c79de8c7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.2.8 + * Restore JVM metric export for metric reporters (CASSANDRA-12312) * Release sstables of failed stream sessions only when outgoing transfers are finished (CASSANDRA-11345) * Revert CASSANDRA-11427 (CASSANDRA-12351) * Wait for tracing events before returning response and query at same consistency level client side (CASSANDRA-11465) @@ -11,8 +12,6 @@ * MemoryUtil.getShort() should return an unsigned short also for architectures not supporting unaligned memory accesses (CASSANDRA-11973) * Don't write shadowed range tombstone (CASSANDRA-12030) Merged from 2.1: -======= -2.1.16 * Disable passing control to post-flush after flush failure to prevent data loss (CASSANDRA-11828) * Allow STCS-in-L0 compactions to reduce scope with LCS (CASSANDRA-12040) * cannot use cql since upgrading python to 2.7.11+ (CASSANDRA-11850) diff --git a/build.xml b/build.xml index 1009311f82..1441194cbb 100644 --- a/build.xml +++ b/build.xml @@ -396,6 +396,7 @@ + @@ -545,6 +546,7 @@ + diff --git a/lib/licenses/metrics-jvm-3.1.0.txt b/lib/licenses/metrics-jvm-3.1.0.txt new file mode 100644 index 0000000000..e4ba40426d --- /dev/null +++ b/lib/licenses/metrics-jvm-3.1.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2010-2012 Coda Hale and Yammer, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/lib/metrics-jvm-3.1.0.jar b/lib/metrics-jvm-3.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..1e941f836063980d5ae5e7ffd2609d268f6ce389 GIT binary patch literal 35907 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