From ed67ad6ee183d4e24c08c6c36a5a67ccba2662cf Mon Sep 17 00:00:00 2001 From: Elliot West Date: Mon, 11 Dec 2023 11:09:38 +0000 Subject: [PATCH 01/13] Open Telemetry tracing This changes adds an Open Telemetry tracing driver. To make this more effective, it also decomposes OperationTrace events so that the start and end of the event can be managed separately. --- .../curator/drivers/AdvancedTracerDriver.java | 37 +++- .../curator/drivers/OperationTrace.java | 50 +++-- curator-drivers/LICENSE | 202 ++++++++++++++++++ curator-drivers/NOTICE | 5 + curator-drivers/open-telemetry/LICENSE | 202 ++++++++++++++++++ curator-drivers/open-telemetry/NOTICE | 5 + curator-drivers/open-telemetry/pom.xml | 78 +++++++ .../OpenTelemetryTracingDriver.java | 185 ++++++++++++++++ .../OpenTelemetryTracingDriverTest.java | 125 +++++++++++ .../target/classes/META-INF/LICENSE | 202 ++++++++++++++++++ .../target/classes/META-INF/NOTICE | 5 + curator-drivers/pom.xml | 46 ++++ pom.xml | 1 + 13 files changed, 1120 insertions(+), 23 deletions(-) create mode 100644 curator-drivers/LICENSE create mode 100644 curator-drivers/NOTICE create mode 100644 curator-drivers/open-telemetry/LICENSE create mode 100644 curator-drivers/open-telemetry/NOTICE create mode 100644 curator-drivers/open-telemetry/pom.xml create mode 100644 curator-drivers/open-telemetry/src/main/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriver.java create mode 100644 curator-drivers/open-telemetry/src/test/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriverTest.java create mode 100644 curator-drivers/open-telemetry/target/classes/META-INF/LICENSE create mode 100644 curator-drivers/open-telemetry/target/classes/META-INF/NOTICE create mode 100644 curator-drivers/pom.xml diff --git a/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java b/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java index 2644f2fa0a..b24874bda3 100644 --- a/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java +++ b/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java @@ -26,18 +26,45 @@ */ public abstract class AdvancedTracerDriver implements TracerDriver { + /** - * Record the given trace event + * Records the start of a new operation that will later complete successfully or erroneously via a call to + * {@link #endTrace(OperationTrace)}. The call may optionally return driver specific state which can be + * accessed in {@link #endTrace(OperationTrace) endTrace} via {@link OperationTrace#getDriverTrace()}. The + * driver implementation is responsible for checking that any state returned is valid. Additionally, while it is + * expected that all calls to {@code startTrace} will have a corresponding call to + * {@link #endTrace(OperationTrace) endTrace}, it is the responsibility of the driver implementation to manage any + * leaking of non-terminal {@link OperationTrace OperationTraces}. + * + * @param trace the metrics of the operation + * @return The internal trace representation of the driver implementation. Driver dependent, may be {@code null}. + */ + public abstract Object startTrace(OperationTrace trace); + + /** + * Signals the completion, successful or otherwise, of the specified {@link OperationTrace}. * * @param trace the metrics of the operation */ - public abstract void addTrace(OperationTrace trace); + public abstract void endTrace(OperationTrace trace); /** - * Add to a named counter + * Record the given trace event after the completion of the event. This is equivalent to calling + * {@link #startTrace(OperationTrace) startTrace} followed by {@link #endTrace(OperationTrace) endTrace}. + * + * @param trace the metrics of the operation + * @deprecated Prefer the use of {@link #startTrace(OperationTrace)} followed by {@link #endTrace(OperationTrace)} + */ + @Deprecated + public void addTrace(OperationTrace trace) { + startTrace(trace); + endTrace(trace); + } + + /** + * Record the given trace event * - * @param name name of the counter - * @param increment amount to increment + * @param trace name of the counter */ public abstract void addEvent(EventTrace trace); diff --git a/curator-client/src/main/java/org/apache/curator/drivers/OperationTrace.java b/curator-client/src/main/java/org/apache/curator/drivers/OperationTrace.java index f84c1c56a7..6c55acb74b 100644 --- a/curator-client/src/main/java/org/apache/curator/drivers/OperationTrace.java +++ b/curator-client/src/main/java/org/apache/curator/drivers/OperationTrace.java @@ -19,13 +19,13 @@ package org.apache.curator.drivers; -import org.apache.curator.drivers.TracerDriver; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.data.Stat; -import java.io.UnsupportedEncodingException; import java.util.concurrent.TimeUnit; +import static java.nio.charset.StandardCharsets.UTF_8; + /** * Used to trace the metrics of a certain Zookeeper operation. */ @@ -33,17 +33,18 @@ public class OperationTrace { private final String name; private final TracerDriver driver; - + private final long startTimeNanos = System.nanoTime(); + private final long sessionId; + private long endTimeNanos = -1L; private int returnCode = KeeperException.Code.OK.intValue(); private long latencyMs; private long requestBytesLength; private long responseBytesLength; private String path; private boolean withWatcher; - private long sessionId; private Stat stat; - - private final long startTimeNanos = System.nanoTime(); + // This would ideally be a parameterised type, but we do not wish to break the existing API at this time. + private Object driverTrace; public OperationTrace(String name, TracerDriver driver) { this(name, driver, -1); @@ -53,6 +54,9 @@ public OperationTrace(String name, TracerDriver driver, long sessionId) { this.name = name; this.driver = driver; this.sessionId = sessionId; + if (this.driver instanceof AdvancedTracerDriver) { + driverTrace = ((AdvancedTracerDriver) this.driver).startTrace(this); + } } public OperationTrace setReturnCode(int returnCode) { @@ -66,17 +70,11 @@ public OperationTrace setRequestBytesLength(long length) { } public OperationTrace setRequestBytesLength(String data) { - if (data == null) { + if (data == null) { + return this; + } + this.setRequestBytesLength(data.getBytes(UTF_8).length); return this; - } - - try { - this.setRequestBytesLength(data.getBytes("UTF-8").length); - } catch (UnsupportedEncodingException e) { - // Ignore the exception. - } - - return this; } public OperationTrace setRequestBytesLength(byte[] data) { @@ -115,6 +113,10 @@ public OperationTrace setStat(Stat stat) { return this; } + public Object getDriverTrace() { + return driverTrace; + } + public String getName() { return this.name; } @@ -151,11 +153,23 @@ public Stat getStat() { return this.stat; } + public long getStartTimeNanos() { + return this.startTimeNanos; + } + + public long getEndTimeNanos() { + if (endTimeNanos < startTimeNanos) { + throw new IllegalStateException("End time requested but trace has not yet ended."); + } + return this.endTimeNanos; + } + public void commit() { - long elapsed = System.nanoTime() - startTimeNanos; + endTimeNanos = System.nanoTime(); + long elapsed = endTimeNanos - startTimeNanos; this.latencyMs = TimeUnit.MILLISECONDS.convert(elapsed, TimeUnit.NANOSECONDS); if (this.driver instanceof AdvancedTracerDriver) { - ((AdvancedTracerDriver) this.driver).addTrace(this); + ((AdvancedTracerDriver) this.driver).endTrace(this); } else { this.driver.addTrace(this.name, elapsed, TimeUnit.NANOSECONDS); } diff --git a/curator-drivers/LICENSE b/curator-drivers/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/curator-drivers/LICENSE @@ -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 [yyyy] [name of copyright owner] + + 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/curator-drivers/NOTICE b/curator-drivers/NOTICE new file mode 100644 index 0000000000..0222626a51 --- /dev/null +++ b/curator-drivers/NOTICE @@ -0,0 +1,5 @@ +Apache Curator +Copyright 2013-2023 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/open-telemetry/LICENSE b/curator-drivers/open-telemetry/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/curator-drivers/open-telemetry/LICENSE @@ -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 [yyyy] [name of copyright owner] + + 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/curator-drivers/open-telemetry/NOTICE b/curator-drivers/open-telemetry/NOTICE new file mode 100644 index 0000000000..0222626a51 --- /dev/null +++ b/curator-drivers/open-telemetry/NOTICE @@ -0,0 +1,5 @@ +Apache Curator +Copyright 2013-2023 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/open-telemetry/pom.xml b/curator-drivers/open-telemetry/pom.xml new file mode 100644 index 0000000000..d942857097 --- /dev/null +++ b/curator-drivers/open-telemetry/pom.xml @@ -0,0 +1,78 @@ + + + + + 4.0.0 + + + org.apache.curator + curator-drivers + 5.5.0 + + + curator-drivers-open-telemetry + 5.5.0 + + Curator OpenTelemetry Tracing Driver + A tracing driver driver that emits OpenTelemetry spans. + 2023 + + + 1.31.0 + + + + + org.apache.curator + curator-client + ${project.version} + + + io.opentelemetry + opentelemetry-api + ${opentelemetry.version} + + + io.opentelemetry + opentelemetry-sdk-testing + ${opentelemetry.version} + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.slf4j + slf4j-log4j12 + test + + + org.assertj + assertj-core + test + + + \ No newline at end of file diff --git a/curator-drivers/open-telemetry/src/main/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriver.java b/curator-drivers/open-telemetry/src/main/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriver.java new file mode 100644 index 0000000000..5465f2c4b5 --- /dev/null +++ b/curator-drivers/open-telemetry/src/main/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriver.java @@ -0,0 +1,185 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +package org.apache.curator.drivers.opentelemetry; + +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.LATENCY_MS_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.PATH_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.REQUEST_BYTES_LENGTH_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.RESPONSE_BYTES_LENGTH_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.SESSION_ID_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_AVERSION_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_CTIME_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_CVERSION_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_CZXID_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_DATA_LENGTH_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_EPHEMERAL_OWNER_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_MTIME_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_MZXID_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_NUM_CHILDREN_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_PZXID_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_VERSION_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.WITH_WATCHER_ATTRIBUTE; +import static java.util.concurrent.TimeUnit.NANOSECONDS; + +import org.apache.curator.drivers.AdvancedTracerDriver; +import org.apache.curator.drivers.EventTrace; +import org.apache.curator.drivers.OperationTrace; +import org.apache.zookeeper.KeeperException; + +import com.google.common.base.Preconditions; + +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.StatusCode; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Scope; + +/** + * Converts Apache Curator traces and events to OpenTelemetry spans, and then publishes these to the supplied OTel + * {@link Tracer}. Curator events are added to whatever OTel deems as the {@link Span#current()} current span}. Note + * that in the case of attributes, this implementation takes the approach of capturing deviations from the baseline. + * For example, it will not register attributes if they have the default value, only if the value has diverged from it. + */ +public class OpenTelemetryTracingDriver extends AdvancedTracerDriver { + + interface AttributeKeys { + AttributeKey PATH_ATTRIBUTE = AttributeKey.stringKey("path"); + AttributeKey SESSION_ID_ATTRIBUTE = AttributeKey.longKey("sessionId"); + AttributeKey LATENCY_MS_ATTRIBUTE = AttributeKey.longKey("latencyMs"); + AttributeKey REQUEST_BYTES_LENGTH_ATTRIBUTE = AttributeKey.longKey("requestBytesLength"); + AttributeKey RESPONSE_BYTES_LENGTH_ATTRIBUTE = AttributeKey.longKey("responseBytesLength"); + AttributeKey WITH_WATCHER_ATTRIBUTE = AttributeKey.booleanKey("withWatcher"); + AttributeKey STAT_AVERSION_ATTRIBUTE = AttributeKey.longKey("stat.Aversion"); + AttributeKey STAT_CTIME_ATTRIBUTE = AttributeKey.longKey("stat.Ctime"); + AttributeKey STAT_CVERSION_ATTRIBUTE = AttributeKey.longKey("stat.Cversion"); + AttributeKey STAT_CZXID_ATTRIBUTE = AttributeKey.longKey("stat.Czxid"); + AttributeKey STAT_DATA_LENGTH_ATTRIBUTE = AttributeKey.longKey("stat.DataLength"); + AttributeKey STAT_EPHEMERAL_OWNER_ATTRIBUTE = AttributeKey.longKey("stat.EphemeralOwner"); + AttributeKey STAT_MTIME_ATTRIBUTE = AttributeKey.longKey("stat.Mtime"); + AttributeKey STAT_MZXID_ATTRIBUTE = AttributeKey.longKey("stat.Mzxid"); + AttributeKey STAT_NUM_CHILDREN_ATTRIBUTE = AttributeKey.longKey("stat.NumChildren"); + AttributeKey STAT_PZXID_ATTRIBUTE = AttributeKey.longKey("stat.Pzxid"); + AttributeKey STAT_VERSION_ATTRIBUTE = AttributeKey.longKey("stat.Version"); + } + + private final Tracer tracer; + + public OpenTelemetryTracingDriver(Tracer tracer) { + Preconditions.checkNotNull(tracer); + this.tracer = tracer; + } + + @Override + public Object startTrace(OperationTrace trace) { + Preconditions.checkNotNull(trace); + Span span = tracer.spanBuilder(trace.getName()) + .setStartTimestamp(trace.getStartTimeNanos(), NANOSECONDS) + .startSpan(); + + if (trace.getPath() != null) { + span.setAttribute(PATH_ATTRIBUTE, trace.getPath()); + } + if (trace.isWithWatcher()) { + span.setAttribute(WITH_WATCHER_ATTRIBUTE, true); + } + if (trace.getSessionId() >= 0) { + span.setAttribute(SESSION_ID_ATTRIBUTE, trace.getSessionId()); + } + if (trace.getRequestBytesLength() > 0) { + span.setAttribute(REQUEST_BYTES_LENGTH_ATTRIBUTE, trace.getRequestBytesLength()); + } + // We will close this at in endTrace + @SuppressWarnings("MustBeClosedChecker") + Scope scope = span.makeCurrent(); + return new SpanScope(span, scope); + } + + @Override + public void endTrace(OperationTrace trace) { + Preconditions.checkNotNull(trace); + SpanScope spanScope = (SpanScope) trace.getDriverTrace(); + Span span = spanScope.getSpan(); + + if (trace.getReturnCode() == KeeperException.Code.OK.intValue()) { + span.setStatus(StatusCode.OK); + } else { + span.setStatus(StatusCode.ERROR); + span.recordException( + KeeperException.create(KeeperException.Code.get(trace.getReturnCode())), + Attributes.of(PATH_ATTRIBUTE, trace.getPath()) + ); + } + + span.setAttribute(LATENCY_MS_ATTRIBUTE, trace.getRequestBytesLength()); + + if (trace.getResponseBytesLength() > 0) { + span.setAttribute(RESPONSE_BYTES_LENGTH_ATTRIBUTE, trace.getResponseBytesLength()); + } + + if (trace.getStat() != null) { + span.setAttribute(STAT_AVERSION_ATTRIBUTE, trace.getStat().getAversion()); + span.setAttribute(STAT_CTIME_ATTRIBUTE, trace.getStat().getCtime()); + span.setAttribute(STAT_CVERSION_ATTRIBUTE, trace.getStat().getCversion()); + span.setAttribute(STAT_CZXID_ATTRIBUTE, trace.getStat().getCzxid()); + span.setAttribute(STAT_DATA_LENGTH_ATTRIBUTE, trace.getStat().getDataLength()); + span.setAttribute(STAT_EPHEMERAL_OWNER_ATTRIBUTE, trace.getStat().getEphemeralOwner()); + span.setAttribute(STAT_MTIME_ATTRIBUTE, trace.getStat().getMtime()); + span.setAttribute(STAT_MZXID_ATTRIBUTE, trace.getStat().getMzxid()); + span.setAttribute(STAT_NUM_CHILDREN_ATTRIBUTE, trace.getStat().getNumChildren()); + span.setAttribute(STAT_PZXID_ATTRIBUTE, trace.getStat().getPzxid()); + span.setAttribute(STAT_VERSION_ATTRIBUTE, trace.getStat().getVersion()); + } + + span.end(trace.getEndTimeNanos(), NANOSECONDS); + spanScope.getScope().close(); + } + + @Override + public void addEvent(EventTrace trace) { + Preconditions.checkNotNull(trace); + Span span = Span.current(); + Attributes attrs; + if (trace.getSessionId() >= 0) { + attrs = Attributes.of(SESSION_ID_ATTRIBUTE, trace.getSessionId()); + } else { + attrs = Attributes.empty(); + } + span.addEvent(trace.getName(), attrs); + } + + static final class SpanScope { + private final Span span; + private final Scope scope; + + SpanScope(Span span, Scope scope) { + this.span = span; + this.scope = scope; + } + + Span getSpan() { + return span; + } + + Scope getScope() { + return scope; + } + } +} diff --git a/curator-drivers/open-telemetry/src/test/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriverTest.java b/curator-drivers/open-telemetry/src/test/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriverTest.java new file mode 100644 index 0000000000..7f0d432b91 --- /dev/null +++ b/curator-drivers/open-telemetry/src/test/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriverTest.java @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +package org.apache.curator.drivers.opentelemetry; + +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.SESSION_ID_ATTRIBUTE; +import static org.assertj.core.api.Assertions.assertThat; + +import org.apache.curator.drivers.EventTrace; +import org.apache.curator.drivers.OperationTrace; +import org.apache.zookeeper.KeeperException; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Scope; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; +import io.opentelemetry.sdk.trace.data.StatusData; + +class OpenTelemetryTracingDriverTest { + @RegisterExtension + static final OpenTelemetryExtension otel = OpenTelemetryExtension.create(); + + private final Tracer tracer = otel.getOpenTelemetry().getTracer("test"); + private final OpenTelemetryTracingDriver driver = new OpenTelemetryTracingDriver(tracer); + + @Test + void testAddTrace_ok() { + OperationTrace trace = new OperationTrace("op", driver, 1L); + trace.setPath("path"); + trace.setReturnCode(KeeperException.Code.OK.intValue()); + trace.commit(); + + otel.assertTraces().hasTracesSatisfyingExactly( + t -> t.hasSpansSatisfyingExactly(s -> { + s.hasName("op"); + s.hasStatus(StatusData.ok()); + s.hasAttribute(SESSION_ID_ATTRIBUTE, 1L); + s.hasKind(SpanKind.INTERNAL); + s.hasEnded(); + }) + ); + } + + @Test + void testAddTrace_fail() { + OperationTrace trace = new OperationTrace("op", driver); + trace.setPath("path"); + trace.setReturnCode(KeeperException.Code.NOAUTH.intValue()); + trace.commit(); + + otel.assertTraces().hasTracesSatisfyingExactly( + t -> t.hasSpansSatisfyingExactly(s -> { + s.hasStatus(StatusData.error()); + s.hasException(new KeeperException.NoAuthException()); + }) + ); + } + + @Test + void testAddEvent() { + Span span = tracer.spanBuilder("test-span").startSpan(); + try (Scope ignored = span.makeCurrent()) { + new EventTrace("session-expired", driver).commit(); + span.end(); + + otel.assertTraces().hasTracesSatisfyingExactly( + t -> t.hasSpansSatisfyingExactly( + s -> s.hasEventsSatisfyingExactly(e -> e.hasName("session-expired")) + ) + ); + } + } + + @Test + void testAddEvent_noCurrentSpan() { + new EventTrace("session-expired", driver).commit(); + otel.assertTraces().isEmpty(); + } + + @Test + void testAddTraceAndEvent() { + OperationTrace trace = new OperationTrace("op", driver, 1L); + trace.setPath("path"); + + new EventTrace("session-expired", driver, 1L).commit(); + + trace.setReturnCode(KeeperException.Code.SESSIONEXPIRED.intValue()); + trace.commit(); + + otel.assertTraces().hasTracesSatisfyingExactly( + t -> t.hasSpansSatisfyingExactly(s -> { + s.hasStatus(StatusData.error()); + s.hasEventsSatisfyingExactly( + e -> { + e.hasName("session-expired"); + e.hasAttributesSatisfying(a -> { + assertThat(a.get(SESSION_ID_ATTRIBUTE)).isEqualTo(1L); + assertThat(a.size()).isEqualTo(1L); + }); + }, + e -> e.hasName("exception") + ); + }) + ); + } +} diff --git a/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE b/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE @@ -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 [yyyy] [name of copyright owner] + + 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/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE b/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE new file mode 100644 index 0000000000..0222626a51 --- /dev/null +++ b/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE @@ -0,0 +1,5 @@ +Apache Curator +Copyright 2013-2023 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/pom.xml b/curator-drivers/pom.xml new file mode 100644 index 0000000000..ac8361c8c5 --- /dev/null +++ b/curator-drivers/pom.xml @@ -0,0 +1,46 @@ + + + + + 4.0.0 + + + org.apache.curator + apache-curator + 5.5.0 + + + curator-drivers + 5.5.0 + pom + + Curator Driver Implementations + A collection of Curator driver integrations. + 2023 + + + open-telemetry + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index bcf7285c09..ec9267bb6b 100644 --- a/pom.xml +++ b/pom.xml @@ -363,6 +363,7 @@ curator-x-async curator-test-zk35 curator-test-zk36 + curator-drivers From 60816223cc9b35d76477b47bb791edae2bb399e8 Mon Sep 17 00:00:00 2001 From: Elliot West Date: Mon, 11 Dec 2023 12:04:12 +0000 Subject: [PATCH 02/13] Adjust indent --- .../java/org/apache/curator/drivers/AdvancedTracerDriver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java b/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java index 9c2969eb4b..ecd7a204c7 100644 --- a/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java +++ b/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java @@ -54,7 +54,7 @@ public abstract class AdvancedTracerDriver implements TracerDriver { * @deprecated Prefer the use of {@link #startTrace(OperationTrace)} followed by {@link #endTrace(OperationTrace)} */ @Deprecated - public void addTrace(OperationTrace trace) { + public void addTrace(OperationTrace trace) { startTrace(trace); endTrace(trace); } From be1a37e6d8299213ca5e087f4b1453d16614605e Mon Sep 17 00:00:00 2001 From: Elliot West Date: Mon, 11 Dec 2023 19:44:41 +0000 Subject: [PATCH 03/13] Fix version --- curator-drivers/open-telemetry/pom.xml | 4 ++-- curator-drivers/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/curator-drivers/open-telemetry/pom.xml b/curator-drivers/open-telemetry/pom.xml index d942857097..5b7aab1894 100644 --- a/curator-drivers/open-telemetry/pom.xml +++ b/curator-drivers/open-telemetry/pom.xml @@ -28,11 +28,11 @@ org.apache.curator curator-drivers - 5.5.0 + 5.5.1-SNAPSHOT curator-drivers-open-telemetry - 5.5.0 + 5.5.1-SNAPSHOT Curator OpenTelemetry Tracing Driver A tracing driver driver that emits OpenTelemetry spans. diff --git a/curator-drivers/pom.xml b/curator-drivers/pom.xml index ac8361c8c5..d4b0cd35c3 100644 --- a/curator-drivers/pom.xml +++ b/curator-drivers/pom.xml @@ -28,11 +28,11 @@ org.apache.curator apache-curator - 5.5.0 + 5.5.1-SNAPSHOT curator-drivers - 5.5.0 + 5.5.1-SNAPSHOT pom Curator Driver Implementations From ea04dc1acaca68e53aee9bfc7e72f829a705c5c9 Mon Sep 17 00:00:00 2001 From: Elliot West Date: Wed, 13 Dec 2023 15:46:44 +0000 Subject: [PATCH 04/13] Correct gitignore --- .gitignore | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e263d97231..56389e3fa7 100644 --- a/.gitignore +++ b/.gitignore @@ -41,11 +41,9 @@ Thumbs.db .gradle # Build output directies -/target -*/target -/build -*/build -*/bin +target/ +build/ +bin/ # IntelliJ specific files/directories out From 111f3a6bdcd562db0493e52243e5cec933cc36ef Mon Sep 17 00:00:00 2001 From: shenjianeng <30279020+shenjianeng@users.noreply.github.com> Date: Wed, 20 Dec 2023 12:44:37 +0800 Subject: [PATCH 05/13] CURATOR-262. Fix sleepMs overflow (#490) Co-authored-by: shenjianeng --- .../java/org/apache/curator/retry/ExponentialBackoffRetry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/curator-client/src/main/java/org/apache/curator/retry/ExponentialBackoffRetry.java b/curator-client/src/main/java/org/apache/curator/retry/ExponentialBackoffRetry.java index 929b3b372f..44aac9bde3 100644 --- a/curator-client/src/main/java/org/apache/curator/retry/ExponentialBackoffRetry.java +++ b/curator-client/src/main/java/org/apache/curator/retry/ExponentialBackoffRetry.java @@ -64,7 +64,7 @@ public int getBaseSleepTimeMs() { @Override protected long getSleepTimeMs(int retryCount, long elapsedTimeMs) { // copied from Hadoop's RetryPolicies.java - long sleepMs = baseSleepTimeMs * Math.max(1, random.nextInt(1 << (retryCount + 1))); + long sleepMs = (long) baseSleepTimeMs * Math.max(1, random.nextInt(1 << (retryCount + 1))); if (sleepMs > maxSleepMs) { log.warn(String.format("Sleep extension too large (%d). Pinning to %d", sleepMs, maxSleepMs)); sleepMs = maxSleepMs; From 74ff333500b8e9ea6b299f4759303aad53877636 Mon Sep 17 00:00:00 2001 From: tison Date: Tue, 2 Jan 2024 22:36:29 +0800 Subject: [PATCH 06/13] CURATOR-697. Upgrade Apache Parent POM to 31 (#495) Signed-off-by: tison --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 67a2f39229..f9888c0559 100644 --- a/pom.xml +++ b/pom.xml @@ -26,7 +26,7 @@ org.apache apache - 21 + 31 org.apache.curator From 4210bd712faaff85849d93baea913e6e3c6ba35d Mon Sep 17 00:00:00 2001 From: tison Date: Wed, 3 Jan 2024 00:31:09 +0800 Subject: [PATCH 07/13] [maven-release-plugin] prepare release apache-curator-5.6.0 --- curator-client/pom.xml | 4 ++-- curator-examples/pom.xml | 2 +- curator-framework/pom.xml | 4 ++-- curator-recipes/pom.xml | 4 ++-- curator-test-zk35/pom.xml | 2 +- curator-test-zk36/pom.xml | 2 +- curator-test/pom.xml | 4 ++-- curator-x-async/pom.xml | 2 +- curator-x-discovery-server/pom.xml | 4 ++-- curator-x-discovery/pom.xml | 4 ++-- pom.xml | 10 +++++----- 11 files changed, 21 insertions(+), 21 deletions(-) diff --git a/curator-client/pom.xml b/curator-client/pom.xml index f3192be955..bcfb1e135b 100644 --- a/curator-client/pom.xml +++ b/curator-client/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 curator-client - 5.5.1-SNAPSHOT + 5.6.0 bundle Curator Client diff --git a/curator-examples/pom.xml b/curator-examples/pom.xml index f5b5c4815e..b860593fd1 100644 --- a/curator-examples/pom.xml +++ b/curator-examples/pom.xml @@ -26,7 +26,7 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 curator-examples diff --git a/curator-framework/pom.xml b/curator-framework/pom.xml index 779b0d1802..3b291fa98c 100644 --- a/curator-framework/pom.xml +++ b/curator-framework/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 curator-framework - 5.5.1-SNAPSHOT + 5.6.0 bundle Curator Framework diff --git a/curator-recipes/pom.xml b/curator-recipes/pom.xml index 60a8622776..f548ea4e45 100644 --- a/curator-recipes/pom.xml +++ b/curator-recipes/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 curator-recipes - 5.5.1-SNAPSHOT + 5.6.0 bundle Curator Recipes diff --git a/curator-test-zk35/pom.xml b/curator-test-zk35/pom.xml index 84cf0df0e2..b48e5b933b 100644 --- a/curator-test-zk35/pom.xml +++ b/curator-test-zk35/pom.xml @@ -24,7 +24,7 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 4.0.0 diff --git a/curator-test-zk36/pom.xml b/curator-test-zk36/pom.xml index 23f5fd0e42..a603cbbe4c 100644 --- a/curator-test-zk36/pom.xml +++ b/curator-test-zk36/pom.xml @@ -24,7 +24,7 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 4.0.0 diff --git a/curator-test/pom.xml b/curator-test/pom.xml index 64d99fabfa..a0aa4c2525 100644 --- a/curator-test/pom.xml +++ b/curator-test/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 curator-test - 5.5.1-SNAPSHOT + 5.6.0 Curator Testing Unit testing utilities. diff --git a/curator-x-async/pom.xml b/curator-x-async/pom.xml index f9e921a450..06584361e4 100644 --- a/curator-x-async/pom.xml +++ b/curator-x-async/pom.xml @@ -24,7 +24,7 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 4.0.0 diff --git a/curator-x-discovery-server/pom.xml b/curator-x-discovery-server/pom.xml index 0695f88815..0c287ade50 100644 --- a/curator-x-discovery-server/pom.xml +++ b/curator-x-discovery-server/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 curator-x-discovery-server - 5.5.1-SNAPSHOT + 5.6.0 bundle Curator Service Discovery Server diff --git a/curator-x-discovery/pom.xml b/curator-x-discovery/pom.xml index 229fce2fe8..61870ccf96 100644 --- a/curator-x-discovery/pom.xml +++ b/curator-x-discovery/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 curator-x-discovery - 5.5.1-SNAPSHOT + 5.6.0 bundle Curator Service Discovery diff --git a/pom.xml b/pom.xml index f9888c0559..46dd3940ec 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.0 pom Apache Curator @@ -125,7 +125,7 @@ scm:git:https://gitbox.apache.org/repos/asf/curator.git scm:git:https://gitbox.apache.org/repos/asf/curator.git - apache-curator-5.4.0 + apache-curator-5.6.0 @@ -942,9 +942,9 @@ \#| - - - + + + true 4 From 2f1fc4ebe5dd1ae451bc801b65dbe29129839f5e Mon Sep 17 00:00:00 2001 From: tison Date: Wed, 3 Jan 2024 00:31:09 +0800 Subject: [PATCH 08/13] [maven-release-plugin] prepare for next development iteration --- curator-client/pom.xml | 4 ++-- curator-examples/pom.xml | 2 +- curator-framework/pom.xml | 4 ++-- curator-recipes/pom.xml | 4 ++-- curator-test-zk35/pom.xml | 2 +- curator-test-zk36/pom.xml | 2 +- curator-test/pom.xml | 4 ++-- curator-x-async/pom.xml | 2 +- curator-x-discovery-server/pom.xml | 4 ++-- curator-x-discovery/pom.xml | 4 ++-- pom.xml | 4 ++-- 11 files changed, 18 insertions(+), 18 deletions(-) diff --git a/curator-client/pom.xml b/curator-client/pom.xml index bcfb1e135b..04ce3fca51 100644 --- a/curator-client/pom.xml +++ b/curator-client/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT curator-client - 5.6.0 + 5.6.1-SNAPSHOT bundle Curator Client diff --git a/curator-examples/pom.xml b/curator-examples/pom.xml index b860593fd1..e55fd769b9 100644 --- a/curator-examples/pom.xml +++ b/curator-examples/pom.xml @@ -26,7 +26,7 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT curator-examples diff --git a/curator-framework/pom.xml b/curator-framework/pom.xml index 3b291fa98c..706c000935 100644 --- a/curator-framework/pom.xml +++ b/curator-framework/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT curator-framework - 5.6.0 + 5.6.1-SNAPSHOT bundle Curator Framework diff --git a/curator-recipes/pom.xml b/curator-recipes/pom.xml index f548ea4e45..927af0c285 100644 --- a/curator-recipes/pom.xml +++ b/curator-recipes/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT curator-recipes - 5.6.0 + 5.6.1-SNAPSHOT bundle Curator Recipes diff --git a/curator-test-zk35/pom.xml b/curator-test-zk35/pom.xml index b48e5b933b..d9bfaf906a 100644 --- a/curator-test-zk35/pom.xml +++ b/curator-test-zk35/pom.xml @@ -24,7 +24,7 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT 4.0.0 diff --git a/curator-test-zk36/pom.xml b/curator-test-zk36/pom.xml index a603cbbe4c..32261524de 100644 --- a/curator-test-zk36/pom.xml +++ b/curator-test-zk36/pom.xml @@ -24,7 +24,7 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT 4.0.0 diff --git a/curator-test/pom.xml b/curator-test/pom.xml index a0aa4c2525..ad61c1c313 100644 --- a/curator-test/pom.xml +++ b/curator-test/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT curator-test - 5.6.0 + 5.6.1-SNAPSHOT Curator Testing Unit testing utilities. diff --git a/curator-x-async/pom.xml b/curator-x-async/pom.xml index 06584361e4..297e096ed9 100644 --- a/curator-x-async/pom.xml +++ b/curator-x-async/pom.xml @@ -24,7 +24,7 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT 4.0.0 diff --git a/curator-x-discovery-server/pom.xml b/curator-x-discovery-server/pom.xml index 0c287ade50..3f80af0eb5 100644 --- a/curator-x-discovery-server/pom.xml +++ b/curator-x-discovery-server/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT curator-x-discovery-server - 5.6.0 + 5.6.1-SNAPSHOT bundle Curator Service Discovery Server diff --git a/curator-x-discovery/pom.xml b/curator-x-discovery/pom.xml index 61870ccf96..36821852d1 100644 --- a/curator-x-discovery/pom.xml +++ b/curator-x-discovery/pom.xml @@ -26,11 +26,11 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT curator-x-discovery - 5.6.0 + 5.6.1-SNAPSHOT bundle Curator Service Discovery diff --git a/pom.xml b/pom.xml index 46dd3940ec..34dccdcb91 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ org.apache.curator apache-curator - 5.6.0 + 5.6.1-SNAPSHOT pom Apache Curator @@ -125,7 +125,7 @@ scm:git:https://gitbox.apache.org/repos/asf/curator.git scm:git:https://gitbox.apache.org/repos/asf/curator.git - apache-curator-5.6.0 + apache-curator-5.4.0 From a18755a99d69b2e63c76f80ace0c492ddbc4dd2d Mon Sep 17 00:00:00 2001 From: Elliot West Date: Mon, 11 Dec 2023 11:09:38 +0000 Subject: [PATCH 09/13] Open Telemetry tracing This changes adds an Open Telemetry tracing driver. To make this more effective, it also decomposes OperationTrace events so that the start and end of the event can be managed separately. --- .../curator/drivers/AdvancedTracerDriver.java | 36 +++- .../curator/drivers/OperationTrace.java | 46 ++-- curator-drivers/LICENSE | 202 ++++++++++++++++++ curator-drivers/NOTICE | 5 + curator-drivers/open-telemetry/LICENSE | 202 ++++++++++++++++++ curator-drivers/open-telemetry/NOTICE | 5 + curator-drivers/open-telemetry/pom.xml | 78 +++++++ .../OpenTelemetryTracingDriver.java | 185 ++++++++++++++++ .../OpenTelemetryTracingDriverTest.java | 125 +++++++++++ .../target/classes/META-INF/LICENSE | 202 ++++++++++++++++++ .../target/classes/META-INF/NOTICE | 5 + curator-drivers/pom.xml | 46 ++++ pom.xml | 1 + 13 files changed, 1119 insertions(+), 19 deletions(-) create mode 100644 curator-drivers/LICENSE create mode 100644 curator-drivers/NOTICE create mode 100644 curator-drivers/open-telemetry/LICENSE create mode 100644 curator-drivers/open-telemetry/NOTICE create mode 100644 curator-drivers/open-telemetry/pom.xml create mode 100644 curator-drivers/open-telemetry/src/main/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriver.java create mode 100644 curator-drivers/open-telemetry/src/test/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriverTest.java create mode 100644 curator-drivers/open-telemetry/target/classes/META-INF/LICENSE create mode 100644 curator-drivers/open-telemetry/target/classes/META-INF/NOTICE create mode 100644 curator-drivers/pom.xml diff --git a/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java b/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java index 800dd0cea6..ecd7a204c7 100644 --- a/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java +++ b/curator-client/src/main/java/org/apache/curator/drivers/AdvancedTracerDriver.java @@ -26,17 +26,43 @@ */ public abstract class AdvancedTracerDriver implements TracerDriver { /** - * Record the given trace event + * Records the start of a new operation that will later complete successfully or erroneously via a call to + * {@link #endTrace(OperationTrace)}. The call may optionally return driver specific state which can be + * accessed in {@link #endTrace(OperationTrace) endTrace} via {@link OperationTrace#getDriverTrace()}. The + * driver implementation is responsible for checking that any state returned is valid. Additionally, while it is + * expected that all calls to {@code startTrace} will have a corresponding call to + * {@link #endTrace(OperationTrace) endTrace}, it is the responsibility of the driver implementation to manage any + * leaking of non-terminal {@link OperationTrace OperationTraces}. * * @param trace the metrics of the operation + * @return The internal trace representation of the driver implementation. Driver dependent, may be {@code null}. */ - public abstract void addTrace(OperationTrace trace); + public abstract Object startTrace(OperationTrace trace); /** - * Add to a named counter + * Signals the completion, successful or otherwise, of the specified {@link OperationTrace}. + * + * @param trace the metrics of the operation + */ + public abstract void endTrace(OperationTrace trace); + + /** + * Record the given trace event after the completion of the event. This is equivalent to calling + * {@link #startTrace(OperationTrace) startTrace} followed by {@link #endTrace(OperationTrace) endTrace}. + * + * @param trace the metrics of the operation + * @deprecated Prefer the use of {@link #startTrace(OperationTrace)} followed by {@link #endTrace(OperationTrace)} + */ + @Deprecated + public void addTrace(OperationTrace trace) { + startTrace(trace); + endTrace(trace); + } + + /** + * Record the given trace event * - * @param name name of the counter - * @param increment amount to increment + * @param trace name of the counter */ public abstract void addEvent(EventTrace trace); diff --git a/curator-client/src/main/java/org/apache/curator/drivers/OperationTrace.java b/curator-client/src/main/java/org/apache/curator/drivers/OperationTrace.java index 8ef3de09fd..ee86ae0022 100644 --- a/curator-client/src/main/java/org/apache/curator/drivers/OperationTrace.java +++ b/curator-client/src/main/java/org/apache/curator/drivers/OperationTrace.java @@ -19,28 +19,33 @@ package org.apache.curator.drivers; -import java.io.UnsupportedEncodingException; +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.data.Stat; + import java.util.concurrent.TimeUnit; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.data.Stat; +import static java.nio.charset.StandardCharsets.UTF_8; + /** * Used to trace the metrics of a certain Zookeeper operation. */ public class OperationTrace { private final String name; private final TracerDriver driver; - + private final long startTimeNanos = System.nanoTime(); + private final long sessionId; + private long endTimeNanos = -1L; private int returnCode = KeeperException.Code.OK.intValue(); private long latencyMs; private long requestBytesLength; private long responseBytesLength; private String path; private boolean withWatcher; - private long sessionId; private Stat stat; - - private final long startTimeNanos = System.nanoTime(); + // This would ideally be a parameterised type, but we do not wish to break the existing API at this time. + private Object driverTrace; public OperationTrace(String name, TracerDriver driver) { this(name, driver, -1); @@ -50,6 +55,9 @@ public OperationTrace(String name, TracerDriver driver, long sessionId) { this.name = name; this.driver = driver; this.sessionId = sessionId; + if (this.driver instanceof AdvancedTracerDriver) { + driverTrace = ((AdvancedTracerDriver) this.driver).startTrace(this); + } } public OperationTrace setReturnCode(int returnCode) { @@ -66,13 +74,7 @@ public OperationTrace setRequestBytesLength(String data) { if (data == null) { return this; } - - try { - this.setRequestBytesLength(data.getBytes("UTF-8").length); - } catch (UnsupportedEncodingException e) { - // Ignore the exception. - } - + this.setRequestBytesLength(data.getBytes(UTF_8).length); return this; } @@ -112,6 +114,10 @@ public OperationTrace setStat(Stat stat) { return this; } + public Object getDriverTrace() { + return driverTrace; + } + public String getName() { return this.name; } @@ -148,11 +154,23 @@ public Stat getStat() { return this.stat; } + public long getStartTimeNanos() { + return this.startTimeNanos; + } + + public long getEndTimeNanos() { + if (endTimeNanos < startTimeNanos) { + throw new IllegalStateException("End time requested but trace has not yet ended."); + } + return this.endTimeNanos; + } + public void commit() { - long elapsed = System.nanoTime() - startTimeNanos; + endTimeNanos = System.nanoTime(); + long elapsed = endTimeNanos - startTimeNanos; this.latencyMs = TimeUnit.MILLISECONDS.convert(elapsed, TimeUnit.NANOSECONDS); if (this.driver instanceof AdvancedTracerDriver) { - ((AdvancedTracerDriver) this.driver).addTrace(this); + ((AdvancedTracerDriver) this.driver).endTrace(this); } else { this.driver.addTrace(this.name, elapsed, TimeUnit.NANOSECONDS); } diff --git a/curator-drivers/LICENSE b/curator-drivers/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/curator-drivers/LICENSE @@ -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 [yyyy] [name of copyright owner] + + 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/curator-drivers/NOTICE b/curator-drivers/NOTICE new file mode 100644 index 0000000000..0222626a51 --- /dev/null +++ b/curator-drivers/NOTICE @@ -0,0 +1,5 @@ +Apache Curator +Copyright 2013-2023 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/open-telemetry/LICENSE b/curator-drivers/open-telemetry/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/curator-drivers/open-telemetry/LICENSE @@ -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 [yyyy] [name of copyright owner] + + 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/curator-drivers/open-telemetry/NOTICE b/curator-drivers/open-telemetry/NOTICE new file mode 100644 index 0000000000..0222626a51 --- /dev/null +++ b/curator-drivers/open-telemetry/NOTICE @@ -0,0 +1,5 @@ +Apache Curator +Copyright 2013-2023 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/open-telemetry/pom.xml b/curator-drivers/open-telemetry/pom.xml new file mode 100644 index 0000000000..d942857097 --- /dev/null +++ b/curator-drivers/open-telemetry/pom.xml @@ -0,0 +1,78 @@ + + + + + 4.0.0 + + + org.apache.curator + curator-drivers + 5.5.0 + + + curator-drivers-open-telemetry + 5.5.0 + + Curator OpenTelemetry Tracing Driver + A tracing driver driver that emits OpenTelemetry spans. + 2023 + + + 1.31.0 + + + + + org.apache.curator + curator-client + ${project.version} + + + io.opentelemetry + opentelemetry-api + ${opentelemetry.version} + + + io.opentelemetry + opentelemetry-sdk-testing + ${opentelemetry.version} + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.slf4j + slf4j-log4j12 + test + + + org.assertj + assertj-core + test + + + \ No newline at end of file diff --git a/curator-drivers/open-telemetry/src/main/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriver.java b/curator-drivers/open-telemetry/src/main/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriver.java new file mode 100644 index 0000000000..5465f2c4b5 --- /dev/null +++ b/curator-drivers/open-telemetry/src/main/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriver.java @@ -0,0 +1,185 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +package org.apache.curator.drivers.opentelemetry; + +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.LATENCY_MS_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.PATH_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.REQUEST_BYTES_LENGTH_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.RESPONSE_BYTES_LENGTH_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.SESSION_ID_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_AVERSION_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_CTIME_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_CVERSION_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_CZXID_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_DATA_LENGTH_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_EPHEMERAL_OWNER_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_MTIME_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_MZXID_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_NUM_CHILDREN_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_PZXID_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.STAT_VERSION_ATTRIBUTE; +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.WITH_WATCHER_ATTRIBUTE; +import static java.util.concurrent.TimeUnit.NANOSECONDS; + +import org.apache.curator.drivers.AdvancedTracerDriver; +import org.apache.curator.drivers.EventTrace; +import org.apache.curator.drivers.OperationTrace; +import org.apache.zookeeper.KeeperException; + +import com.google.common.base.Preconditions; + +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.StatusCode; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Scope; + +/** + * Converts Apache Curator traces and events to OpenTelemetry spans, and then publishes these to the supplied OTel + * {@link Tracer}. Curator events are added to whatever OTel deems as the {@link Span#current()} current span}. Note + * that in the case of attributes, this implementation takes the approach of capturing deviations from the baseline. + * For example, it will not register attributes if they have the default value, only if the value has diverged from it. + */ +public class OpenTelemetryTracingDriver extends AdvancedTracerDriver { + + interface AttributeKeys { + AttributeKey PATH_ATTRIBUTE = AttributeKey.stringKey("path"); + AttributeKey SESSION_ID_ATTRIBUTE = AttributeKey.longKey("sessionId"); + AttributeKey LATENCY_MS_ATTRIBUTE = AttributeKey.longKey("latencyMs"); + AttributeKey REQUEST_BYTES_LENGTH_ATTRIBUTE = AttributeKey.longKey("requestBytesLength"); + AttributeKey RESPONSE_BYTES_LENGTH_ATTRIBUTE = AttributeKey.longKey("responseBytesLength"); + AttributeKey WITH_WATCHER_ATTRIBUTE = AttributeKey.booleanKey("withWatcher"); + AttributeKey STAT_AVERSION_ATTRIBUTE = AttributeKey.longKey("stat.Aversion"); + AttributeKey STAT_CTIME_ATTRIBUTE = AttributeKey.longKey("stat.Ctime"); + AttributeKey STAT_CVERSION_ATTRIBUTE = AttributeKey.longKey("stat.Cversion"); + AttributeKey STAT_CZXID_ATTRIBUTE = AttributeKey.longKey("stat.Czxid"); + AttributeKey STAT_DATA_LENGTH_ATTRIBUTE = AttributeKey.longKey("stat.DataLength"); + AttributeKey STAT_EPHEMERAL_OWNER_ATTRIBUTE = AttributeKey.longKey("stat.EphemeralOwner"); + AttributeKey STAT_MTIME_ATTRIBUTE = AttributeKey.longKey("stat.Mtime"); + AttributeKey STAT_MZXID_ATTRIBUTE = AttributeKey.longKey("stat.Mzxid"); + AttributeKey STAT_NUM_CHILDREN_ATTRIBUTE = AttributeKey.longKey("stat.NumChildren"); + AttributeKey STAT_PZXID_ATTRIBUTE = AttributeKey.longKey("stat.Pzxid"); + AttributeKey STAT_VERSION_ATTRIBUTE = AttributeKey.longKey("stat.Version"); + } + + private final Tracer tracer; + + public OpenTelemetryTracingDriver(Tracer tracer) { + Preconditions.checkNotNull(tracer); + this.tracer = tracer; + } + + @Override + public Object startTrace(OperationTrace trace) { + Preconditions.checkNotNull(trace); + Span span = tracer.spanBuilder(trace.getName()) + .setStartTimestamp(trace.getStartTimeNanos(), NANOSECONDS) + .startSpan(); + + if (trace.getPath() != null) { + span.setAttribute(PATH_ATTRIBUTE, trace.getPath()); + } + if (trace.isWithWatcher()) { + span.setAttribute(WITH_WATCHER_ATTRIBUTE, true); + } + if (trace.getSessionId() >= 0) { + span.setAttribute(SESSION_ID_ATTRIBUTE, trace.getSessionId()); + } + if (trace.getRequestBytesLength() > 0) { + span.setAttribute(REQUEST_BYTES_LENGTH_ATTRIBUTE, trace.getRequestBytesLength()); + } + // We will close this at in endTrace + @SuppressWarnings("MustBeClosedChecker") + Scope scope = span.makeCurrent(); + return new SpanScope(span, scope); + } + + @Override + public void endTrace(OperationTrace trace) { + Preconditions.checkNotNull(trace); + SpanScope spanScope = (SpanScope) trace.getDriverTrace(); + Span span = spanScope.getSpan(); + + if (trace.getReturnCode() == KeeperException.Code.OK.intValue()) { + span.setStatus(StatusCode.OK); + } else { + span.setStatus(StatusCode.ERROR); + span.recordException( + KeeperException.create(KeeperException.Code.get(trace.getReturnCode())), + Attributes.of(PATH_ATTRIBUTE, trace.getPath()) + ); + } + + span.setAttribute(LATENCY_MS_ATTRIBUTE, trace.getRequestBytesLength()); + + if (trace.getResponseBytesLength() > 0) { + span.setAttribute(RESPONSE_BYTES_LENGTH_ATTRIBUTE, trace.getResponseBytesLength()); + } + + if (trace.getStat() != null) { + span.setAttribute(STAT_AVERSION_ATTRIBUTE, trace.getStat().getAversion()); + span.setAttribute(STAT_CTIME_ATTRIBUTE, trace.getStat().getCtime()); + span.setAttribute(STAT_CVERSION_ATTRIBUTE, trace.getStat().getCversion()); + span.setAttribute(STAT_CZXID_ATTRIBUTE, trace.getStat().getCzxid()); + span.setAttribute(STAT_DATA_LENGTH_ATTRIBUTE, trace.getStat().getDataLength()); + span.setAttribute(STAT_EPHEMERAL_OWNER_ATTRIBUTE, trace.getStat().getEphemeralOwner()); + span.setAttribute(STAT_MTIME_ATTRIBUTE, trace.getStat().getMtime()); + span.setAttribute(STAT_MZXID_ATTRIBUTE, trace.getStat().getMzxid()); + span.setAttribute(STAT_NUM_CHILDREN_ATTRIBUTE, trace.getStat().getNumChildren()); + span.setAttribute(STAT_PZXID_ATTRIBUTE, trace.getStat().getPzxid()); + span.setAttribute(STAT_VERSION_ATTRIBUTE, trace.getStat().getVersion()); + } + + span.end(trace.getEndTimeNanos(), NANOSECONDS); + spanScope.getScope().close(); + } + + @Override + public void addEvent(EventTrace trace) { + Preconditions.checkNotNull(trace); + Span span = Span.current(); + Attributes attrs; + if (trace.getSessionId() >= 0) { + attrs = Attributes.of(SESSION_ID_ATTRIBUTE, trace.getSessionId()); + } else { + attrs = Attributes.empty(); + } + span.addEvent(trace.getName(), attrs); + } + + static final class SpanScope { + private final Span span; + private final Scope scope; + + SpanScope(Span span, Scope scope) { + this.span = span; + this.scope = scope; + } + + Span getSpan() { + return span; + } + + Scope getScope() { + return scope; + } + } +} diff --git a/curator-drivers/open-telemetry/src/test/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriverTest.java b/curator-drivers/open-telemetry/src/test/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriverTest.java new file mode 100644 index 0000000000..7f0d432b91 --- /dev/null +++ b/curator-drivers/open-telemetry/src/test/java/org/apache/curator/drivers/opentelemetry/OpenTelemetryTracingDriverTest.java @@ -0,0 +1,125 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +package org.apache.curator.drivers.opentelemetry; + +import static org.apache.curator.drivers.opentelemetry.OpenTelemetryTracingDriver.AttributeKeys.SESSION_ID_ATTRIBUTE; +import static org.assertj.core.api.Assertions.assertThat; + +import org.apache.curator.drivers.EventTrace; +import org.apache.curator.drivers.OperationTrace; +import org.apache.zookeeper.KeeperException; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.api.trace.Tracer; +import io.opentelemetry.context.Scope; +import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension; +import io.opentelemetry.sdk.trace.data.StatusData; + +class OpenTelemetryTracingDriverTest { + @RegisterExtension + static final OpenTelemetryExtension otel = OpenTelemetryExtension.create(); + + private final Tracer tracer = otel.getOpenTelemetry().getTracer("test"); + private final OpenTelemetryTracingDriver driver = new OpenTelemetryTracingDriver(tracer); + + @Test + void testAddTrace_ok() { + OperationTrace trace = new OperationTrace("op", driver, 1L); + trace.setPath("path"); + trace.setReturnCode(KeeperException.Code.OK.intValue()); + trace.commit(); + + otel.assertTraces().hasTracesSatisfyingExactly( + t -> t.hasSpansSatisfyingExactly(s -> { + s.hasName("op"); + s.hasStatus(StatusData.ok()); + s.hasAttribute(SESSION_ID_ATTRIBUTE, 1L); + s.hasKind(SpanKind.INTERNAL); + s.hasEnded(); + }) + ); + } + + @Test + void testAddTrace_fail() { + OperationTrace trace = new OperationTrace("op", driver); + trace.setPath("path"); + trace.setReturnCode(KeeperException.Code.NOAUTH.intValue()); + trace.commit(); + + otel.assertTraces().hasTracesSatisfyingExactly( + t -> t.hasSpansSatisfyingExactly(s -> { + s.hasStatus(StatusData.error()); + s.hasException(new KeeperException.NoAuthException()); + }) + ); + } + + @Test + void testAddEvent() { + Span span = tracer.spanBuilder("test-span").startSpan(); + try (Scope ignored = span.makeCurrent()) { + new EventTrace("session-expired", driver).commit(); + span.end(); + + otel.assertTraces().hasTracesSatisfyingExactly( + t -> t.hasSpansSatisfyingExactly( + s -> s.hasEventsSatisfyingExactly(e -> e.hasName("session-expired")) + ) + ); + } + } + + @Test + void testAddEvent_noCurrentSpan() { + new EventTrace("session-expired", driver).commit(); + otel.assertTraces().isEmpty(); + } + + @Test + void testAddTraceAndEvent() { + OperationTrace trace = new OperationTrace("op", driver, 1L); + trace.setPath("path"); + + new EventTrace("session-expired", driver, 1L).commit(); + + trace.setReturnCode(KeeperException.Code.SESSIONEXPIRED.intValue()); + trace.commit(); + + otel.assertTraces().hasTracesSatisfyingExactly( + t -> t.hasSpansSatisfyingExactly(s -> { + s.hasStatus(StatusData.error()); + s.hasEventsSatisfyingExactly( + e -> { + e.hasName("session-expired"); + e.hasAttributesSatisfying(a -> { + assertThat(a.get(SESSION_ID_ATTRIBUTE)).isEqualTo(1L); + assertThat(a.size()).isEqualTo(1L); + }); + }, + e -> e.hasName("exception") + ); + }) + ); + } +} diff --git a/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE b/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE @@ -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 [yyyy] [name of copyright owner] + + 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/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE b/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE new file mode 100644 index 0000000000..0222626a51 --- /dev/null +++ b/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE @@ -0,0 +1,5 @@ +Apache Curator +Copyright 2013-2023 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/pom.xml b/curator-drivers/pom.xml new file mode 100644 index 0000000000..ac8361c8c5 --- /dev/null +++ b/curator-drivers/pom.xml @@ -0,0 +1,46 @@ + + + + + 4.0.0 + + + org.apache.curator + apache-curator + 5.5.0 + + + curator-drivers + 5.5.0 + pom + + Curator Driver Implementations + A collection of Curator driver integrations. + 2023 + + + open-telemetry + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 34dccdcb91..b31cf892c5 100644 --- a/pom.xml +++ b/pom.xml @@ -352,6 +352,7 @@ curator-x-async curator-test-zk35 curator-test-zk36 + curator-drivers From ade9b7a3f42cde6a027fd6273982b060e3891e57 Mon Sep 17 00:00:00 2001 From: Elliot West Date: Mon, 11 Dec 2023 19:44:41 +0000 Subject: [PATCH 10/13] Fix version --- curator-drivers/open-telemetry/pom.xml | 4 ++-- curator-drivers/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/curator-drivers/open-telemetry/pom.xml b/curator-drivers/open-telemetry/pom.xml index d942857097..5b7aab1894 100644 --- a/curator-drivers/open-telemetry/pom.xml +++ b/curator-drivers/open-telemetry/pom.xml @@ -28,11 +28,11 @@ org.apache.curator curator-drivers - 5.5.0 + 5.5.1-SNAPSHOT curator-drivers-open-telemetry - 5.5.0 + 5.5.1-SNAPSHOT Curator OpenTelemetry Tracing Driver A tracing driver driver that emits OpenTelemetry spans. diff --git a/curator-drivers/pom.xml b/curator-drivers/pom.xml index ac8361c8c5..d4b0cd35c3 100644 --- a/curator-drivers/pom.xml +++ b/curator-drivers/pom.xml @@ -28,11 +28,11 @@ org.apache.curator apache-curator - 5.5.0 + 5.5.1-SNAPSHOT curator-drivers - 5.5.0 + 5.5.1-SNAPSHOT pom Curator Driver Implementations From 146aba073d64fbe2ce1311c1d7641919f8043c32 Mon Sep 17 00:00:00 2001 From: Elliot West Date: Wed, 13 Dec 2023 15:46:44 +0000 Subject: [PATCH 11/13] Correct gitignore --- .gitignore | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index e263d97231..56389e3fa7 100644 --- a/.gitignore +++ b/.gitignore @@ -41,11 +41,9 @@ Thumbs.db .gradle # Build output directies -/target -*/target -/build -*/build -*/bin +target/ +build/ +bin/ # IntelliJ specific files/directories out From 761a7943f0a074c912a3093ee9bf252911824af7 Mon Sep 17 00:00:00 2001 From: Elliot West Date: Mon, 8 Jan 2024 11:40:33 +0000 Subject: [PATCH 12/13] Remove unused files --- curator-drivers/LICENSE | 202 ------------------ curator-drivers/NOTICE | 5 - curator-drivers/open-telemetry/LICENSE | 202 ------------------ curator-drivers/open-telemetry/NOTICE | 5 - curator-drivers/open-telemetry/pom.xml | 5 +- .../target/classes/META-INF/LICENSE | 202 ------------------ .../target/classes/META-INF/NOTICE | 5 - curator-drivers/pom.xml | 4 +- 8 files changed, 5 insertions(+), 625 deletions(-) delete mode 100644 curator-drivers/LICENSE delete mode 100644 curator-drivers/NOTICE delete mode 100644 curator-drivers/open-telemetry/LICENSE delete mode 100644 curator-drivers/open-telemetry/NOTICE delete mode 100644 curator-drivers/open-telemetry/target/classes/META-INF/LICENSE delete mode 100644 curator-drivers/open-telemetry/target/classes/META-INF/NOTICE diff --git a/curator-drivers/LICENSE b/curator-drivers/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/curator-drivers/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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 [yyyy] [name of copyright owner] - - 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/curator-drivers/NOTICE b/curator-drivers/NOTICE deleted file mode 100644 index 0222626a51..0000000000 --- a/curator-drivers/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache Curator -Copyright 2013-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/open-telemetry/LICENSE b/curator-drivers/open-telemetry/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/curator-drivers/open-telemetry/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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 [yyyy] [name of copyright owner] - - 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/curator-drivers/open-telemetry/NOTICE b/curator-drivers/open-telemetry/NOTICE deleted file mode 100644 index 0222626a51..0000000000 --- a/curator-drivers/open-telemetry/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache Curator -Copyright 2013-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/open-telemetry/pom.xml b/curator-drivers/open-telemetry/pom.xml index 5b7aab1894..28e423b7b7 100644 --- a/curator-drivers/open-telemetry/pom.xml +++ b/curator-drivers/open-telemetry/pom.xml @@ -28,11 +28,11 @@ org.apache.curator curator-drivers - 5.5.1-SNAPSHOT + 5.6.1-SNAPSHOT curator-drivers-open-telemetry - 5.5.1-SNAPSHOT + 5.6.1-SNAPSHOT Curator OpenTelemetry Tracing Driver A tracing driver driver that emits OpenTelemetry spans. @@ -47,6 +47,7 @@ org.apache.curator curator-client ${project.version} + provided io.opentelemetry diff --git a/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE b/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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 [yyyy] [name of copyright owner] - - 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/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE b/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE deleted file mode 100644 index 0222626a51..0000000000 --- a/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache Curator -Copyright 2013-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/pom.xml b/curator-drivers/pom.xml index d4b0cd35c3..1ac78cecee 100644 --- a/curator-drivers/pom.xml +++ b/curator-drivers/pom.xml @@ -28,11 +28,11 @@ org.apache.curator apache-curator - 5.5.1-SNAPSHOT + 5.6.1-SNAPSHOT curator-drivers - 5.5.1-SNAPSHOT + 5.6.1-SNAPSHOT pom Curator Driver Implementations From 1a8227d5e365a197b9bdec88885f1c337ae8665d Mon Sep 17 00:00:00 2001 From: Elliot West Date: Mon, 8 Jan 2024 11:46:27 +0000 Subject: [PATCH 13/13] Remove unused files --- curator-drivers/LICENSE | 202 ------------------ curator-drivers/NOTICE | 5 - curator-drivers/open-telemetry/LICENSE | 202 ------------------ curator-drivers/open-telemetry/NOTICE | 5 - .../target/classes/META-INF/LICENSE | 202 ------------------ .../target/classes/META-INF/NOTICE | 5 - 6 files changed, 621 deletions(-) delete mode 100644 curator-drivers/LICENSE delete mode 100644 curator-drivers/NOTICE delete mode 100644 curator-drivers/open-telemetry/LICENSE delete mode 100644 curator-drivers/open-telemetry/NOTICE delete mode 100644 curator-drivers/open-telemetry/target/classes/META-INF/LICENSE delete mode 100644 curator-drivers/open-telemetry/target/classes/META-INF/NOTICE diff --git a/curator-drivers/LICENSE b/curator-drivers/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/curator-drivers/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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 [yyyy] [name of copyright owner] - - 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/curator-drivers/NOTICE b/curator-drivers/NOTICE deleted file mode 100644 index 0222626a51..0000000000 --- a/curator-drivers/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache Curator -Copyright 2013-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/open-telemetry/LICENSE b/curator-drivers/open-telemetry/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/curator-drivers/open-telemetry/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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 [yyyy] [name of copyright owner] - - 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/curator-drivers/open-telemetry/NOTICE b/curator-drivers/open-telemetry/NOTICE deleted file mode 100644 index 0222626a51..0000000000 --- a/curator-drivers/open-telemetry/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache Curator -Copyright 2013-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). diff --git a/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE b/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/curator-drivers/open-telemetry/target/classes/META-INF/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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 [yyyy] [name of copyright owner] - - 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/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE b/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE deleted file mode 100644 index 0222626a51..0000000000 --- a/curator-drivers/open-telemetry/target/classes/META-INF/NOTICE +++ /dev/null @@ -1,5 +0,0 @@ -Apache Curator -Copyright 2013-2023 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/).