From 08c15a53badf2bd4a0a8f123d1f388c5567be9c6 Mon Sep 17 00:00:00 2001 From: Rishabh Maurya Date: Sat, 25 Jan 2025 18:53:57 -0800 Subject: [PATCH] Fixes after rebase on 01/25 Signed-off-by: Rishabh Maurya --- .../gradle/testclusters/OpenSearchNode.java | 7 - .../gradle/testclusters/RunTask.java | 7 - distribution/archives/build.gradle | 4 +- .../licenses/jackson-annotations-LICENSE.txt | 8 - .../licenses/jackson-annotations-NOTICE.txt | 20 - .../licenses/jackson-databind-LICENSE.txt | 8 - .../licenses/jackson-databind-NOTICE.txt | 20 - modules/arrow-flight-rpc/build.gradle | 290 --- .../licenses/failureaccess-1.0.1.jar.sha1 | 1 - .../licenses/failureaccess-LICENSE.txt | 202 -- .../licenses/failureaccess-NOTICE.txt | 0 .../licenses/flight-core-18.1.0.jar.sha1 | 1 - .../licenses/flight-core-LICENSE.txt | 2261 ----------------- .../licenses/flight-core-NOTICE.txt | 84 - .../licenses/grpc-all-1.68.2.jar.sha1 | 1 - .../licenses/grpc-all-LICENSE.txt | 202 -- .../licenses/grpc-all-NOTICE.txt | 62 - .../licenses/grpc-api-1.68.2.jar.sha1 | 1 - .../licenses/grpc-api-LICENSE.txt | 202 -- .../licenses/grpc-api-NOTICE.txt | 62 - .../licenses/grpc-core-1.68.2.jar.sha1 | 1 - .../licenses/grpc-core-LICENSE.txt | 202 -- .../licenses/grpc-core-NOTICE.txt | 62 - .../licenses/grpc-netty-1.68.2.jar.sha1 | 1 - .../licenses/grpc-netty-LICENSE.txt | 202 -- .../licenses/grpc-netty-NOTICE.txt | 62 - .../licenses/grpc-protobuf-1.68.2.jar.sha1 | 1 - .../licenses/grpc-protobuf-LICENSE.txt | 202 -- .../licenses/grpc-protobuf-NOTICE.txt | 62 - .../grpc-protobuf-lite-1.68.2.jar.sha1 | 1 - .../licenses/grpc-protobuf-lite-LICENSE.txt | 202 -- .../licenses/grpc-protobuf-lite-NOTICE.txt | 62 - .../licenses/grpc-stub-1.68.2.jar.sha1 | 1 - .../licenses/grpc-stub-LICENSE.txt | 202 -- .../licenses/grpc-stub-NOTICE.txt | 62 - .../licenses/guava-33.3.1-jre.jar.sha1 | 1 - .../licenses/guava-LICENSE.txt | 202 -- .../licenses/guava-NOTICE.txt | 0 .../licenses/jsr305-3.0.2.jar.sha1 | 1 - .../licenses/jsr305-LICENSE.txt | 29 - .../licenses/jsr305-NOTICE.txt | 1 - .../licenses/netty-LICENSE.txt | 202 -- .../licenses/netty-NOTICE.txt | 116 - .../netty-codec-4.1.115.Final.jar.sha1 | 1 - .../netty-codec-http-4.1.115.Final.jar.sha1 | 1 - .../netty-codec-http2-4.1.115.Final.jar.sha1 | 1 - .../netty-handler-4.1.115.Final.jar.sha1 | 1 - .../netty-resolver-4.1.115.Final.jar.sha1 | 1 - .../netty-transport-4.1.115.Final.jar.sha1 | 1 - ...sport-classes-epoll-4.1.115.Final.jar.sha1 | 1 - ...-native-unix-common-4.1.115.Final.jar.sha1 | 1 - .../licenses/parquet-arrow-1.13.1.jar.sha1 | 1 - .../licenses/parquet-arrow-LICENSE.txt | 218 -- .../licenses/parquet-arrow-NOTICE.txt | 94 - .../licenses/perfmark-api-0.27.0.jar.sha1 | 1 - .../licenses/perfmark-api-LICENSE.txt | 201 -- .../licenses/perfmark-api-NOTICE.txt | 41 - .../licenses/slf4j-api-1.7.36.jar.sha1 | 1 - .../licenses/slf4j-api-LICENSE.txt | 24 - .../licenses/slf4j-api-NOTICE.txt | 0 .../arrow/flight/ArrowFlightServerIT.java | 70 - .../apache/arrow/flight/OSFlightClient.java | 947 ------- .../apache/arrow/flight/OSFlightServer.java | 555 ---- .../org/apache/arrow/flight/package-info.java | 13 - .../arrow/flight/BaseFlightStreamPlugin.java | 135 - .../arrow/flight/FlightStreamPlugin.java | 228 -- .../flight/bootstrap/FlightClientManager.java | 246 -- .../arrow/flight/bootstrap/FlightService.java | 431 ---- .../bootstrap/FlightStreamPluginImpl.java | 149 -- .../arrow/flight/bootstrap/ServerConfig.java | 240 -- .../arrow/flight/bootstrap/package-info.java | 12 - .../tls/DefaultSslContextProvider.java | 120 - .../tls/DisabledSslContextProvider.java | 50 - .../bootstrap/tls/SslContextProvider.java | 41 - .../flight/bootstrap/tls/package-info.java | 12 - .../opensearch/arrow/flight/package-info.java | 12 - .../plugin-metadata/plugin-security.policy | 20 - .../arrow/flight/FlightStreamPluginTests.java | 120 - .../bootstrap/FlightClientManagerTests.java | 232 -- .../flight/bootstrap/FlightServiceTests.java | 176 -- .../flight/bootstrap/ServerConfigTests.java | 79 - .../tls/SslContextProviderTests.java | 95 - .../bootstrap/FlightClientManagerTests.java | 9 - .../flight/bootstrap/FlightServiceTests.java | 2 +- .../action/search/SearchResponseMerger.java | 1 + .../action/search/SearchResponseSections.java | 43 +- .../action/search/StreamAsyncAction.java | 1 + .../internal/InternalSearchResponse.java | 26 +- .../search/query/QueryPhaseTests.java | 2 +- .../opensearch/test/InternalTestCluster.java | 4 +- .../test/OpenSearchIntegTestCase.java | 2 +- 91 files changed, 55 insertions(+), 9927 deletions(-) delete mode 100644 libs/arrow-memory-shaded/licenses/jackson-annotations-LICENSE.txt delete mode 100644 libs/arrow-memory-shaded/licenses/jackson-annotations-NOTICE.txt delete mode 100644 libs/arrow-memory-shaded/licenses/jackson-databind-LICENSE.txt delete mode 100644 libs/arrow-memory-shaded/licenses/jackson-databind-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/build.gradle delete mode 100644 modules/arrow-flight-rpc/licenses/failureaccess-1.0.1.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/failureaccess-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/failureaccess-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/flight-core-18.1.0.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/flight-core-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/flight-core-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-all-1.68.2.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-all-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-all-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-api-1.68.2.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-api-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-api-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-core-1.68.2.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-core-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-core-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-netty-1.68.2.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-netty-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-netty-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-protobuf-1.68.2.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-protobuf-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-protobuf-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-1.68.2.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-stub-1.68.2.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-stub-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/grpc-stub-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/guava-33.3.1-jre.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/guava-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/guava-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/jsr305-3.0.2.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/jsr305-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/jsr305-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/netty-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/netty-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/netty-codec-4.1.115.Final.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/netty-codec-http-4.1.115.Final.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/netty-codec-http2-4.1.115.Final.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/netty-handler-4.1.115.Final.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/netty-resolver-4.1.115.Final.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/netty-transport-4.1.115.Final.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/netty-transport-classes-epoll-4.1.115.Final.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/netty-transport-native-unix-common-4.1.115.Final.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/parquet-arrow-1.13.1.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/parquet-arrow-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/parquet-arrow-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/perfmark-api-0.27.0.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/perfmark-api-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/perfmark-api-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/slf4j-api-1.7.36.jar.sha1 delete mode 100644 modules/arrow-flight-rpc/licenses/slf4j-api-LICENSE.txt delete mode 100644 modules/arrow-flight-rpc/licenses/slf4j-api-NOTICE.txt delete mode 100644 modules/arrow-flight-rpc/src/internalClusterTest/java/org/opensearch/arrow/flight/ArrowFlightServerIT.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/OSFlightClient.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/OSFlightServer.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/package-info.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/BaseFlightStreamPlugin.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/FlightStreamPlugin.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightClientManager.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightService.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightStreamPluginImpl.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/ServerConfig.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/package-info.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProvider.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DisabledSslContextProvider.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProvider.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/package-info.java delete mode 100644 modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/package-info.java delete mode 100644 modules/arrow-flight-rpc/src/main/plugin-metadata/plugin-security.policy delete mode 100644 modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/FlightStreamPluginTests.java delete mode 100644 modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightClientManagerTests.java delete mode 100644 modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightServiceTests.java delete mode 100644 modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/ServerConfigTests.java delete mode 100644 modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProviderTests.java diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java index 3840c022d0a67..cd22560af9a96 100644 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java +++ b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/OpenSearchNode.java @@ -174,7 +174,6 @@ public class OpenSearchNode implements TestClusterConfiguration { private boolean isWorkingDirConfigured = false; private String httpPort = "0"; private String transportPort = "0"; - private String streamPort = "0"; private Path confPathData; private String keystorePassword = ""; private boolean preserveDataDir = false; @@ -1176,8 +1175,6 @@ private void createConfiguration() { baseConfig.put("node.portsfile", "true"); baseConfig.put("http.port", httpPort); baseConfig.put("transport.port", transportPort); - baseConfig.put("node.attr.transport.stream.port", streamPort); - // Default the watermarks to absurdly low to prevent the tests from failing on nodes without enough disk space baseConfig.put("cluster.routing.allocation.disk.watermark.low", "1b"); baseConfig.put("cluster.routing.allocation.disk.watermark.high", "1b"); @@ -1450,10 +1447,6 @@ void setTransportPort(String transportPort) { this.transportPort = transportPort; } - void setStreamPort(String streamPort) { - this.streamPort = streamPort; - } - void setDataPath(Path dataPath) { this.confPathData = dataPath; } diff --git a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/RunTask.java b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/RunTask.java index cf7a504fd3893..c5035f3b082fe 100644 --- a/buildSrc/src/main/java/org/opensearch/gradle/testclusters/RunTask.java +++ b/buildSrc/src/main/java/org/opensearch/gradle/testclusters/RunTask.java @@ -61,7 +61,6 @@ public class RunTask extends DefaultTestClustersTask { public static final String CUSTOM_SETTINGS_PREFIX = "tests.opensearch."; private static final int DEFAULT_HTTP_PORT = 9200; private static final int DEFAULT_TRANSPORT_PORT = 9300; - private static final int DEFAULT_STREAM_PORT = 9880; private static final int DEFAULT_DEBUG_PORT = 5005; public static final String LOCALHOST_ADDRESS_PREFIX = "127.0.0.1:"; @@ -141,8 +140,6 @@ public void beforeStart() { int debugPort = DEFAULT_DEBUG_PORT; int httpPort = DEFAULT_HTTP_PORT; int transportPort = DEFAULT_TRANSPORT_PORT; - int streamPort = DEFAULT_STREAM_PORT; - Map additionalSettings = System.getProperties() .entrySet() .stream() @@ -167,9 +164,7 @@ public void beforeStart() { firstNode.setHttpPort(String.valueOf(httpPort)); httpPort++; firstNode.setTransportPort(String.valueOf(transportPort)); - firstNode.setStreamPort(String.valueOf(streamPort)); transportPort++; - streamPort++; firstNode.setting("discovery.seed_hosts", LOCALHOST_ADDRESS_PREFIX + DEFAULT_TRANSPORT_PORT); cluster.setPreserveDataDir(preserveData); for (OpenSearchNode node : cluster.getNodes()) { @@ -177,9 +172,7 @@ public void beforeStart() { node.setHttpPort(String.valueOf(httpPort)); httpPort++; node.setTransportPort(String.valueOf(transportPort)); - node.setStreamPort(String.valueOf(streamPort)); transportPort++; - streamPort++; node.setting("discovery.seed_hosts", LOCALHOST_ADDRESS_PREFIX + DEFAULT_TRANSPORT_PORT); } additionalSettings.forEach(node::setting); diff --git a/distribution/archives/build.gradle b/distribution/archives/build.gradle index e7fd7fca56ae8..792b1ab57ddbc 100644 --- a/distribution/archives/build.gradle +++ b/distribution/archives/build.gradle @@ -28,7 +28,7 @@ * under the License. */ -import org.opensearch.gradle.JavaPackageType +import org.opensearch.gradle.JavaPackageType apply plugin: 'opensearch.internal-distribution-archive-setup' @@ -190,7 +190,7 @@ distribution_archives { } } - + linuxPpc64leTar { archiveClassifier = 'linux-ppc64le' content { diff --git a/libs/arrow-memory-shaded/licenses/jackson-annotations-LICENSE.txt b/libs/arrow-memory-shaded/licenses/jackson-annotations-LICENSE.txt deleted file mode 100644 index f5f45d26a49d6..0000000000000 --- a/libs/arrow-memory-shaded/licenses/jackson-annotations-LICENSE.txt +++ /dev/null @@ -1,8 +0,0 @@ -This copy of Jackson JSON processor streaming parser/generator is licensed under the -Apache (Software) License, version 2.0 ("the License"). -See the License for details about distribution rights, and the -specific rights regarding derivate works. - -You may obtain a copy of the License at: - -http://www.apache.org/licenses/LICENSE-2.0 diff --git a/libs/arrow-memory-shaded/licenses/jackson-annotations-NOTICE.txt b/libs/arrow-memory-shaded/licenses/jackson-annotations-NOTICE.txt deleted file mode 100644 index 4c976b7b4cc58..0000000000000 --- a/libs/arrow-memory-shaded/licenses/jackson-annotations-NOTICE.txt +++ /dev/null @@ -1,20 +0,0 @@ -# Jackson JSON processor - -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers, as well as supported -commercially by FasterXML.com. - -## Licensing - -Jackson core and extension components may licensed under different licenses. -To find the details that apply to this artifact see the accompanying LICENSE file. -For more information, including possible other licensing options, contact -FasterXML.com (http://fasterxml.com). - -## Credits - -A list of contributors may be found from CREDITS file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. diff --git a/libs/arrow-memory-shaded/licenses/jackson-databind-LICENSE.txt b/libs/arrow-memory-shaded/licenses/jackson-databind-LICENSE.txt deleted file mode 100644 index f5f45d26a49d6..0000000000000 --- a/libs/arrow-memory-shaded/licenses/jackson-databind-LICENSE.txt +++ /dev/null @@ -1,8 +0,0 @@ -This copy of Jackson JSON processor streaming parser/generator is licensed under the -Apache (Software) License, version 2.0 ("the License"). -See the License for details about distribution rights, and the -specific rights regarding derivate works. - -You may obtain a copy of the License at: - -http://www.apache.org/licenses/LICENSE-2.0 diff --git a/libs/arrow-memory-shaded/licenses/jackson-databind-NOTICE.txt b/libs/arrow-memory-shaded/licenses/jackson-databind-NOTICE.txt deleted file mode 100644 index 4c976b7b4cc58..0000000000000 --- a/libs/arrow-memory-shaded/licenses/jackson-databind-NOTICE.txt +++ /dev/null @@ -1,20 +0,0 @@ -# Jackson JSON processor - -Jackson is a high-performance, Free/Open Source JSON processing library. -It was originally written by Tatu Saloranta (tatu.saloranta@iki.fi), and has -been in development since 2007. -It is currently developed by a community of developers, as well as supported -commercially by FasterXML.com. - -## Licensing - -Jackson core and extension components may licensed under different licenses. -To find the details that apply to this artifact see the accompanying LICENSE file. -For more information, including possible other licensing options, contact -FasterXML.com (http://fasterxml.com). - -## Credits - -A list of contributors may be found from CREDITS file, which is included -in some artifacts (usually source distributions); but is always available -from the source code management (SCM) system project uses. diff --git a/modules/arrow-flight-rpc/build.gradle b/modules/arrow-flight-rpc/build.gradle deleted file mode 100644 index efed1b582ae32..0000000000000 --- a/modules/arrow-flight-rpc/build.gradle +++ /dev/null @@ -1,290 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -apply plugin: 'opensearch.internal-cluster-test' - -opensearchplugin { - description 'Arrow flight based Stream implementation' - classname 'org.opensearch.arrow.flight.FlightStreamPlugin' -} -evaluationDependsOn(":libs:opensearch-flight-core-shaded") - -dependencies { - implementation project(':libs:opensearch-arrow-spi') - implementation project(path:':libs:opensearch-flight-core-shaded', configuration: 'shadow') - implementation "io.grpc:grpc-netty-shaded:${versions.grpc}" - - implementation "io.netty:netty-buffer:${versions.netty}" - implementation "io.netty:netty-codec:${versions.netty}" - implementation "io.netty:netty-codec-http:${versions.netty}" - implementation "io.netty:netty-codec-http2:${versions.netty}" - implementation "io.netty:netty-common:${versions.netty}" - implementation "io.netty:netty-handler:${versions.netty}" - implementation "io.netty:netty-resolver:${versions.netty}" - implementation "io.netty:netty-transport:${versions.netty}" - implementation "io.netty:netty-transport-native-unix-common:${versions.netty}" - implementation "io.netty:netty-transport-classes-epoll:${versions.netty}" - -<<<<<<< HEAD - implementation 'org.checkerframework:checker-qual:3.44.0' - implementation "org.apache.arrow:arrow-memory-core:${versions.arrow}" - implementation "org.apache.arrow:arrow-memory-netty-buffer-patch:${versions.arrow}" - implementation "org.apache.arrow:arrow-memory-netty:${versions.arrow}" - - runtimeOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - compileOnly 'org.immutables:value:2.10.1' - annotationProcessor 'org.immutables:value:2.10.1' - implementation "org.apache.arrow:arrow-flight:${versions.arrow}" - implementation "org.apache.arrow:flight-core:${versions.arrow}" - implementation "io.grpc:grpc-api:${versions.grpc}" - implementation "io.grpc:grpc-netty:${versions.grpc}" - runtimeOnly "io.grpc:grpc-core:${versions.grpc}" - implementation "io.grpc:grpc-stub:${versions.grpc}" - runtimeOnly "io.grpc:grpc-all:${versions.grpc}" -======= - runtimeOnly group: 'com.google.code.findbugs', name: 'jsr305', version: '3.0.2' - compileOnly 'org.immutables:value:2.10.1' - annotationProcessor 'org.immutables:value:2.10.1' - - implementation "org.slf4j:slf4j-api:${versions.slf4j}" - runtimeOnly 'io.perfmark:perfmark-api:0.27.0' - runtimeOnly 'org.apache.parquet:parquet-arrow:1.13.1' - runtimeOnly "io.grpc:grpc-protobuf-lite:${versions.grpc}" ->>>>>>> e62a3ed3120 (fix the shaded dependencies) - runtimeOnly "io.grpc:grpc-protobuf:${versions.grpc}" - runtimeOnly "io.grpc:grpc-protobuf-lite:${versions.grpc}" - runtimeOnly 'io.perfmark:perfmark-api:0.27.0' - runtimeOnly "com.google.guava:failureaccess:1.0.1" - compileOnly "com.google.errorprone:error_prone_annotations:2.31.0" - runtimeOnly('com.google.guava:guava:33.3.1-jre') { - attributes { - attribute(Attribute.of('org.gradle.jvm.environment', String), 'standard-jvm') - } - } -<<<<<<< HEAD - runtimeOnly 'org.apache.parquet:parquet-arrow:1.13.1' -======= ->>>>>>> e62a3ed3120 (fix the shaded dependencies) -} - -tasks.named('test').configure { - jacoco { - excludes = ['org/apache/arrow/flight/**'] - } -} - -tasks.named("dependencyLicenses").configure { - mapping from: /netty-.*/, to: 'netty' - mapping from: /grpc-.*/, to: 'grpc' -} - -tasks.named('forbiddenApisMain').configure { - replaceSignatureFiles 'jdk-signatures' - - excludes = [ - 'org/apache/arrow/flight/OSFlightServer$Builder.class', - 'org/apache/arrow/flight/OSFlightClient$Builder.class', - 'org/opensearch/flight/bootstrap/server/ServerConfig$Netty4Configs.class', - 'org/opensearch/flight/bootstrap/server/ServerConfig.class', - 'org/opensearch/flight/bootstrap/tls/DefaultSslContextProvider.class', - 'org/apache/arrow/flight/OpenSearchFlightClient$Builder.class' - ] -} - -tasks.named('thirdPartyAudit').configure { - ignoreMissingClasses( - 'com.google.gson.stream.JsonReader', - 'com.google.gson.stream.JsonToken', - 'com.google.protobuf.util.Timestamps', - 'com.google.rpc.Status', - 'com.google.rpc.Status$Builder', -<<<<<<< HEAD - 'org.apache.parquet.schema.GroupType', -======= ->>>>>>> e62a3ed3120 (fix the shaded dependencies) - // Parquet Schema classes - 'org.apache.parquet.schema.LogicalTypeAnnotation', - 'org.apache.parquet.schema.LogicalTypeAnnotation$DateLogicalTypeAnnotation', - 'org.apache.parquet.schema.LogicalTypeAnnotation$DecimalLogicalTypeAnnotation', - 'org.apache.parquet.schema.LogicalTypeAnnotation$IntLogicalTypeAnnotation', - 'org.apache.parquet.schema.LogicalTypeAnnotation$IntervalLogicalTypeAnnotation', - 'org.apache.parquet.schema.LogicalTypeAnnotation$ListLogicalTypeAnnotation', - 'org.apache.parquet.schema.LogicalTypeAnnotation$LogicalTypeAnnotationVisitor', - 'org.apache.parquet.schema.LogicalTypeAnnotation$StringLogicalTypeAnnotation', - 'org.apache.parquet.schema.LogicalTypeAnnotation$TimeLogicalTypeAnnotation', - 'org.apache.parquet.schema.LogicalTypeAnnotation$TimeUnit', - 'org.apache.parquet.schema.LogicalTypeAnnotation$TimestampLogicalTypeAnnotation', - 'org.apache.parquet.schema.MessageType', - 'org.apache.parquet.schema.OriginalType', - 'org.apache.parquet.schema.PrimitiveType', - 'org.apache.parquet.schema.PrimitiveType$PrimitiveTypeName', - 'org.apache.parquet.schema.PrimitiveType$PrimitiveTypeNameConverter', - 'org.apache.parquet.schema.Type', - 'org.apache.parquet.schema.Type$Repetition', - 'org.apache.parquet.schema.Types', - 'org.apache.parquet.schema.Types$BaseListBuilder', - 'org.apache.parquet.schema.Types$GroupBuilder', - 'org.apache.parquet.schema.Types$ListBuilder', - 'org.apache.parquet.schema.Types$PrimitiveBuilder', - - 'com.aayushatharva.brotli4j.Brotli4jLoader', - 'com.aayushatharva.brotli4j.decoder.DecoderJNI$Status', - 'com.aayushatharva.brotli4j.decoder.DecoderJNI$Wrapper', - 'com.aayushatharva.brotli4j.encoder.BrotliEncoderChannel', - 'com.aayushatharva.brotli4j.encoder.Encoder$Mode', - 'com.aayushatharva.brotli4j.encoder.Encoder$Parameters', - // classes are missing - - // from io.netty.logging.CommonsLoggerFactory (netty) - 'org.apache.commons.logging.Log', - 'org.apache.commons.logging.LogFactory', - - 'org.slf4j.impl.StaticLoggerBinder', - 'org.slf4j.impl.StaticMDCBinder', - 'org.slf4j.impl.StaticMarkerBinder', - - // from Log4j (deliberate, Netty will fallback to Log4j 2) - 'org.apache.log4j.Level', - 'org.apache.log4j.Logger', - - // from io.netty.handler.ssl.OpenSslEngine (netty) - 'io.netty.internal.tcnative.Buffer', - 'io.netty.internal.tcnative.CertificateCompressionAlgo', - 'io.netty.internal.tcnative.Library', - 'io.netty.internal.tcnative.SSL', - 'io.netty.internal.tcnative.SSLContext', - 'io.netty.internal.tcnative.SSLPrivateKeyMethod', - - // from io.netty.handler.ssl.util.BouncyCastleSelfSignedCertGenerator (netty) - 'org.bouncycastle.cert.X509v3CertificateBuilder', - 'org.bouncycastle.cert.jcajce.JcaX509CertificateConverter', - 'org.bouncycastle.operator.jcajce.JcaContentSignerBuilder', - 'org.bouncycastle.openssl.PEMEncryptedKeyPair', - 'org.bouncycastle.openssl.PEMParser', - 'org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter', - 'org.bouncycastle.openssl.jcajce.JceOpenSSLPKCS8DecryptorProviderBuilder', - 'org.bouncycastle.openssl.jcajce.JcePEMDecryptorProviderBuilder', - 'org.bouncycastle.pkcs.PKCS8EncryptedPrivateKeyInfo', - - // from io.netty.handler.ssl.JettyNpnSslEngine (netty) - 'org.eclipse.jetty.npn.NextProtoNego$ClientProvider', - 'org.eclipse.jetty.npn.NextProtoNego$ServerProvider', - 'org.eclipse.jetty.npn.NextProtoNego', - - // from io.netty.handler.codec.marshalling.ChannelBufferByteInput (netty) - 'org.jboss.marshalling.ByteInput', - - // from io.netty.handler.codec.marshalling.ChannelBufferByteOutput (netty) - 'org.jboss.marshalling.ByteOutput', - - // from io.netty.handler.codec.marshalling.CompatibleMarshallingEncoder (netty) - 'org.jboss.marshalling.Marshaller', - - // from io.netty.handler.codec.marshalling.ContextBoundUnmarshallerProvider (netty) - 'org.jboss.marshalling.MarshallerFactory', - 'org.jboss.marshalling.MarshallingConfiguration', - 'org.jboss.marshalling.Unmarshaller', - - 'com.google.protobuf.nano.CodedOutputByteBufferNano', - 'com.google.protobuf.nano.MessageNano', - 'com.ning.compress.BufferRecycler', - 'com.ning.compress.lzf.ChunkDecoder', - 'com.ning.compress.lzf.ChunkEncoder', - 'com.ning.compress.lzf.LZFChunk', - 'com.ning.compress.lzf.LZFEncoder', - 'com.ning.compress.lzf.util.ChunkDecoderFactory', - 'com.ning.compress.lzf.util.ChunkEncoderFactory', - 'lzma.sdk.lzma.Encoder', - 'net.jpountz.lz4.LZ4Compressor', - 'net.jpountz.lz4.LZ4Factory', - 'net.jpountz.lz4.LZ4FastDecompressor', - 'net.jpountz.xxhash.XXHash32', - 'net.jpountz.xxhash.XXHashFactory', - 'io.netty.internal.tcnative.AsyncSSLPrivateKeyMethod', - 'io.netty.internal.tcnative.AsyncTask', - 'io.netty.internal.tcnative.CertificateCallback', - 'io.netty.internal.tcnative.CertificateVerifier', - 'io.netty.internal.tcnative.ResultCallback', - 'io.netty.internal.tcnative.SessionTicketKey', - 'io.netty.internal.tcnative.SniHostNameMatcher', - 'io.netty.internal.tcnative.SSL', - 'io.netty.internal.tcnative.SSLSession', - 'io.netty.internal.tcnative.SSLSessionCache', - 'org.eclipse.jetty.alpn.ALPN$ClientProvider', - 'org.eclipse.jetty.alpn.ALPN$ServerProvider', - 'org.eclipse.jetty.alpn.ALPN', - - 'org.conscrypt.AllocatedBuffer', - 'org.conscrypt.BufferAllocator', - 'org.conscrypt.Conscrypt', - 'org.conscrypt.HandshakeListener', - - 'reactor.blockhound.BlockHound$Builder', - 'reactor.blockhound.integration.BlockHoundIntegration' - ) - ignoreViolations( - // Guava internal classes - 'com.google.common.cache.Striped64', - 'com.google.common.cache.Striped64$1', - 'com.google.common.cache.Striped64$Cell', - 'com.google.common.hash.LittleEndianByteArray$UnsafeByteArray', - 'com.google.common.hash.LittleEndianByteArray$UnsafeByteArray$1', - 'com.google.common.hash.LittleEndianByteArray$UnsafeByteArray$2', - 'com.google.common.hash.Striped64', - 'com.google.common.hash.Striped64$1', - 'com.google.common.hash.Striped64$Cell', - 'com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator', - 'com.google.common.primitives.UnsignedBytes$LexicographicalComparatorHolder$UnsafeComparator$1', - 'com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper', - 'com.google.common.util.concurrent.AbstractFuture$UnsafeAtomicHelper$1', - - // Arrow memory classes - 'org.apache.arrow.memory.util.MemoryUtil', - 'org.apache.arrow.memory.util.MemoryUtil$1', - - 'io.netty.util.internal.PlatformDependent0', - 'io.netty.util.internal.PlatformDependent0$1', - 'io.netty.util.internal.PlatformDependent0$2', - 'io.netty.util.internal.PlatformDependent0$3', - 'io.netty.util.internal.PlatformDependent0$4', - 'io.netty.util.internal.PlatformDependent0$6', - 'io.netty.util.internal.shaded.org.jctools.queues.BaseLinkedQueueConsumerNodeRef', - 'io.netty.util.internal.shaded.org.jctools.queues.BaseLinkedQueueProducerNodeRef', - 'io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueColdProducerFields', - 'io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueConsumerFields', - 'io.netty.util.internal.shaded.org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields', - 'io.netty.util.internal.shaded.org.jctools.queues.LinkedQueueNode', - 'io.netty.util.internal.shaded.org.jctools.queues.MpmcArrayQueueConsumerIndexField', - 'io.netty.util.internal.shaded.org.jctools.queues.MpmcArrayQueueProducerIndexField', - 'io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueConsumerIndexField', - 'io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerIndexField', - 'io.netty.util.internal.shaded.org.jctools.queues.MpscArrayQueueProducerLimitField', - 'io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueueConsumerIndexField', - 'io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueueProducerIndexField', - 'io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueueProducerLimitField', - 'io.netty.util.internal.shaded.org.jctools.util.UnsafeAccess', - 'io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess', - 'io.netty.util.internal.shaded.org.jctools.util.UnsafeLongArrayAccess', - 'io.netty.handler.ssl.util.OpenJdkSelfSignedCertGenerator', - 'io.netty.handler.ssl.util.OpenJdkSelfSignedCertGenerator$1', - 'io.netty.handler.ssl.util.OpenJdkSelfSignedCertGenerator$2', - 'io.netty.handler.ssl.util.OpenJdkSelfSignedCertGenerator$3', - 'io.netty.handler.ssl.util.OpenJdkSelfSignedCertGenerator$4', - 'io.netty.handler.ssl.util.OpenJdkSelfSignedCertGenerator$5' - ) -} -<<<<<<< HEAD - -tasks.named("dependencyLicenses").configure { - mapping from: /netty-.*/, to: 'netty' -} -======= ->>>>>>> e62a3ed3120 (fix the shaded dependencies) diff --git a/modules/arrow-flight-rpc/licenses/failureaccess-1.0.1.jar.sha1 b/modules/arrow-flight-rpc/licenses/failureaccess-1.0.1.jar.sha1 deleted file mode 100644 index 4798b37e20691..0000000000000 --- a/modules/arrow-flight-rpc/licenses/failureaccess-1.0.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -1dcf1de382a0bf95a3d8b0849546c88bac1292c9 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/failureaccess-LICENSE.txt b/modules/arrow-flight-rpc/licenses/failureaccess-LICENSE.txt deleted file mode 100644 index 7a4a3ea2424c0..0000000000000 --- a/modules/arrow-flight-rpc/licenses/failureaccess-LICENSE.txt +++ /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. \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/failureaccess-NOTICE.txt b/modules/arrow-flight-rpc/licenses/failureaccess-NOTICE.txt deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/modules/arrow-flight-rpc/licenses/flight-core-18.1.0.jar.sha1 b/modules/arrow-flight-rpc/licenses/flight-core-18.1.0.jar.sha1 deleted file mode 100644 index fc2e34539cf04..0000000000000 --- a/modules/arrow-flight-rpc/licenses/flight-core-18.1.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -82494895fcb0656967680442f63ce1214e532d52 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/flight-core-LICENSE.txt b/modules/arrow-flight-rpc/licenses/flight-core-LICENSE.txt deleted file mode 100644 index 7bb1330a1002b..0000000000000 --- a/modules/arrow-flight-rpc/licenses/flight-core-LICENSE.txt +++ /dev/null @@ -1,2261 +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. - --------------------------------------------------------------------------------- - -src/arrow/util (some portions): Apache 2.0, and 3-clause BSD - -Some portions of this module are derived from code in the Chromium project, -copyright (c) Google inc and (c) The Chromium Authors and licensed under the -Apache 2.0 License or the under the 3-clause BSD license: - - Copyright (c) 2013 The Chromium Authors. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -This project includes code from Daniel Lemire's FrameOfReference project. - -https://github.com/lemire/FrameOfReference/blob/6ccaf9e97160f9a3b299e23a8ef739e711ef0c71/src/bpacking.cpp -https://github.com/lemire/FrameOfReference/blob/146948b6058a976bc7767262ad3a2ce201486b93/scripts/turbopacking64.py - -Copyright: 2013 Daniel Lemire -Home page: http://lemire.me/en/ -Project page: https://github.com/lemire/FrameOfReference -License: Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -This project includes code from the TensorFlow project - -Copyright 2015 The TensorFlow Authors. All Rights Reserved. - -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. - --------------------------------------------------------------------------------- - -This project includes code from the NumPy project. - -https://github.com/numpy/numpy/blob/e1f191c46f2eebd6cb892a4bfe14d9dd43a06c4e/numpy/core/src/multiarray/multiarraymodule.c#L2910 - -https://github.com/numpy/numpy/blob/68fd82271b9ea5a9e50d4e761061dfcca851382a/numpy/core/src/multiarray/datetime.c - -Copyright (c) 2005-2017, NumPy Developers. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * Neither the name of the NumPy Developers nor the names of any - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -This project includes code from the Boost project - -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - --------------------------------------------------------------------------------- - -This project includes code from the FlatBuffers project - -Copyright 2014 Google Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - --------------------------------------------------------------------------------- - -This project includes code from the tslib project - -Copyright 2015 Microsoft Corporation. All rights reserved. - -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. - --------------------------------------------------------------------------------- - -This project includes code from the jemalloc project - -https://github.com/jemalloc/jemalloc - -Copyright (C) 2002-2017 Jason Evans . -All rights reserved. -Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved. -Copyright (C) 2009-2017 Facebook, Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice(s), - this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice(s), - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -EVENT SHALL THE COPYRIGHT HOLDER(S) BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. --------------------------------------------------------------------------------- - -This project includes code from the Go project, BSD 3-clause license + PATENTS -weak patent termination clause -(https://github.com/golang/go/blob/master/PATENTS). - -Copyright (c) 2009 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -This project includes code from the hs2client - -https://github.com/cloudera/hs2client - -Copyright 2016 Cloudera Inc. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. - --------------------------------------------------------------------------------- - -The script ci/scripts/util_wait_for_it.sh has the following license - -Copyright (c) 2016 Giles Hall - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -The script r/configure has the following license (MIT) - -Copyright (c) 2017, Jeroen Ooms and Jim Hester - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -cpp/src/arrow/util/logging.cc, cpp/src/arrow/util/logging.h and -cpp/src/arrow/util/logging-test.cc are adapted from -Ray Project (https://github.com/ray-project/ray) (Apache 2.0). - -Copyright (c) 2016 Ray Project (https://github.com/ray-project/ray) - -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. - --------------------------------------------------------------------------------- -The files cpp/src/arrow/vendored/datetime/date.h, cpp/src/arrow/vendored/datetime/tz.h, -cpp/src/arrow/vendored/datetime/tz_private.h, cpp/src/arrow/vendored/datetime/ios.h, -cpp/src/arrow/vendored/datetime/ios.mm, -cpp/src/arrow/vendored/datetime/tz.cpp are adapted from -Howard Hinnant's date library (https://github.com/HowardHinnant/date) -It is licensed under MIT license. - -The MIT License (MIT) -Copyright (c) 2015, 2016, 2017 Howard Hinnant -Copyright (c) 2016 Adrian Colomitchi -Copyright (c) 2017 Florian Dang -Copyright (c) 2017 Paul Thompson -Copyright (c) 2018 Tomasz Kamiński - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -The file cpp/src/arrow/util/utf8.h includes code adapted from the page - https://bjoern.hoehrmann.de/utf-8/decoder/dfa/ -with the following license (MIT) - -Copyright (c) 2008-2009 Bjoern Hoehrmann - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -The files in cpp/src/arrow/vendored/xxhash/ have the following license -(BSD 2-Clause License) - -xxHash Library -Copyright (c) 2012-2014, Yann Collet -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -You can contact the author at : -- xxHash homepage: http://www.xxhash.com -- xxHash source repository : https://github.com/Cyan4973/xxHash - --------------------------------------------------------------------------------- - -The files in cpp/src/arrow/vendored/double-conversion/ have the following license -(BSD 3-Clause License) - -Copyright 2006-2011, the V8 project authors. All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -The files in cpp/src/arrow/vendored/uriparser/ have the following license -(BSD 3-Clause License) - -uriparser - RFC 3986 URI parsing library - -Copyright (C) 2007, Weijia Song -Copyright (C) 2007, Sebastian Pipping -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - * Redistributions of source code must retain the above - copyright notice, this list of conditions and the following - disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials - provided with the distribution. - - * Neither the name of the nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior written - permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -The files under dev/tasks/conda-recipes have the following license - -BSD 3-clause license -Copyright (c) 2015-2018, conda-forge -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its contributors - may be used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -The files in cpp/src/arrow/vendored/utfcpp/ have the following license - -Copyright 2006-2018 Nemanja Trifunovic - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. - --------------------------------------------------------------------------------- - -This project includes code from Apache Kudu. - - * cpp/cmake_modules/CompilerInfo.cmake is based on Kudu's cmake_modules/CompilerInfo.cmake - -Copyright: 2016 The Apache Software Foundation. -Home page: https://kudu.apache.org/ -License: http://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -This project includes code from Apache Impala (incubating), formerly -Impala. The Impala code and rights were donated to the ASF as part of the -Incubator process after the initial code imports into Apache Parquet. - -Copyright: 2012 Cloudera, Inc. -Copyright: 2016 The Apache Software Foundation. -Home page: http://impala.apache.org/ -License: http://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -This project includes code from Apache Aurora. - -* dev/release/{release,changelog,release-candidate} are based on the scripts from - Apache Aurora - -Copyright: 2016 The Apache Software Foundation. -Home page: https://aurora.apache.org/ -License: http://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -This project includes code from the Google styleguide. - -* cpp/build-support/cpplint.py is based on the scripts from the Google styleguide. - -Copyright: 2009 Google Inc. All rights reserved. -Homepage: https://github.com/google/styleguide -License: 3-clause BSD - --------------------------------------------------------------------------------- - -This project includes code from Snappy. - -* cpp/cmake_modules/{SnappyCMakeLists.txt,SnappyConfig.h} are based on code - from Google's Snappy project. - -Copyright: 2009 Google Inc. All rights reserved. -Homepage: https://github.com/google/snappy -License: 3-clause BSD - --------------------------------------------------------------------------------- - -This project includes code from the manylinux project. - -* python/manylinux1/scripts/{build_python.sh,python-tag-abi-tag.py, - requirements.txt} are based on code from the manylinux project. - -Copyright: 2016 manylinux -Homepage: https://github.com/pypa/manylinux -License: The MIT License (MIT) - --------------------------------------------------------------------------------- - -This project includes code from the cymove project: - -* python/pyarrow/includes/common.pxd includes code from the cymove project - -The MIT License (MIT) -Copyright (c) 2019 Omer Ozarslan - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE -OR OTHER DEALINGS IN THE SOFTWARE. - --------------------------------------------------------------------------------- - -The projects includes code from the Ursabot project under the dev/archery -directory. - -License: BSD 2-Clause - -Copyright 2019 RStudio, Inc. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -This project include code from mingw-w64. - -* cpp/src/arrow/util/cpu-info.cc has a polyfill for mingw-w64 < 5 - -Copyright (c) 2009 - 2013 by the mingw-w64 project -Homepage: https://mingw-w64.org -License: Zope Public License (ZPL) Version 2.1. - ---------------------------------------------------------------------------------- - -This project include code from Google's Asylo project. - -* cpp/src/arrow/result.h is based on status_or.h - -Copyright (c) Copyright 2017 Asylo authors -Homepage: https://asylo.dev/ -License: Apache 2.0 - --------------------------------------------------------------------------------- - -This project includes code from Google's protobuf project - -* cpp/src/arrow/result.h ARROW_ASSIGN_OR_RAISE is based off ASSIGN_OR_RETURN -* cpp/src/arrow/util/bit_stream_utils.h contains code from wire_format_lite.h - -Copyright 2008 Google Inc. All rights reserved. -Homepage: https://developers.google.com/protocol-buffers/ -License: - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Code generated by the Protocol Buffer compiler is owned by the owner -of the input file used when generating it. This code is not -standalone and requires a support library to be linked with it. This -support library is itself covered by the above license. - --------------------------------------------------------------------------------- - -3rdparty dependency LLVM is statically linked in certain binary distributions. -Additionally some sections of source code have been derived from sources in LLVM -and have been clearly labeled as such. LLVM has the following license: - -============================================================================== -The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: -============================================================================== - - 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. - - ----- LLVM Exceptions to the Apache 2.0 License ---- - -As an exception, if, as a result of your compiling your source code, portions -of this Software are embedded into an Object form of such source code, you -may redistribute such embedded portions in such Object form without complying -with the conditions of Sections 4(a), 4(b) and 4(d) of the License. - -In addition, if you combine or link compiled forms of this Software with -software that is licensed under the GPLv2 ("Combined Software") and if a -court of competent jurisdiction determines that the patent provision (Section -3), the indemnity provision (Section 9) or other Section of the License -conflicts with the conditions of the GPLv2, you may retroactively and -prospectively choose to deem waived or otherwise exclude such Section(s) of -the License, but only in their entirety and only with respect to the Combined -Software. - -============================================================================== -Software from third parties included in the LLVM Project: -============================================================================== -The LLVM Project contains third party software which is under different license -terms. All such code will be identified clearly using at least one of two -mechanisms: -1) It will be in a separate directory tree with its own `LICENSE.txt` or - `LICENSE` file at the top containing the specific license and restrictions - which apply to that software, or -2) It will contain specific license and restriction terms at the top of every - file. - --------------------------------------------------------------------------------- - -3rdparty dependency gRPC is statically linked in certain binary -distributions, like the python wheels. gRPC has the following license: - -Copyright 2014 gRPC authors. - -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. - --------------------------------------------------------------------------------- - -3rdparty dependency Apache Thrift is statically linked in certain binary -distributions, like the python wheels. Apache Thrift has the following license: - -Apache Thrift -Copyright (C) 2006 - 2019, The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -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. - --------------------------------------------------------------------------------- - -3rdparty dependency Apache ORC is statically linked in certain binary -distributions, like the python wheels. Apache ORC has the following license: - -Apache ORC -Copyright 2013-2019 The Apache Software Foundation - -This product includes software developed by The Apache Software -Foundation (http://www.apache.org/). - -This product includes software developed by Hewlett-Packard: -(c) Copyright [2014-2015] Hewlett-Packard Development Company, L.P - -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. - --------------------------------------------------------------------------------- - -3rdparty dependency zstd is statically linked in certain binary -distributions, like the python wheels. ZSTD has the following license: - -BSD License - -For Zstandard software - -Copyright (c) 2016-present, Facebook, Inc. All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name Facebook nor the names of its contributors may be used to - endorse or promote products derived from this software without specific - prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -3rdparty dependency lz4 is statically linked in certain binary -distributions, like the python wheels. lz4 has the following license: - -LZ4 Library -Copyright (c) 2011-2016, Yann Collet -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -3rdparty dependency Brotli is statically linked in certain binary -distributions, like the python wheels. Brotli has the following license: - -Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - --------------------------------------------------------------------------------- - -3rdparty dependency rapidjson is statically linked in certain binary -distributions, like the python wheels. rapidjson and its dependencies have the -following licenses: - -Tencent is pleased to support the open source community by making RapidJSON -available. - -Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. -All rights reserved. - -If you have downloaded a copy of the RapidJSON binary from Tencent, please note -that the RapidJSON binary is licensed under the MIT License. -If you have downloaded a copy of the RapidJSON source code from Tencent, please -note that RapidJSON source code is licensed under the MIT License, except for -the third-party components listed below which are subject to different license -terms. Your integration of RapidJSON into your own projects may require -compliance with the MIT License, as well as the other licenses applicable to -the third-party components included within RapidJSON. To avoid the problematic -JSON license in your own projects, it's sufficient to exclude the -bin/jsonchecker/ directory, as it's the only code under the JSON license. -A copy of the MIT License is included in this file. - -Other dependencies and licenses: - - Open Source Software Licensed Under the BSD License: - -------------------------------------------------------------------- - - The msinttypes r29 - Copyright (c) 2006-2013 Alexander Chemeris - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of copyright holder nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH - DAMAGE. - - Terms of the MIT License: - -------------------------------------------------------------------- - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - --------------------------------------------------------------------------------- - -3rdparty dependency snappy is statically linked in certain binary -distributions, like the python wheels. snappy has the following license: - -Copyright 2011, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -=== - -Some of the benchmark data in testdata/ is licensed differently: - - - fireworks.jpeg is Copyright 2013 Steinar H. Gunderson, and - is licensed under the Creative Commons Attribution 3.0 license - (CC-BY-3.0). See https://creativecommons.org/licenses/by/3.0/ - for more information. - - - kppkn.gtb is taken from the Gaviota chess tablebase set, and - is licensed under the MIT License. See - https://sites.google.com/site/gaviotachessengine/Home/endgame-tablebases-1 - for more information. - - - paper-100k.pdf is an excerpt (bytes 92160 to 194560) from the paper - “Combinatorial Modeling of Chromatin Features Quantitatively Predicts DNA - Replication Timing in _Drosophila_” by Federico Comoglio and Renato Paro, - which is licensed under the CC-BY license. See - http://www.ploscompbiol.org/static/license for more ifnormation. - - - alice29.txt, asyoulik.txt, plrabn12.txt and lcet10.txt are from Project - Gutenberg. The first three have expired copyrights and are in the public - domain; the latter does not have expired copyright, but is still in the - public domain according to the license information - (http://www.gutenberg.org/ebooks/53). - --------------------------------------------------------------------------------- - -3rdparty dependency gflags is statically linked in certain binary -distributions, like the python wheels. gflags has the following license: - -Copyright (c) 2006, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -3rdparty dependency glog is statically linked in certain binary -distributions, like the python wheels. glog has the following license: - -Copyright (c) 2008, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - -A function gettimeofday in utilities.cc is based on - -http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd - -The license of this code is: - -Copyright (c) 2003-2008, Jouni Malinen and contributors -All Rights Reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name(s) of the above-listed copyright holder(s) nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -3rdparty dependency re2 is statically linked in certain binary -distributions, like the python wheels. re2 has the following license: - -Copyright (c) 2009 The RE2 Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - * Neither the name of Google Inc. nor the names of its contributors - may be used to endorse or promote products derived from this - software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -3rdparty dependency c-ares is statically linked in certain binary -distributions, like the python wheels. c-ares has the following license: - -# c-ares license - -Copyright (c) 2007 - 2018, Daniel Stenberg with many contributors, see AUTHORS -file. - -Copyright 1998 by the Massachusetts Institute of Technology. - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided that -the above copyright notice appear in all copies and that both that copyright -notice and this permission notice appear in supporting documentation, and that -the name of M.I.T. not be used in advertising or publicity pertaining to -distribution of the software without specific, written prior permission. -M.I.T. makes no representations about the suitability of this software for any -purpose. It is provided "as is" without express or implied warranty. - --------------------------------------------------------------------------------- - -3rdparty dependency zlib is redistributed as a dynamically linked shared -library in certain binary distributions, like the python wheels. In the future -this will likely change to static linkage. zlib has the following license: - -zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.11, January 15th, 2017 - - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - --------------------------------------------------------------------------------- - -3rdparty dependency openssl is redistributed as a dynamically linked shared -library in certain binary distributions, like the python wheels. openssl -preceding version 3 has the following license: - - LICENSE ISSUES - ============== - - The OpenSSL toolkit stays under a double license, i.e. both the conditions of - the OpenSSL License and the original SSLeay license apply to the toolkit. - See below for the actual license texts. - - OpenSSL License - --------------- - -/* ==================================================================== - * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * 3. All advertising materials mentioning features or use of this - * software must display the following acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" - * - * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to - * endorse or promote products derived from this software without - * prior written permission. For written permission, please contact - * openssl-core@openssl.org. - * - * 5. Products derived from this software may not be called "OpenSSL" - * nor may "OpenSSL" appear in their names without prior written - * permission of the OpenSSL Project. - * - * 6. Redistributions of any form whatsoever must retain the following - * acknowledgment: - * "This product includes software developed by the OpenSSL Project - * for use in the OpenSSL Toolkit (http://www.openssl.org/)" - * - * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY - * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== - * - * This product includes cryptographic software written by Eric Young - * (eay@cryptsoft.com). This product includes software written by Tim - * Hudson (tjh@cryptsoft.com). - * - */ - - Original SSLeay License - ----------------------- - -/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) - * All rights reserved. - * - * This package is an SSL implementation written - * by Eric Young (eay@cryptsoft.com). - * The implementation was written so as to conform with Netscapes SSL. - * - * This library is free for commercial and non-commercial use as long as - * the following conditions are aheared to. The following conditions - * apply to all code found in this distribution, be it the RC4, RSA, - * lhash, DES, etc., code; not just the SSL code. The SSL documentation - * included with this distribution is covered by the same copyright terms - * except that the holder is Tim Hudson (tjh@cryptsoft.com). - * - * Copyright remains Eric Young's, and as such any Copyright notices in - * the code are not to be removed. - * If this package is used in a product, Eric Young should be given attribution - * as the author of the parts of the library used. - * This can be in the form of a textual message at program startup or - * in documentation (online or textual) provided with the package. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * "This product includes cryptographic software written by - * Eric Young (eay@cryptsoft.com)" - * The word 'cryptographic' can be left out if the rouines from the library - * being used are not cryptographic related :-). - * 4. If you include any Windows specific code (or a derivative thereof) from - * the apps directory (application code) you must include an acknowledgement: - * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" - * - * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * The licence and distribution terms for any publically available version or - * derivative of this code cannot be changed. i.e. this code cannot simply be - * copied and put under another distribution licence - * [including the GNU Public Licence.] - */ - --------------------------------------------------------------------------------- - -This project includes code from the rtools-backports project. - -* ci/scripts/PKGBUILD and ci/scripts/r_windows_build.sh are based on code - from the rtools-backports project. - -Copyright: Copyright (c) 2013 - 2019, Алексей and Jeroen Ooms. -All rights reserved. -Homepage: https://github.com/r-windows/rtools-backports -License: 3-clause BSD - --------------------------------------------------------------------------------- - -Some code from pandas has been adapted for the pyarrow codebase. pandas is -available under the 3-clause BSD license, which follows: - -pandas license -============== - -Copyright (c) 2011-2012, Lambda Foundry, Inc. and PyData Development Team -All rights reserved. - -Copyright (c) 2008-2011 AQR Capital Management, LLC -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * Neither the name of the copyright holder nor the names of any - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -Some bits from DyND, in particular aspects of the build system, have been -adapted from libdynd and dynd-python under the terms of the BSD 2-clause -license - -The BSD 2-Clause License - - Copyright (C) 2011-12, Dynamic NDArray Developers - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Dynamic NDArray Developers list: - - * Mark Wiebe - * Continuum Analytics - --------------------------------------------------------------------------------- - -Some source code from Ibis (https://github.com/cloudera/ibis) has been adapted -for PyArrow. Ibis is released under the Apache License, Version 2.0. - --------------------------------------------------------------------------------- - -dev/tasks/homebrew-formulae/apache-arrow.rb has the following license: - -BSD 2-Clause License - -Copyright (c) 2009-present, Homebrew contributors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------------------------- - -cpp/src/arrow/vendored/base64.cpp has the following license - -ZLIB License - -Copyright (C) 2004-2017 René Nyffenegger - -This source code is provided 'as-is', without any express or implied -warranty. In no event will the author be held liable for any damages arising -from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including -commercial applications, and to alter it and redistribute it freely, subject to -the following restrictions: - -1. The origin of this source code must not be misrepresented; you must not - claim that you wrote the original source code. If you use this source code - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - -2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original source code. - -3. This notice may not be removed or altered from any source distribution. - -René Nyffenegger rene.nyffenegger@adp-gmbh.ch - --------------------------------------------------------------------------------- - -This project includes code from Folly. - - * cpp/src/arrow/vendored/ProducerConsumerQueue.h - -is based on Folly's - - * folly/Portability.h - * folly/lang/Align.h - * folly/ProducerConsumerQueue.h - -Copyright: Copyright (c) Facebook, Inc. and its affiliates. -Home page: https://github.com/facebook/folly -License: http://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -The file cpp/src/arrow/vendored/musl/strptime.c has the following license - -Copyright © 2005-2020 Rich Felker, et al. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - --------------------------------------------------------------------------------- - -The file cpp/cmake_modules/BuildUtils.cmake contains code from - -https://gist.github.com/cristianadam/ef920342939a89fae3e8a85ca9459b49 - -which is made available under the MIT license - -Copyright (c) 2019 Cristian Adam - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -The files in cpp/src/arrow/vendored/portable-snippets/ contain code from - -https://github.com/nemequ/portable-snippets - -and have the following copyright notice: - -Each source file contains a preamble explaining the license situation -for that file, which takes priority over this file. With the -exception of some code pulled in from other repositories (such as -µnit, an MIT-licensed project which is used for testing), the code is -public domain, released using the CC0 1.0 Universal dedication (*). - -(*) https://creativecommons.org/publicdomain/zero/1.0/legalcode - --------------------------------------------------------------------------------- - -The files in cpp/src/arrow/vendored/fast_float/ contain code from - -https://github.com/lemire/fast_float - -which is made available under the Apache License 2.0. - --------------------------------------------------------------------------------- - -The file python/pyarrow/vendored/docscrape.py contains code from - -https://github.com/numpy/numpydoc/ - -which is made available under the BSD 2-clause license. - --------------------------------------------------------------------------------- - -The file python/pyarrow/vendored/version.py contains code from - -https://github.com/pypa/packaging/ - -which is made available under both the Apache license v2.0 and the -BSD 2-clause license. - --------------------------------------------------------------------------------- - -The files in cpp/src/arrow/vendored/pcg contain code from - -https://github.com/imneme/pcg-cpp - -and have the following copyright notice: - -Copyright 2014-2019 Melissa O'Neill , - and the PCG Project contributors. - -SPDX-License-Identifier: (Apache-2.0 OR MIT) - -Licensed under the Apache License, Version 2.0 (provided in -LICENSE-APACHE.txt and at http://www.apache.org/licenses/LICENSE-2.0) -or under the MIT license (provided in LICENSE-MIT.txt and at -http://opensource.org/licenses/MIT), at your option. This file may not -be copied, modified, or distributed except according to those terms. - -Distributed on an "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, either -express or implied. See your chosen license for details. - --------------------------------------------------------------------------------- -r/R/dplyr-count-tally.R (some portions) - -Some portions of this file are derived from code from - -https://github.com/tidyverse/dplyr/ - -which is made available under the MIT license - -Copyright (c) 2013-2019 RStudio and others. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the “Software”), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -The file src/arrow/util/io_util.cc contains code from the CPython project -which is made available under the Python Software Foundation License Version 2. - --------------------------------------------------------------------------------- - -3rdparty dependency opentelemetry-cpp is statically linked in certain binary -distributions. opentelemetry-cpp is made available under the Apache License 2.0. - -Copyright The OpenTelemetry Authors -SPDX-License-Identifier: Apache-2.0 - --------------------------------------------------------------------------------- - -ci/conan/ is based on code from Conan Package and Dependency Manager. - -Copyright (c) 2019 Conan.io - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- - -3rdparty dependency UCX is redistributed as a dynamically linked shared -library in certain binary distributions. UCX has the following license: - -Copyright (c) 2014-2015 UT-Battelle, LLC. All rights reserved. -Copyright (C) 2014-2020 Mellanox Technologies Ltd. All rights reserved. -Copyright (C) 2014-2015 The University of Houston System. All rights reserved. -Copyright (C) 2015 The University of Tennessee and The University - of Tennessee Research Foundation. All rights reserved. -Copyright (C) 2016-2020 ARM Ltd. All rights reserved. -Copyright (c) 2016 Los Alamos National Security, LLC. All rights reserved. -Copyright (C) 2016-2020 Advanced Micro Devices, Inc. All rights reserved. -Copyright (C) 2019 UChicago Argonne, LLC. All rights reserved. -Copyright (c) 2018-2020 NVIDIA CORPORATION. All rights reserved. -Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved. -Copyright (C) 2016-2020 Stony Brook University. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -3. Neither the name of the copyright holder nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - --------------------------------------------------------------------------------- - -The file dev/tasks/r/github.packages.yml contains code from - -https://github.com/ursa-labs/arrow-r-nightly - -which is made available under the Apache License 2.0. - --------------------------------------------------------------------------------- -.github/actions/sync-nightlies/action.yml (some portions) - -Some portions of this file are derived from code from - -https://github.com/JoshPiper/rsync-docker - -which is made available under the MIT license - -Copyright (c) 2020 Joshua Piper - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- -.github/actions/sync-nightlies/action.yml (some portions) - -Some portions of this file are derived from code from - -https://github.com/burnett01/rsync-deployments - -which is made available under the MIT license - -Copyright (c) 2019-2022 Contention -Copyright (c) 2019-2022 Burnett01 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- -java/vector/src/main/java/org/apache/arrow/vector/util/IntObjectHashMap.java -java/vector/src/main/java/org/apache/arrow/vector/util/IntObjectMap.java - -These file are derived from code from Netty, which is made available under the -Apache License 2.0. diff --git a/modules/arrow-flight-rpc/licenses/flight-core-NOTICE.txt b/modules/arrow-flight-rpc/licenses/flight-core-NOTICE.txt deleted file mode 100644 index 2089c6fb20358..0000000000000 --- a/modules/arrow-flight-rpc/licenses/flight-core-NOTICE.txt +++ /dev/null @@ -1,84 +0,0 @@ -Apache Arrow -Copyright 2016-2024 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -This product includes software from the SFrame project (BSD, 3-clause). -* Copyright (C) 2015 Dato, Inc. -* Copyright (c) 2009 Carnegie Mellon University. - -This product includes software from the Feather project (Apache 2.0) -https://github.com/wesm/feather - -This product includes software from the DyND project (BSD 2-clause) -https://github.com/libdynd - -This product includes software from the LLVM project - * distributed under the University of Illinois Open Source - -This product includes software from the google-lint project - * Copyright (c) 2009 Google Inc. All rights reserved. - -This product includes software from the mman-win32 project - * Copyright https://code.google.com/p/mman-win32/ - * Licensed under the MIT License; - -This product includes software from the LevelDB project - * Copyright (c) 2011 The LevelDB Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * Moved from Kudu http://github.com/cloudera/kudu - -This product includes software from the CMake project - * Copyright 2001-2009 Kitware, Inc. - * Copyright 2012-2014 Continuum Analytics, Inc. - * All rights reserved. - -This product includes software from https://github.com/matthew-brett/multibuild (BSD 2-clause) - * Copyright (c) 2013-2016, Matt Terry and Matthew Brett; all rights reserved. - -This product includes software from the Ibis project (Apache 2.0) - * Copyright (c) 2015 Cloudera, Inc. - * https://github.com/cloudera/ibis - -This product includes software from Dremio (Apache 2.0) - * Copyright (C) 2017-2018 Dremio Corporation - * https://github.com/dremio/dremio-oss - -This product includes software from Google Guava (Apache 2.0) - * Copyright (C) 2007 The Guava Authors - * https://github.com/google/guava - -This product include software from CMake (BSD 3-Clause) - * CMake - Cross Platform Makefile Generator - * Copyright 2000-2019 Kitware, Inc. and Contributors - -The web site includes files generated by Jekyll. - --------------------------------------------------------------------------------- - -This product includes code from Apache Kudu, which includes the following in -its NOTICE file: - - Apache Kudu - Copyright 2016 The Apache Software Foundation - - This product includes software developed at - The Apache Software Foundation (http://www.apache.org/). - - Portions of this software were developed at - Cloudera, Inc (http://www.cloudera.com/). - --------------------------------------------------------------------------------- - -This product includes code from Apache ORC, which includes the following in -its NOTICE file: - - Apache ORC - Copyright 2013-2019 The Apache Software Foundation - - This product includes software developed by The Apache Software - Foundation (http://www.apache.org/). - - This product includes software developed by Hewlett-Packard: - (c) Copyright [2014-2015] Hewlett-Packard Development Company, L.P diff --git a/modules/arrow-flight-rpc/licenses/grpc-all-1.68.2.jar.sha1 b/modules/arrow-flight-rpc/licenses/grpc-all-1.68.2.jar.sha1 deleted file mode 100644 index 934c63e896716..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-all-1.68.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -3ddb9526acfc16bdf83cb5cc3a1c9c1d9c0b50ae \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/grpc-all-LICENSE.txt b/modules/arrow-flight-rpc/licenses/grpc-all-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-all-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/grpc-all-NOTICE.txt b/modules/arrow-flight-rpc/licenses/grpc-all-NOTICE.txt deleted file mode 100644 index f70c5620cf75a..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-all-NOTICE.txt +++ /dev/null @@ -1,62 +0,0 @@ -Copyright 2014 The gRPC Authors - -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. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'OkHttp', an open source -HTTP & SPDY client for Android and Java applications, which can be obtained -at: - - * LICENSE: - * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/square/okhttp - * LOCATION_IN_GRPC: - * okhttp/third_party/okhttp - -This product contains a modified portion of 'Envoy', an open source -cloud-native high-performance edge/middle/service proxy, which can be -obtained at: - - * LICENSE: - * xds/third_party/envoy/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/envoy/NOTICE - * HOMEPAGE: - * https://www.envoyproxy.io - * LOCATION_IN_GRPC: - * xds/third_party/envoy - -This product contains a modified portion of 'protoc-gen-validate (PGV)', -an open source protoc plugin to generate polyglot message validators, -which can be obtained at: - - * LICENSE: - * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/protoc-gen-validate/NOTICE - * HOMEPAGE: - * https://github.com/envoyproxy/protoc-gen-validate - * LOCATION_IN_GRPC: - * xds/third_party/protoc-gen-validate - -This product contains a modified portion of 'udpa', -an open source universal data plane API, which can be obtained at: - - * LICENSE: - * xds/third_party/udpa/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/cncf/udpa - * LOCATION_IN_GRPC: - * xds/third_party/udpa diff --git a/modules/arrow-flight-rpc/licenses/grpc-api-1.68.2.jar.sha1 b/modules/arrow-flight-rpc/licenses/grpc-api-1.68.2.jar.sha1 deleted file mode 100644 index 1844172dec982..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-api-1.68.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -a257a5dd25dda1c97a99b56d5b9c1e56c12ae554 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/grpc-api-LICENSE.txt b/modules/arrow-flight-rpc/licenses/grpc-api-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-api-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/grpc-api-NOTICE.txt b/modules/arrow-flight-rpc/licenses/grpc-api-NOTICE.txt deleted file mode 100644 index f70c5620cf75a..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-api-NOTICE.txt +++ /dev/null @@ -1,62 +0,0 @@ -Copyright 2014 The gRPC Authors - -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. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'OkHttp', an open source -HTTP & SPDY client for Android and Java applications, which can be obtained -at: - - * LICENSE: - * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/square/okhttp - * LOCATION_IN_GRPC: - * okhttp/third_party/okhttp - -This product contains a modified portion of 'Envoy', an open source -cloud-native high-performance edge/middle/service proxy, which can be -obtained at: - - * LICENSE: - * xds/third_party/envoy/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/envoy/NOTICE - * HOMEPAGE: - * https://www.envoyproxy.io - * LOCATION_IN_GRPC: - * xds/third_party/envoy - -This product contains a modified portion of 'protoc-gen-validate (PGV)', -an open source protoc plugin to generate polyglot message validators, -which can be obtained at: - - * LICENSE: - * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/protoc-gen-validate/NOTICE - * HOMEPAGE: - * https://github.com/envoyproxy/protoc-gen-validate - * LOCATION_IN_GRPC: - * xds/third_party/protoc-gen-validate - -This product contains a modified portion of 'udpa', -an open source universal data plane API, which can be obtained at: - - * LICENSE: - * xds/third_party/udpa/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/cncf/udpa - * LOCATION_IN_GRPC: - * xds/third_party/udpa diff --git a/modules/arrow-flight-rpc/licenses/grpc-core-1.68.2.jar.sha1 b/modules/arrow-flight-rpc/licenses/grpc-core-1.68.2.jar.sha1 deleted file mode 100644 index e20345d29e914..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-core-1.68.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -b0fd51a1c029785d1c9ae2cfc80a296b60dfcfdb \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/grpc-core-LICENSE.txt b/modules/arrow-flight-rpc/licenses/grpc-core-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-core-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/grpc-core-NOTICE.txt b/modules/arrow-flight-rpc/licenses/grpc-core-NOTICE.txt deleted file mode 100644 index f70c5620cf75a..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-core-NOTICE.txt +++ /dev/null @@ -1,62 +0,0 @@ -Copyright 2014 The gRPC Authors - -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. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'OkHttp', an open source -HTTP & SPDY client for Android and Java applications, which can be obtained -at: - - * LICENSE: - * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/square/okhttp - * LOCATION_IN_GRPC: - * okhttp/third_party/okhttp - -This product contains a modified portion of 'Envoy', an open source -cloud-native high-performance edge/middle/service proxy, which can be -obtained at: - - * LICENSE: - * xds/third_party/envoy/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/envoy/NOTICE - * HOMEPAGE: - * https://www.envoyproxy.io - * LOCATION_IN_GRPC: - * xds/third_party/envoy - -This product contains a modified portion of 'protoc-gen-validate (PGV)', -an open source protoc plugin to generate polyglot message validators, -which can be obtained at: - - * LICENSE: - * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/protoc-gen-validate/NOTICE - * HOMEPAGE: - * https://github.com/envoyproxy/protoc-gen-validate - * LOCATION_IN_GRPC: - * xds/third_party/protoc-gen-validate - -This product contains a modified portion of 'udpa', -an open source universal data plane API, which can be obtained at: - - * LICENSE: - * xds/third_party/udpa/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/cncf/udpa - * LOCATION_IN_GRPC: - * xds/third_party/udpa diff --git a/modules/arrow-flight-rpc/licenses/grpc-netty-1.68.2.jar.sha1 b/modules/arrow-flight-rpc/licenses/grpc-netty-1.68.2.jar.sha1 deleted file mode 100644 index 36be00ed13330..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-netty-1.68.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -3c3279d2e3520195fd26e0c3d9aca2ed1157d8c3 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/grpc-netty-LICENSE.txt b/modules/arrow-flight-rpc/licenses/grpc-netty-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-netty-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/grpc-netty-NOTICE.txt b/modules/arrow-flight-rpc/licenses/grpc-netty-NOTICE.txt deleted file mode 100644 index f70c5620cf75a..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-netty-NOTICE.txt +++ /dev/null @@ -1,62 +0,0 @@ -Copyright 2014 The gRPC Authors - -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. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'OkHttp', an open source -HTTP & SPDY client for Android and Java applications, which can be obtained -at: - - * LICENSE: - * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/square/okhttp - * LOCATION_IN_GRPC: - * okhttp/third_party/okhttp - -This product contains a modified portion of 'Envoy', an open source -cloud-native high-performance edge/middle/service proxy, which can be -obtained at: - - * LICENSE: - * xds/third_party/envoy/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/envoy/NOTICE - * HOMEPAGE: - * https://www.envoyproxy.io - * LOCATION_IN_GRPC: - * xds/third_party/envoy - -This product contains a modified portion of 'protoc-gen-validate (PGV)', -an open source protoc plugin to generate polyglot message validators, -which can be obtained at: - - * LICENSE: - * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/protoc-gen-validate/NOTICE - * HOMEPAGE: - * https://github.com/envoyproxy/protoc-gen-validate - * LOCATION_IN_GRPC: - * xds/third_party/protoc-gen-validate - -This product contains a modified portion of 'udpa', -an open source universal data plane API, which can be obtained at: - - * LICENSE: - * xds/third_party/udpa/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/cncf/udpa - * LOCATION_IN_GRPC: - * xds/third_party/udpa diff --git a/modules/arrow-flight-rpc/licenses/grpc-protobuf-1.68.2.jar.sha1 b/modules/arrow-flight-rpc/licenses/grpc-protobuf-1.68.2.jar.sha1 deleted file mode 100644 index e861b41837f33..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-protobuf-1.68.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -35b28e0d57874021cd31e76dd4a795f76a82471e \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/grpc-protobuf-LICENSE.txt b/modules/arrow-flight-rpc/licenses/grpc-protobuf-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-protobuf-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/grpc-protobuf-NOTICE.txt b/modules/arrow-flight-rpc/licenses/grpc-protobuf-NOTICE.txt deleted file mode 100644 index f70c5620cf75a..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-protobuf-NOTICE.txt +++ /dev/null @@ -1,62 +0,0 @@ -Copyright 2014 The gRPC Authors - -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. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'OkHttp', an open source -HTTP & SPDY client for Android and Java applications, which can be obtained -at: - - * LICENSE: - * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/square/okhttp - * LOCATION_IN_GRPC: - * okhttp/third_party/okhttp - -This product contains a modified portion of 'Envoy', an open source -cloud-native high-performance edge/middle/service proxy, which can be -obtained at: - - * LICENSE: - * xds/third_party/envoy/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/envoy/NOTICE - * HOMEPAGE: - * https://www.envoyproxy.io - * LOCATION_IN_GRPC: - * xds/third_party/envoy - -This product contains a modified portion of 'protoc-gen-validate (PGV)', -an open source protoc plugin to generate polyglot message validators, -which can be obtained at: - - * LICENSE: - * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/protoc-gen-validate/NOTICE - * HOMEPAGE: - * https://github.com/envoyproxy/protoc-gen-validate - * LOCATION_IN_GRPC: - * xds/third_party/protoc-gen-validate - -This product contains a modified portion of 'udpa', -an open source universal data plane API, which can be obtained at: - - * LICENSE: - * xds/third_party/udpa/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/cncf/udpa - * LOCATION_IN_GRPC: - * xds/third_party/udpa diff --git a/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-1.68.2.jar.sha1 b/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-1.68.2.jar.sha1 deleted file mode 100644 index b2401f9752829..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-1.68.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -a53064b896adcfefe74362a33e111492351dfc03 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-LICENSE.txt b/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-NOTICE.txt b/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-NOTICE.txt deleted file mode 100644 index f70c5620cf75a..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-protobuf-lite-NOTICE.txt +++ /dev/null @@ -1,62 +0,0 @@ -Copyright 2014 The gRPC Authors - -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. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'OkHttp', an open source -HTTP & SPDY client for Android and Java applications, which can be obtained -at: - - * LICENSE: - * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/square/okhttp - * LOCATION_IN_GRPC: - * okhttp/third_party/okhttp - -This product contains a modified portion of 'Envoy', an open source -cloud-native high-performance edge/middle/service proxy, which can be -obtained at: - - * LICENSE: - * xds/third_party/envoy/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/envoy/NOTICE - * HOMEPAGE: - * https://www.envoyproxy.io - * LOCATION_IN_GRPC: - * xds/third_party/envoy - -This product contains a modified portion of 'protoc-gen-validate (PGV)', -an open source protoc plugin to generate polyglot message validators, -which can be obtained at: - - * LICENSE: - * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/protoc-gen-validate/NOTICE - * HOMEPAGE: - * https://github.com/envoyproxy/protoc-gen-validate - * LOCATION_IN_GRPC: - * xds/third_party/protoc-gen-validate - -This product contains a modified portion of 'udpa', -an open source universal data plane API, which can be obtained at: - - * LICENSE: - * xds/third_party/udpa/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/cncf/udpa - * LOCATION_IN_GRPC: - * xds/third_party/udpa diff --git a/modules/arrow-flight-rpc/licenses/grpc-stub-1.68.2.jar.sha1 b/modules/arrow-flight-rpc/licenses/grpc-stub-1.68.2.jar.sha1 deleted file mode 100644 index 118464f8f48ff..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-stub-1.68.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d58ee1cf723b4b5536d44b67e328c163580a8d98 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/grpc-stub-LICENSE.txt b/modules/arrow-flight-rpc/licenses/grpc-stub-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-stub-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/grpc-stub-NOTICE.txt b/modules/arrow-flight-rpc/licenses/grpc-stub-NOTICE.txt deleted file mode 100644 index f70c5620cf75a..0000000000000 --- a/modules/arrow-flight-rpc/licenses/grpc-stub-NOTICE.txt +++ /dev/null @@ -1,62 +0,0 @@ -Copyright 2014 The gRPC Authors - -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. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'OkHttp', an open source -HTTP & SPDY client for Android and Java applications, which can be obtained -at: - - * LICENSE: - * okhttp/third_party/okhttp/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/square/okhttp - * LOCATION_IN_GRPC: - * okhttp/third_party/okhttp - -This product contains a modified portion of 'Envoy', an open source -cloud-native high-performance edge/middle/service proxy, which can be -obtained at: - - * LICENSE: - * xds/third_party/envoy/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/envoy/NOTICE - * HOMEPAGE: - * https://www.envoyproxy.io - * LOCATION_IN_GRPC: - * xds/third_party/envoy - -This product contains a modified portion of 'protoc-gen-validate (PGV)', -an open source protoc plugin to generate polyglot message validators, -which can be obtained at: - - * LICENSE: - * xds/third_party/protoc-gen-validate/LICENSE (Apache License 2.0) - * NOTICE: - * xds/third_party/protoc-gen-validate/NOTICE - * HOMEPAGE: - * https://github.com/envoyproxy/protoc-gen-validate - * LOCATION_IN_GRPC: - * xds/third_party/protoc-gen-validate - -This product contains a modified portion of 'udpa', -an open source universal data plane API, which can be obtained at: - - * LICENSE: - * xds/third_party/udpa/LICENSE (Apache License 2.0) - * HOMEPAGE: - * https://github.com/cncf/udpa - * LOCATION_IN_GRPC: - * xds/third_party/udpa diff --git a/modules/arrow-flight-rpc/licenses/guava-33.3.1-jre.jar.sha1 b/modules/arrow-flight-rpc/licenses/guava-33.3.1-jre.jar.sha1 deleted file mode 100644 index ce59350c0d430..0000000000000 --- a/modules/arrow-flight-rpc/licenses/guava-33.3.1-jre.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -852f8b363da0111e819460021ca693cacca3e8db \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/guava-LICENSE.txt b/modules/arrow-flight-rpc/licenses/guava-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/guava-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/guava-NOTICE.txt b/modules/arrow-flight-rpc/licenses/guava-NOTICE.txt deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/modules/arrow-flight-rpc/licenses/jsr305-3.0.2.jar.sha1 b/modules/arrow-flight-rpc/licenses/jsr305-3.0.2.jar.sha1 deleted file mode 100644 index c5c92d87b9d6c..0000000000000 --- a/modules/arrow-flight-rpc/licenses/jsr305-3.0.2.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -25ea2e8b0c338a877313bd4672d3fe056ea78f0d \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/jsr305-LICENSE.txt b/modules/arrow-flight-rpc/licenses/jsr305-LICENSE.txt deleted file mode 100644 index 0cb8710c4b3e5..0000000000000 --- a/modules/arrow-flight-rpc/licenses/jsr305-LICENSE.txt +++ /dev/null @@ -1,29 +0,0 @@ -Copyright (c) 2007-2009, JSR305 expert group -All rights reserved. - -http://www.opensource.org/licenses/bsd-license.php - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the JSR305 expert group nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - diff --git a/modules/arrow-flight-rpc/licenses/jsr305-NOTICE.txt b/modules/arrow-flight-rpc/licenses/jsr305-NOTICE.txt deleted file mode 100644 index 8d1c8b69c3fce..0000000000000 --- a/modules/arrow-flight-rpc/licenses/jsr305-NOTICE.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/modules/arrow-flight-rpc/licenses/netty-LICENSE.txt b/modules/arrow-flight-rpc/licenses/netty-LICENSE.txt deleted file mode 100644 index d645695673349..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-LICENSE.txt +++ /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/modules/arrow-flight-rpc/licenses/netty-NOTICE.txt b/modules/arrow-flight-rpc/licenses/netty-NOTICE.txt deleted file mode 100644 index 5bbf91a14de23..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-NOTICE.txt +++ /dev/null @@ -1,116 +0,0 @@ - - The Netty Project - ================= - -Please visit the Netty web site for more information: - - * http://netty.io/ - -Copyright 2011 The Netty Project - -The Netty Project 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. - -Also, please refer to each LICENSE..txt file, which is located in -the 'license' directory of the distribution file, for the license terms of the -components that this product depends on. - -------------------------------------------------------------------------------- -This product contains the extensions to Java Collections Framework which has -been derived from the works by JSR-166 EG, Doug Lea, and Jason T. Greene: - - * LICENSE: - * license/LICENSE.jsr166y.txt (Public Domain) - * HOMEPAGE: - * http://gee.cs.oswego.edu/cgi-bin/viewcvs.cgi/jsr166/ - * http://viewvc.jboss.org/cgi-bin/viewvc.cgi/jbosscache/experimental/jsr166/ - -This product contains a modified version of Robert Harder's Public Domain -Base64 Encoder and Decoder, which can be obtained at: - - * LICENSE: - * license/LICENSE.base64.txt (Public Domain) - * HOMEPAGE: - * http://iharder.sourceforge.net/current/java/base64/ - -This product contains a modified version of 'JZlib', a re-implementation of -zlib in pure Java, which can be obtained at: - - * LICENSE: - * license/LICENSE.jzlib.txt (BSD Style License) - * HOMEPAGE: - * http://www.jcraft.com/jzlib/ - -This product contains a modified version of 'Webbit', a Java event based -WebSocket and HTTP server: - - * LICENSE: - * license/LICENSE.webbit.txt (BSD License) - * HOMEPAGE: - * https://github.com/joewalnes/webbit - -This product optionally depends on 'Protocol Buffers', Google's data -interchange format, which can be obtained at: - - * LICENSE: - * license/LICENSE.protobuf.txt (New BSD License) - * HOMEPAGE: - * http://code.google.com/p/protobuf/ - -This product optionally depends on 'Bouncy Castle Crypto APIs' to generate -a temporary self-signed X.509 certificate when the JVM does not provide the -equivalent functionality. It can be obtained at: - - * LICENSE: - * license/LICENSE.bouncycastle.txt (MIT License) - * HOMEPAGE: - * http://www.bouncycastle.org/ - -This product optionally depends on 'SLF4J', a simple logging facade for Java, -which can be obtained at: - - * LICENSE: - * license/LICENSE.slf4j.txt (MIT License) - * HOMEPAGE: - * http://www.slf4j.org/ - -This product optionally depends on 'Apache Commons Logging', a logging -framework, which can be obtained at: - - * LICENSE: - * license/LICENSE.commons-logging.txt (Apache License 2.0) - * HOMEPAGE: - * http://commons.apache.org/logging/ - -This product optionally depends on 'Apache Log4J', a logging framework, -which can be obtained at: - - * LICENSE: - * license/LICENSE.log4j.txt (Apache License 2.0) - * HOMEPAGE: - * http://logging.apache.org/log4j/ - -This product optionally depends on 'JBoss Logging', a logging framework, -which can be obtained at: - - * LICENSE: - * license/LICENSE.jboss-logging.txt (GNU LGPL 2.1) - * HOMEPAGE: - * http://anonsvn.jboss.org/repos/common/common-logging-spi/ - -This product optionally depends on 'Apache Felix', an open source OSGi -framework implementation, which can be obtained at: - - * LICENSE: - * license/LICENSE.felix.txt (Apache License 2.0) - * HOMEPAGE: - * http://felix.apache.org/ diff --git a/modules/arrow-flight-rpc/licenses/netty-codec-4.1.115.Final.jar.sha1 b/modules/arrow-flight-rpc/licenses/netty-codec-4.1.115.Final.jar.sha1 deleted file mode 100644 index e39392f923f7b..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-codec-4.1.115.Final.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d326bf3a4c785b272da3db6941779a1bd5448378 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/netty-codec-http-4.1.115.Final.jar.sha1 b/modules/arrow-flight-rpc/licenses/netty-codec-http-4.1.115.Final.jar.sha1 deleted file mode 100644 index ce4bdc323b2a0..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-codec-http-4.1.115.Final.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -80f0dece29a2c0269217e8dd1b6db6ff9710781f \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/netty-codec-http2-4.1.115.Final.jar.sha1 b/modules/arrow-flight-rpc/licenses/netty-codec-http2-4.1.115.Final.jar.sha1 deleted file mode 100644 index f718fc9bf1622..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-codec-http2-4.1.115.Final.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -0bc474c27c96e3a309da73160fbcfe0bd3aa85bc \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/netty-handler-4.1.115.Final.jar.sha1 b/modules/arrow-flight-rpc/licenses/netty-handler-4.1.115.Final.jar.sha1 deleted file mode 100644 index 5c58e02209691..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-handler-4.1.115.Final.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -d54dbf68b9d88a98240107758c6b63da5e46e23a \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/netty-resolver-4.1.115.Final.jar.sha1 b/modules/arrow-flight-rpc/licenses/netty-resolver-4.1.115.Final.jar.sha1 deleted file mode 100644 index b1d9f1f679966..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-resolver-4.1.115.Final.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -e33b4d476c03975957f5d8d0319d592bf2bc5e96 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/netty-transport-4.1.115.Final.jar.sha1 b/modules/arrow-flight-rpc/licenses/netty-transport-4.1.115.Final.jar.sha1 deleted file mode 100644 index aeeda9c282b30..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-transport-4.1.115.Final.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -39cef77c1a25908ac1abf4960c2e789f0bf70ff9 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/netty-transport-classes-epoll-4.1.115.Final.jar.sha1 b/modules/arrow-flight-rpc/licenses/netty-transport-classes-epoll-4.1.115.Final.jar.sha1 deleted file mode 100644 index aea007d98763e..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-transport-classes-epoll-4.1.115.Final.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -11fea00408ecbd8b8d1f0698d708e37db4a01841 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/netty-transport-native-unix-common-4.1.115.Final.jar.sha1 b/modules/arrow-flight-rpc/licenses/netty-transport-native-unix-common-4.1.115.Final.jar.sha1 deleted file mode 100644 index 41996121685f0..0000000000000 --- a/modules/arrow-flight-rpc/licenses/netty-transport-native-unix-common-4.1.115.Final.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -dc96c67d06cd6b5eb677f2728f27bf2e3d9a7284 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/parquet-arrow-1.13.1.jar.sha1 b/modules/arrow-flight-rpc/licenses/parquet-arrow-1.13.1.jar.sha1 deleted file mode 100644 index a1b89891ca8e1..0000000000000 --- a/modules/arrow-flight-rpc/licenses/parquet-arrow-1.13.1.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -9e59add52791af8b05c1aefe2a2f8865602c9368 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/parquet-arrow-LICENSE.txt b/modules/arrow-flight-rpc/licenses/parquet-arrow-LICENSE.txt deleted file mode 100644 index b0065815a5e92..0000000000000 --- a/modules/arrow-flight-rpc/licenses/parquet-arrow-LICENSE.txt +++ /dev/null @@ -1,218 +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 - --------------------------------------------------------------------------------- - -This product includes code from Apache Avro. - -Copyright: 2014 The Apache Software Foundation. -Home page: https://avro.apache.org/ -License: http://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -This project includes code from Daniel Lemire's JavaFastPFOR project. The -"Lemire" bit packing source code produced by parquet-generator is derived from -the JavaFastPFOR project. - -Copyright: 2013 Daniel Lemire -Home page: http://lemire.me/en/ -Project page: https://github.com/lemire/JavaFastPFOR -License: Apache License Version 2.0 http://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -This product includes code from Apache Spark. - -* dev/merge_parquet_pr.py is based on Spark's dev/merge_spark_pr.py - -Copyright: 2014 The Apache Software Foundation. -Home page: https://spark.apache.org/ -License: http://www.apache.org/licenses/LICENSE-2.0 - --------------------------------------------------------------------------------- - -This product includes code from Twitter's ElephantBird project. - -* parquet-hadoop's UnmaterializableRecordCounter.java includes code from - ElephantBird's LzoRecordReader.java - -Copyright: 2012-2014 Twitter -Home page: https://github.com/twitter/elephant-bird -License: http://www.apache.org/licenses/LICENSE-2.0 - diff --git a/modules/arrow-flight-rpc/licenses/parquet-arrow-NOTICE.txt b/modules/arrow-flight-rpc/licenses/parquet-arrow-NOTICE.txt deleted file mode 100644 index 46300d6cd98fd..0000000000000 --- a/modules/arrow-flight-rpc/licenses/parquet-arrow-NOTICE.txt +++ /dev/null @@ -1,94 +0,0 @@ - -Apache Parquet Java -Copyright 2014-2024 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - --------------------------------------------------------------------------------- - -This product includes parquet-tools, initially developed at ARRIS, Inc. with -the following copyright notice: - - Copyright 2013 ARRIS, Inc. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --------------------------------------------------------------------------------- - -This product includes parquet-protobuf, initially developed by Lukas Nalezenc -with the following copyright notice: - - Copyright 2013 Lukas Nalezenec. - - 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. - --------------------------------------------------------------------------------- - -This product includes code from Apache Avro, which includes the following in -its NOTICE file: - - Apache Avro - Copyright 2010-2015 The Apache Software Foundation - - This product includes software developed at - The Apache Software Foundation (http://www.apache.org/). - --------------------------------------------------------------------------------- - -This project includes code from Kite, developed at Cloudera, Inc. with -the following copyright notice: - -| Copyright 2013 Cloudera Inc. -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. - --------------------------------------------------------------------------------- - -This project includes code from Netflix, Inc. with the following copyright -notice: - -| Copyright 2016 Netflix, Inc. -| -| Licensed under the Apache License, Version 2.0 (the "License"); -| you may not use this file except in compliance with the License. -| You may obtain a copy of the License at -| -| http://www.apache.org/licenses/LICENSE-2.0 -| -| Unless required by applicable law or agreed to in writing, software -| distributed under the License is distributed on an "AS IS" BASIS, -| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -| See the License for the specific language governing permissions and -| limitations under the License. - diff --git a/modules/arrow-flight-rpc/licenses/perfmark-api-0.27.0.jar.sha1 b/modules/arrow-flight-rpc/licenses/perfmark-api-0.27.0.jar.sha1 deleted file mode 100644 index c85ee41fd9bbd..0000000000000 --- a/modules/arrow-flight-rpc/licenses/perfmark-api-0.27.0.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -f86f575a41b091786a4b027cd9c0c1d2e3fc1c01 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/perfmark-api-LICENSE.txt b/modules/arrow-flight-rpc/licenses/perfmark-api-LICENSE.txt deleted file mode 100644 index 261eeb9e9f8b2..0000000000000 --- a/modules/arrow-flight-rpc/licenses/perfmark-api-LICENSE.txt +++ /dev/null @@ -1,201 +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/modules/arrow-flight-rpc/licenses/perfmark-api-NOTICE.txt b/modules/arrow-flight-rpc/licenses/perfmark-api-NOTICE.txt deleted file mode 100644 index 04fbb4e692e51..0000000000000 --- a/modules/arrow-flight-rpc/licenses/perfmark-api-NOTICE.txt +++ /dev/null @@ -1,41 +0,0 @@ - -Copyright 2019 Google LLC - -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. - ------------------------------------------------------------------------ - -This product contains a modified portion of 'Catapult', an open source -Trace Event viewer for Chome, Linux, and Android applications, which can -be obtained at: - - * LICENSE: - * traceviewer/src/main/resources/io/perfmark/traceviewer/third_party/catapult/LICENSE (New BSD License) - * HOMEPAGE: - * https://github.com/catapult-project/catapult - -This product contains a modified portion of 'Polymer', a library for Web -Components, which can be obtained at: - * LICENSE: - * traceviewer/src/main/resources/io/perfmark/traceviewer/third_party/polymer/LICENSE (New BSD License) - * HOMEPAGE: - * https://github.com/Polymer/polymer - - -This product contains a modified portion of 'ASM', an open source -Java Bytecode library, which can be obtained at: - - * LICENSE: - * agent/src/main/resources/io/perfmark/agent/third_party/asm/LICENSE (BSD style License) - * HOMEPAGE: - * https://asm.ow2.io/ \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/slf4j-api-1.7.36.jar.sha1 b/modules/arrow-flight-rpc/licenses/slf4j-api-1.7.36.jar.sha1 deleted file mode 100644 index 77b9917528382..0000000000000 --- a/modules/arrow-flight-rpc/licenses/slf4j-api-1.7.36.jar.sha1 +++ /dev/null @@ -1 +0,0 @@ -6c62681a2f655b49963a5983b8b0950a6120ae14 \ No newline at end of file diff --git a/modules/arrow-flight-rpc/licenses/slf4j-api-LICENSE.txt b/modules/arrow-flight-rpc/licenses/slf4j-api-LICENSE.txt deleted file mode 100644 index 1a3d053237bec..0000000000000 --- a/modules/arrow-flight-rpc/licenses/slf4j-api-LICENSE.txt +++ /dev/null @@ -1,24 +0,0 @@ -Copyright (c) 2004-2022 QOS.ch Sarl (Switzerland) -All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - diff --git a/modules/arrow-flight-rpc/licenses/slf4j-api-NOTICE.txt b/modules/arrow-flight-rpc/licenses/slf4j-api-NOTICE.txt deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/modules/arrow-flight-rpc/src/internalClusterTest/java/org/opensearch/arrow/flight/ArrowFlightServerIT.java b/modules/arrow-flight-rpc/src/internalClusterTest/java/org/opensearch/arrow/flight/ArrowFlightServerIT.java deleted file mode 100644 index 28a3374fc6ae6..0000000000000 --- a/modules/arrow-flight-rpc/src/internalClusterTest/java/org/opensearch/arrow/flight/ArrowFlightServerIT.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight; - -import org.apache.arrow.flight.CallOptions; -import org.apache.arrow.flight.OSFlightClient; -import org.opensearch.arrow.flight.bootstrap.FlightClientManager; -import org.opensearch.arrow.flight.bootstrap.FlightService; -import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.cluster.node.DiscoveryNodeRole; -import org.opensearch.common.util.FeatureFlags; -import org.opensearch.plugins.Plugin; -import org.opensearch.test.FeatureFlagSetter; -import org.opensearch.test.OpenSearchIntegTestCase; -import org.junit.BeforeClass; - -import java.util.Collection; -import java.util.Collections; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -@OpenSearchIntegTestCase.ClusterScope(scope = OpenSearchIntegTestCase.Scope.SUITE, numDataNodes = 3) -public class ArrowFlightServerIT extends OpenSearchIntegTestCase { - - private FlightClientManager flightClientManager; - - @BeforeClass - public static void setupFeatureFlags() { - FeatureFlagSetter.set(FeatureFlags.ARROW_STREAMS_SETTING.getKey()); - } - - @Override - protected Collection> nodePlugins() { - return Collections.singleton(FlightStreamPlugin.class); - } - - @Override - public void setUp() throws Exception { - super.setUp(); - ensureGreen(); - Thread.sleep(1000); - FlightService flightService = internalCluster().getInstance(FlightService.class); - flightClientManager = flightService.getFlightClientManager(); - } - - public void testArrowFlightEndpoint() throws Exception { - for (DiscoveryNode node : getClusterState().nodes()) { - if (isDedicatedClusterManagerNode(node)) { - continue; - } - try (OSFlightClient flightClient = flightClientManager.getFlightClient(node.getId())) { - assertNotNull(flightClient); - flightClient.handshake(CallOptions.timeout(5000L, TimeUnit.MILLISECONDS)); - } - } - } - - private static boolean isDedicatedClusterManagerNode(DiscoveryNode node) { - Set nodeRoles = node.getRoles(); - return nodeRoles.size() == 1 - && (nodeRoles.contains(DiscoveryNodeRole.CLUSTER_MANAGER_ROLE) || nodeRoles.contains(DiscoveryNodeRole.MASTER_ROLE)); - } - -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/OSFlightClient.java b/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/OSFlightClient.java deleted file mode 100644 index 6dfb63562804f..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/OSFlightClient.java +++ /dev/null @@ -1,947 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ -package org.apache.arrow.flight; - -import org.apache.arrow.flight.FlightProducer.StreamListener; -import org.apache.arrow.flight.auth.BasicClientAuthHandler; -import org.apache.arrow.flight.auth.ClientAuthHandler; -import org.apache.arrow.flight.auth.ClientAuthInterceptor; -import org.apache.arrow.flight.auth.ClientAuthWrapper; -import org.apache.arrow.flight.auth2.BasicAuthCredentialWriter; -import org.apache.arrow.flight.auth2.ClientBearerHeaderHandler; -import org.apache.arrow.flight.auth2.ClientHandshakeWrapper; -import org.apache.arrow.flight.auth2.ClientIncomingAuthHeaderMiddleware; -import org.apache.arrow.flight.grpc.ClientInterceptorAdapter; -import org.apache.arrow.flight.grpc.CredentialCallOption; -import org.apache.arrow.flight.grpc.StatusUtils; -import org.apache.arrow.flight.impl.Flight; -import org.apache.arrow.flight.impl.Flight.Empty; -import org.apache.arrow.flight.impl.FlightServiceGrpc; -import org.apache.arrow.flight.impl.FlightServiceGrpc.FlightServiceBlockingStub; -import org.apache.arrow.flight.impl.FlightServiceGrpc.FlightServiceStub; -import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.util.Preconditions; -import org.apache.arrow.vector.VectorSchemaRoot; -import org.apache.arrow.vector.dictionary.DictionaryProvider; -import org.apache.arrow.vector.dictionary.DictionaryProvider.MapDictionaryProvider; - -import javax.net.ssl.SSLException; - -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.InvocationTargetException; -import java.net.URISyntaxException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.Optional; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.function.BooleanSupplier; - -import io.grpc.Channel; -import io.grpc.ClientCall; -import io.grpc.ClientInterceptor; -import io.grpc.ClientInterceptors; -import io.grpc.ManagedChannel; -import io.grpc.MethodDescriptor; -import io.grpc.StatusRuntimeException; -import io.grpc.netty.GrpcSslContexts; -import io.grpc.netty.NettyChannelBuilder; -import io.grpc.stub.ClientCallStreamObserver; -import io.grpc.stub.ClientCalls; -import io.grpc.stub.ClientResponseObserver; -import io.grpc.stub.StreamObserver; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.ServerChannel; -import io.netty.handler.ssl.SslContext; -import io.netty.handler.ssl.SslContextBuilder; -import io.netty.handler.ssl.util.InsecureTrustManagerFactory; - -/** - * Clone of {@link FlightClient} to support setting SslContext directly. It can be discarded once - * FlightClient.Builder supports setting SslContext directly. - */ -@SuppressWarnings("forbiddenApisMain") -public class OSFlightClient implements AutoCloseable { - private static final int PENDING_REQUESTS = 5; - /** - * The maximum number of trace events to keep on the gRPC Channel. This value disables channel - * tracing. - */ - private static final int MAX_CHANNEL_TRACE_EVENTS = 0; - - private final BufferAllocator allocator; - private final ManagedChannel channel; - - private final FlightServiceBlockingStub blockingStub; - private final FlightServiceStub asyncStub; - private final ClientAuthInterceptor authInterceptor = new ClientAuthInterceptor(); - private final MethodDescriptor doGetDescriptor; - private final MethodDescriptor doPutDescriptor; - private final MethodDescriptor doExchangeDescriptor; - private final List middleware; - - /** Create a Flight client from an allocator and a gRPC channel. */ - OSFlightClient(BufferAllocator incomingAllocator, ManagedChannel channel, List middleware) { - this.allocator = incomingAllocator.newChildAllocator("flight-client", 0, Long.MAX_VALUE); - this.channel = channel; - this.middleware = middleware; - - final ClientInterceptor[] interceptors; - interceptors = new ClientInterceptor[] { authInterceptor, new ClientInterceptorAdapter(middleware) }; - - // Create a channel with interceptors pre-applied for DoGet and DoPut - Channel interceptedChannel = ClientInterceptors.intercept(channel, interceptors); - - blockingStub = FlightServiceGrpc.newBlockingStub(interceptedChannel); - asyncStub = FlightServiceGrpc.newStub(interceptedChannel); - doGetDescriptor = FlightBindingService.getDoGetDescriptor(allocator); - doPutDescriptor = FlightBindingService.getDoPutDescriptor(allocator); - doExchangeDescriptor = FlightBindingService.getDoExchangeDescriptor(allocator); - } - - /** - * Get a list of available flights. - * - * @param criteria Criteria for selecting flights - * @param options RPC-layer hints for the call. - * @return FlightInfo Iterable - */ - public Iterable listFlights(Criteria criteria, CallOption... options) { - final Iterator flights; - try { - flights = CallOptions.wrapStub(blockingStub, options).listFlights(criteria.asCriteria()); - } catch (StatusRuntimeException sre) { - throw StatusUtils.fromGrpcRuntimeException(sre); - } - return () -> StatusUtils.wrapIterator(flights, t -> { - try { - return new FlightInfo(t); - } catch (URISyntaxException e) { - // We don't expect this will happen for conforming Flight implementations. For - // instance, a Java server - // itself wouldn't be able to construct an invalid Location. - throw new RuntimeException(e); - } - }); - } - - /** - * Lists actions available on the Flight service. - * - * @param options RPC-layer hints for the call. - */ - public Iterable listActions(CallOption... options) { - final Iterator actions; - try { - actions = CallOptions.wrapStub(blockingStub, options).listActions(Empty.getDefaultInstance()); - } catch (StatusRuntimeException sre) { - throw StatusUtils.fromGrpcRuntimeException(sre); - } - return () -> StatusUtils.wrapIterator(actions, ActionType::new); - } - - /** - * Performs an action on the Flight service. - * - * @param action The action to perform. - * @param options RPC-layer hints for this call. - * @return An iterator of results. - */ - public Iterator doAction(Action action, CallOption... options) { - return StatusUtils.wrapIterator(CallOptions.wrapStub(blockingStub, options).doAction(action.toProtocol()), Result::new); - } - - /** Authenticates with a username and password. */ - public void authenticateBasic(String username, String password) { - BasicClientAuthHandler basicClient = new BasicClientAuthHandler(username, password); - authenticate(basicClient); - } - - /** - * Authenticates against the Flight service. - * - * @param options RPC-layer hints for this call. - * @param handler The auth mechanism to use. - */ - public void authenticate(ClientAuthHandler handler, CallOption... options) { - Preconditions.checkArgument(!authInterceptor.hasAuthHandler(), "Auth already completed."); - ClientAuthWrapper.doClientAuth(handler, CallOptions.wrapStub(asyncStub, options)); - authInterceptor.setAuthHandler(handler); - } - - /** - * Authenticates with a username and password. - * - * @param username the username. - * @param password the password. - * @return a CredentialCallOption containing a bearer token if the server emitted one, or empty if - * no bearer token was returned. This can be used in subsequent API calls. - */ - public Optional authenticateBasicToken(String username, String password) { - final ClientIncomingAuthHeaderMiddleware.Factory clientAuthMiddleware = new ClientIncomingAuthHeaderMiddleware.Factory( - new ClientBearerHeaderHandler() - ); - middleware.add(clientAuthMiddleware); - handshake(new CredentialCallOption(new BasicAuthCredentialWriter(username, password))); - - return Optional.ofNullable(clientAuthMiddleware.getCredentialCallOption()); - } - - /** - * Executes the handshake against the Flight service. - * - * @param options RPC-layer hints for this call. - */ - public void handshake(CallOption... options) { - ClientHandshakeWrapper.doClientHandshake(CallOptions.wrapStub(asyncStub, options)); - } - - /** - * Create or append a descriptor with another stream. - * - * @param descriptor FlightDescriptor the descriptor for the data - * @param root VectorSchemaRoot the root containing data - * @param metadataListener A handler for metadata messages from the server. This will be passed - * buffers that will be freed after {@link StreamListener#onNext(Object)} is called! - * @param options RPC-layer hints for this call. - * @return ClientStreamListener an interface to control uploading data - */ - public ClientStreamListener startPut( - FlightDescriptor descriptor, - VectorSchemaRoot root, - PutListener metadataListener, - CallOption... options - ) { - return startPut(descriptor, root, new MapDictionaryProvider(), metadataListener, options); - } - - /** - * Create or append a descriptor with another stream. - * - * @param descriptor FlightDescriptor the descriptor for the data - * @param root VectorSchemaRoot the root containing data - * @param metadataListener A handler for metadata messages from the server. - * @param options RPC-layer hints for this call. - * @return ClientStreamListener an interface to control uploading data. {@link - * ClientStreamListener#start(VectorSchemaRoot, DictionaryProvider)} will already have been - * called. - */ - public ClientStreamListener startPut( - FlightDescriptor descriptor, - VectorSchemaRoot root, - DictionaryProvider provider, - PutListener metadataListener, - CallOption... options - ) { - Preconditions.checkNotNull(root, "root must not be null"); - Preconditions.checkNotNull(provider, "provider must not be null"); - final ClientStreamListener writer = startPut(descriptor, metadataListener, options); - writer.start(root, provider); - return writer; - } - - /** - * Create or append a descriptor with another stream. - * - * @param descriptor FlightDescriptor the descriptor for the data - * @param metadataListener A handler for metadata messages from the server. - * @param options RPC-layer hints for this call. - * @return ClientStreamListener an interface to control uploading data. {@link - * ClientStreamListener#start(VectorSchemaRoot, DictionaryProvider)} will NOT already have - * been called. - */ - public ClientStreamListener startPut(FlightDescriptor descriptor, PutListener metadataListener, CallOption... options) { - Preconditions.checkNotNull(descriptor, "descriptor must not be null"); - Preconditions.checkNotNull(metadataListener, "metadataListener must not be null"); - - try { - final ClientCall call = asyncStubNewCall(doPutDescriptor, options); - final SetStreamObserver resultObserver = new SetStreamObserver(allocator, metadataListener); - ClientCallStreamObserver observer = (ClientCallStreamObserver) ClientCalls.asyncBidiStreamingCall( - call, - resultObserver - ); - return new PutObserver(descriptor, observer, metadataListener::isCancelled, metadataListener::getResult); - } catch (StatusRuntimeException sre) { - throw StatusUtils.fromGrpcRuntimeException(sre); - } - } - - /** - * Get info on a stream. - * - * @param descriptor The descriptor for the stream. - * @param options RPC-layer hints for this call. - */ - public FlightInfo getInfo(FlightDescriptor descriptor, CallOption... options) { - try { - return new FlightInfo(CallOptions.wrapStub(blockingStub, options).getFlightInfo(descriptor.toProtocol())); - } catch (URISyntaxException e) { - // We don't expect this will happen for conforming Flight implementations. For instance, a - // Java server - // itself wouldn't be able to construct an invalid Location. - throw new RuntimeException(e); - } catch (StatusRuntimeException sre) { - throw StatusUtils.fromGrpcRuntimeException(sre); - } - } - - /** - * Start or get info on execution of a long-running query. - * - * @param descriptor The descriptor for the stream. - * @param options RPC-layer hints for this call. - * @return Metadata about execution. - */ - public PollInfo pollInfo(FlightDescriptor descriptor, CallOption... options) { - try { - return new PollInfo(CallOptions.wrapStub(blockingStub, options).pollFlightInfo(descriptor.toProtocol())); - } catch (URISyntaxException e) { - throw new RuntimeException(e); - } catch (StatusRuntimeException sre) { - throw StatusUtils.fromGrpcRuntimeException(sre); - } - } - - /** - * Get schema for a stream. - * - * @param descriptor The descriptor for the stream. - * @param options RPC-layer hints for this call. - */ - public SchemaResult getSchema(FlightDescriptor descriptor, CallOption... options) { - try { - return SchemaResult.fromProtocol(CallOptions.wrapStub(blockingStub, options).getSchema(descriptor.toProtocol())); - } catch (StatusRuntimeException sre) { - throw StatusUtils.fromGrpcRuntimeException(sre); - } - } - - /** - * Retrieve a stream from the server. - * - * @param ticket The ticket granting access to the data stream. - * @param options RPC-layer hints for this call. - */ - public FlightStream getStream(Ticket ticket, CallOption... options) { - final ClientCall call = asyncStubNewCall(doGetDescriptor, options); - FlightStream stream = new FlightStream( - allocator, - PENDING_REQUESTS, - (String message, Throwable cause) -> call.cancel(message, cause), - (count) -> call.request(count) - ); - - final StreamObserver delegate = stream.asObserver(); - ClientResponseObserver clientResponseObserver = new ClientResponseObserver< - Flight.Ticket, - ArrowMessage>() { - - @Override - public void beforeStart(ClientCallStreamObserver requestStream) { - requestStream.disableAutoInboundFlowControl(); - } - - @Override - public void onNext(ArrowMessage value) { - delegate.onNext(value); - } - - @Override - public void onError(Throwable t) { - delegate.onError(StatusUtils.toGrpcException(t)); - } - - @Override - public void onCompleted() { - delegate.onCompleted(); - } - }; - - ClientCalls.asyncServerStreamingCall(call, ticket.toProtocol(), clientResponseObserver); - return stream; - } - - /** - * Initiate a bidirectional data exchange with the server. - * - * @param descriptor A descriptor for the data stream. - * @param options RPC call options. - * @return A pair of a readable stream and a writable stream. - */ - public ExchangeReaderWriter doExchange(FlightDescriptor descriptor, CallOption... options) { - Preconditions.checkNotNull(descriptor, "descriptor must not be null"); - - try { - final ClientCall call = asyncStubNewCall(doExchangeDescriptor, options); - final FlightStream stream = new FlightStream(allocator, PENDING_REQUESTS, call::cancel, call::request); - final ClientCallStreamObserver observer = (ClientCallStreamObserver) ClientCalls - .asyncBidiStreamingCall(call, stream.asObserver()); - final ClientStreamListener writer = new PutObserver(descriptor, observer, stream.cancelled::isDone, () -> { - try { - stream.completed.get(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - throw CallStatus.INTERNAL.withDescription("Client error: interrupted while completing call") - .withCause(e) - .toRuntimeException(); - } catch (ExecutionException e) { - throw CallStatus.INTERNAL.withDescription("Client error: internal while completing call") - .withCause(e) - .toRuntimeException(); - } - }); - // Send the descriptor to start. - try (final ArrowMessage message = new ArrowMessage(descriptor.toProtocol())) { - observer.onNext(message); - } catch (Exception e) { - throw CallStatus.INTERNAL.withCause(e).withDescription("Could not write descriptor " + descriptor).toRuntimeException(); - } - return new ExchangeReaderWriter(stream, writer); - } catch (StatusRuntimeException sre) { - throw StatusUtils.fromGrpcRuntimeException(sre); - } - } - - /** A pair of a reader and a writer for a DoExchange call. */ - public static class ExchangeReaderWriter implements AutoCloseable { - private final FlightStream reader; - private final ClientStreamListener writer; - - ExchangeReaderWriter(FlightStream reader, ClientStreamListener writer) { - this.reader = reader; - this.writer = writer; - } - - /** Get the reader for the call. */ - public FlightStream getReader() { - return reader; - } - - /** Get the writer for the call. */ - public ClientStreamListener getWriter() { - return writer; - } - - /** - * Make sure stream is drained. You must call this to be notified of any errors that may have - * happened after the exchange is complete. This should be called after - * `getWriter().completed()` and instead of `getWriter().getResult()`. - */ - public void getResult() { - // After exchange is complete, make sure stream is drained to propagate errors through reader - while (reader.next()) { - } - } - - /** Shut down the streams in this call. */ - @Override - public void close() throws Exception { - reader.close(); - } - } - - /** A stream observer for Flight.PutResult. */ - private static class SetStreamObserver implements StreamObserver { - private final BufferAllocator allocator; - private final StreamListener listener; - - SetStreamObserver(BufferAllocator allocator, StreamListener listener) { - super(); - this.allocator = allocator; - this.listener = listener == null ? NoOpStreamListener.getInstance() : listener; - } - - @Override - public void onNext(Flight.PutResult value) { - try (final PutResult message = PutResult.fromProtocol(allocator, value)) { - listener.onNext(message); - } - } - - @Override - public void onError(Throwable t) { - listener.onError(StatusUtils.fromThrowable(t)); - } - - @Override - public void onCompleted() { - listener.onCompleted(); - } - } - - /** The implementation of a {@link ClientStreamListener} for writing data to a Flight server. */ - static class PutObserver extends OutboundStreamListenerImpl implements ClientStreamListener { - private final BooleanSupplier isCancelled; - private final Runnable getResult; - - /** - * Create a new client stream listener. - * - * @param descriptor The descriptor for the stream. - * @param observer The write-side gRPC StreamObserver. - * @param isCancelled A flag to check if the call has been cancelled. - * @param getResult A flag that blocks until the overall call completes. - */ - PutObserver( - FlightDescriptor descriptor, - ClientCallStreamObserver observer, - BooleanSupplier isCancelled, - Runnable getResult - ) { - super(descriptor, observer); - Preconditions.checkNotNull(descriptor, "descriptor must be provided"); - Preconditions.checkNotNull(isCancelled, "isCancelled must be provided"); - Preconditions.checkNotNull(getResult, "getResult must be provided"); - this.isCancelled = isCancelled; - this.getResult = getResult; - this.unloader = null; - } - - @Override - protected void waitUntilStreamReady() { - // Check isCancelled as well to avoid inadvertently blocking forever - // (so long as PutListener properly implements it) - while (!responseObserver.isReady() && !isCancelled.getAsBoolean()) { - /* busy wait */ - } - } - - @Override - public void getResult() { - getResult.run(); - } - } - - /** - * Cancel execution of a distributed query. - * - * @param request The query to cancel. - * @param options Call options. - * @return The server response. - */ - public CancelFlightInfoResult cancelFlightInfo(CancelFlightInfoRequest request, CallOption... options) { - Action action = new Action(FlightConstants.CANCEL_FLIGHT_INFO.getType(), request.serialize().array()); - Iterator results = doAction(action, options); - if (!results.hasNext()) { - throw CallStatus.INTERNAL.withDescription("Server did not return a response").toRuntimeException(); - } - - CancelFlightInfoResult result; - try { - result = CancelFlightInfoResult.deserialize(ByteBuffer.wrap(results.next().getBody())); - } catch (IOException e) { - throw CallStatus.INTERNAL.withDescription("Failed to parse server response: " + e).withCause(e).toRuntimeException(); - } - results.forEachRemaining((ignored) -> {}); - return result; - } - - /** - * Request the server to extend the lifetime of a query result set. - * - * @param request The result set partition. - * @param options Call options. - * @return The new endpoint with an updated expiration time. - */ - public FlightEndpoint renewFlightEndpoint(RenewFlightEndpointRequest request, CallOption... options) { - Action action = new Action(FlightConstants.RENEW_FLIGHT_ENDPOINT.getType(), request.serialize().array()); - Iterator results = doAction(action, options); - if (!results.hasNext()) { - throw CallStatus.INTERNAL.withDescription("Server did not return a response").toRuntimeException(); - } - - FlightEndpoint result; - try { - result = FlightEndpoint.deserialize(ByteBuffer.wrap(results.next().getBody())); - } catch (IOException | URISyntaxException e) { - throw CallStatus.INTERNAL.withDescription("Failed to parse server response: " + e).withCause(e).toRuntimeException(); - } - results.forEachRemaining((ignored) -> {}); - return result; - } - - /** - * Set server session option(s) by name/value. - * - *

Sessions are generally persisted via HTTP cookies. - * - * @param request The session options to set on the server. - * @param options Call options. - * @return The result containing per-value error statuses, if any. - */ - public SetSessionOptionsResult setSessionOptions(SetSessionOptionsRequest request, CallOption... options) { - Action action = new Action(FlightConstants.SET_SESSION_OPTIONS.getType(), request.serialize().array()); - Iterator results = doAction(action, options); - if (!results.hasNext()) { - throw CallStatus.INTERNAL.withDescription("Server did not return a response").toRuntimeException(); - } - - SetSessionOptionsResult result; - try { - result = SetSessionOptionsResult.deserialize(ByteBuffer.wrap(results.next().getBody())); - } catch (IOException e) { - throw CallStatus.INTERNAL.withDescription("Failed to parse server response: " + e).withCause(e).toRuntimeException(); - } - results.forEachRemaining((ignored) -> {}); - return result; - } - - /** - * Get the current server session options. - * - *

The session is generally accessed via an HTTP cookie. - * - * @param request The (empty) GetSessionOptionsRequest. - * @param options Call options. - * @return The result containing the set of session options configured on the server. - */ - public GetSessionOptionsResult getSessionOptions(GetSessionOptionsRequest request, CallOption... options) { - Action action = new Action(FlightConstants.GET_SESSION_OPTIONS.getType(), request.serialize().array()); - Iterator results = doAction(action, options); - if (!results.hasNext()) { - throw CallStatus.INTERNAL.withDescription("Server did not return a response").toRuntimeException(); - } - - GetSessionOptionsResult result; - try { - result = GetSessionOptionsResult.deserialize(ByteBuffer.wrap(results.next().getBody())); - } catch (IOException e) { - throw CallStatus.INTERNAL.withDescription("Failed to parse server response: " + e).withCause(e).toRuntimeException(); - } - results.forEachRemaining((ignored) -> {}); - return result; - } - - /** - * Close/invalidate the current server session. - * - *

The session is generally accessed via an HTTP cookie. - * - * @param request The (empty) CloseSessionRequest. - * @param options Call options. - * @return The result containing the status of the close operation. - */ - public CloseSessionResult closeSession(CloseSessionRequest request, CallOption... options) { - Action action = new Action(FlightConstants.CLOSE_SESSION.getType(), request.serialize().array()); - Iterator results = doAction(action, options); - if (!results.hasNext()) { - throw CallStatus.INTERNAL.withDescription("Server did not return a response").toRuntimeException(); - } - - CloseSessionResult result; - try { - result = CloseSessionResult.deserialize(ByteBuffer.wrap(results.next().getBody())); - } catch (IOException e) { - throw CallStatus.INTERNAL.withDescription("Failed to parse server response: " + e).withCause(e).toRuntimeException(); - } - results.forEachRemaining((ignored) -> {}); - return result; - } - - /** Interface for writers to an Arrow data stream. */ - public interface ClientStreamListener extends OutboundStreamListener { - - /** - * Wait for the stream to finish on the server side. You must call this to be notified of any - * errors that may have happened during the upload. - */ - void getResult(); - } - - /** - * A handler for server-sent application metadata messages during a Flight DoPut operation. - * - *

Generally, instead of implementing this yourself, you should use {@link AsyncPutListener} or - * {@link SyncPutListener}. - */ - public interface PutListener extends StreamListener { - - /** - * Wait for the stream to finish on the server side. You must call this to be notified of any - * errors that may have happened during the upload. - */ - void getResult(); - - /** - * Called when a message from the server is received. - * - * @param val The application metadata. This buffer will be reclaimed once onNext returns; you - * must retain a reference to use it outside this method. - */ - @Override - void onNext(PutResult val); - - /** - * Check if the call has been cancelled. - * - *

By default, this always returns false. Implementations should provide an appropriate - * implementation, as otherwise, a DoPut operation may inadvertently block forever. - */ - default boolean isCancelled() { - return false; - } - } - - /** Shut down this client. */ - @Override - public void close() throws InterruptedException { - channel.shutdown().awaitTermination(5, TimeUnit.SECONDS); - allocator.close(); - } - - /** Create a builder for a Flight client. */ - public static Builder builder() { - return new Builder(); - } - - /** - * Create a builder for a Flight client. - * - * @param allocator The allocator to use for the client. - * @param location The location to connect to. - */ - public static Builder builder(BufferAllocator allocator, Location location) { - return new Builder(allocator, location); - } - - public static Builder builder( - BufferAllocator allocator, - Location location, - Class channelType, - ExecutorService executorService, - EventLoopGroup workerELG, - SslContext sslContext - ) { - Builder builder = new Builder(allocator, location); - builder.channelType(channelType); - builder.executor(executorService); - builder.eventLoopGroup(workerELG); - if (sslContext != null) { - builder.useTLS(sslContext); - } - return builder; - } - - /** A builder for Flight clients. */ - public static final class Builder { - private BufferAllocator allocator; - private Location location; - private boolean forceTls = false; - private int maxInboundMessageSize = FlightServer.MAX_GRPC_MESSAGE_SIZE; - private InputStream trustedCertificates = null; - private InputStream clientCertificate = null; - private InputStream clientKey = null; - private String overrideHostname = null; - private List middleware = new ArrayList<>(); - private boolean verifyServer = true; - private EventLoopGroup workerELG; - private ExecutorService executorService; - private Class channelType; - private SslContext sslContext; - - private Builder() {} - - private Builder(BufferAllocator allocator, Location location) { - this.allocator = Preconditions.checkNotNull(allocator); - this.location = Preconditions.checkNotNull(location); - } - - /** Force the client to connect over TLS. */ - public Builder useTls() { - this.forceTls = true; - return this; - } - - /** Override the hostname checked for TLS. Use with caution in production. */ - public Builder overrideHostname(final String hostname) { - this.overrideHostname = hostname; - return this; - } - - /** Set the maximum inbound message size. */ - public Builder maxInboundMessageSize(int maxSize) { - Preconditions.checkArgument(maxSize > 0); - this.maxInboundMessageSize = maxSize; - return this; - } - - /** Set the trusted TLS certificates. */ - public Builder trustedCertificates(final InputStream stream) { - this.trustedCertificates = Preconditions.checkNotNull(stream); - return this; - } - - /** Set the trusted TLS certificates. */ - public Builder clientCertificate(final InputStream clientCertificate, final InputStream clientKey) { - Preconditions.checkNotNull(clientKey); - this.clientCertificate = Preconditions.checkNotNull(clientCertificate); - this.clientKey = Preconditions.checkNotNull(clientKey); - return this; - } - - public Builder allocator(BufferAllocator allocator) { - this.allocator = Preconditions.checkNotNull(allocator); - return this; - } - - public Builder location(Location location) { - this.location = Preconditions.checkNotNull(location); - return this; - } - - public Builder intercept(FlightClientMiddleware.Factory factory) { - middleware.add(factory); - return this; - } - - public Builder verifyServer(boolean verifyServer) { - this.verifyServer = verifyServer; - return this; - } - - public Builder eventLoopGroup(EventLoopGroup elg) { - this.workerELG = elg; - return this; - } - - public Builder executor(ExecutorService executorService) { - this.executorService = executorService; - return this; - } - - public Builder channelType(Class channelType) { - this.channelType = channelType; - return this; - } - - public Builder useTLS(SslContext sslContext) { - this.sslContext = Objects.requireNonNull(sslContext); - return this; - } - - /** Create the client from this builder. */ - public OSFlightClient build() { - final NettyChannelBuilder builder; - - switch (location.getUri().getScheme()) { - case LocationSchemes.GRPC: - case LocationSchemes.GRPC_INSECURE: - case LocationSchemes.GRPC_TLS: { - builder = NettyChannelBuilder.forAddress(location.toSocketAddress()); - if (workerELG != null) { - builder.eventLoopGroup(workerELG); - } - if (executorService != null) { - builder.executor(executorService); - } - if (channelType != null) { - builder.channelType(channelType); - } - if (sslContext != null) { - builder.sslContext(sslContext); - } - break; - } - case LocationSchemes.GRPC_DOMAIN_SOCKET: { - // The implementation is platform-specific, so we have to find the classes at runtime - builder = NettyChannelBuilder.forAddress(location.toSocketAddress()); - try { - try { - // Linux - builder.channelType( - Class.forName("io.netty.channel.epoll.EpollDomainSocketChannel").asSubclass(ServerChannel.class) - ); - final EventLoopGroup elg = Class.forName("io.netty.channel.epoll.EpollEventLoopGroup") - .asSubclass(EventLoopGroup.class) - .getDeclaredConstructor() - .newInstance(); - builder.eventLoopGroup(elg); - } catch (ClassNotFoundException e) { - // BSD - builder.channelType( - Class.forName("io.netty.channel.kqueue.KQueueDomainSocketChannel").asSubclass(ServerChannel.class) - ); - final EventLoopGroup elg = Class.forName("io.netty.channel.kqueue.KQueueEventLoopGroup") - .asSubclass(EventLoopGroup.class) - .getDeclaredConstructor() - .newInstance(); - builder.eventLoopGroup(elg); - } - } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodException - | InvocationTargetException e) { - throw new UnsupportedOperationException( - "Could not find suitable Netty native transport implementation for domain socket address." - ); - } - break; - } - default: - throw new IllegalArgumentException("Scheme is not supported: " + location.getUri().getScheme()); - } - - if (this.forceTls || LocationSchemes.GRPC_TLS.equals(location.getUri().getScheme())) { - builder.useTransportSecurity(); - - final boolean hasTrustedCerts = this.trustedCertificates != null; - final boolean hasKeyCertPair = this.clientCertificate != null && this.clientKey != null; - if (!this.verifyServer && (hasTrustedCerts || hasKeyCertPair)) { - throw new IllegalArgumentException( - "FlightClient has been configured to disable server verification, " + "but certificate options have been specified." - ); - } - - final SslContextBuilder sslContextBuilder = GrpcSslContexts.forClient(); - - if (!this.verifyServer) { - sslContextBuilder.trustManager(InsecureTrustManagerFactory.INSTANCE); - } else if (this.trustedCertificates != null || this.clientCertificate != null || this.clientKey != null) { - if (this.trustedCertificates != null) { - sslContextBuilder.trustManager(this.trustedCertificates); - } - if (this.clientCertificate != null && this.clientKey != null) { - sslContextBuilder.keyManager(this.clientCertificate, this.clientKey); - } - } - try { - builder.sslContext(sslContextBuilder.build()); - } catch (SSLException e) { - throw new RuntimeException(e); - } - - if (this.overrideHostname != null) { - builder.overrideAuthority(this.overrideHostname); - } - } else { - builder.usePlaintext(); - } - - builder.maxTraceEvents(MAX_CHANNEL_TRACE_EVENTS) - .maxInboundMessageSize(maxInboundMessageSize) - .maxInboundMetadataSize(maxInboundMessageSize); - return new OSFlightClient(allocator, builder.build(), middleware); - } - } - - /** - * Helper method to create a call from the asyncStub, method descriptor, and list of calling - * options. - */ - private ClientCall asyncStubNewCall( - MethodDescriptor descriptor, - CallOption... options - ) { - FlightServiceStub wrappedStub = CallOptions.wrapStub(asyncStub, options); - return wrappedStub.getChannel().newCall(descriptor, wrappedStub.getCallOptions()); - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/OSFlightServer.java b/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/OSFlightServer.java deleted file mode 100644 index de9a555908e4a..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/OSFlightServer.java +++ /dev/null @@ -1,555 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.apache.arrow.flight; - -import org.apache.arrow.flight.auth.ServerAuthHandler; -import org.apache.arrow.flight.auth.ServerAuthInterceptor; -import org.apache.arrow.flight.auth2.Auth2Constants; -import org.apache.arrow.flight.auth2.CallHeaderAuthenticator; -import org.apache.arrow.flight.auth2.ServerCallHeaderAuthMiddleware; -import org.apache.arrow.flight.grpc.ServerBackpressureThresholdInterceptor; -import org.apache.arrow.flight.grpc.ServerInterceptorAdapter; -import org.apache.arrow.flight.grpc.ServerInterceptorAdapter.KeyFactory; -import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.util.Preconditions; -import org.apache.arrow.util.VisibleForTesting; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import javax.net.ssl.SSLException; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.InvocationTargetException; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.TimeUnit; -import java.util.function.Consumer; - -import io.grpc.Server; -import io.grpc.ServerInterceptors; -import io.grpc.netty.GrpcSslContexts; -import io.grpc.netty.NettyServerBuilder; -import io.netty.channel.Channel; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.ServerChannel; -import io.netty.handler.ssl.ClientAuth; -import io.netty.handler.ssl.SslContext; -import io.netty.handler.ssl.SslContextBuilder; - -/** - * Clone of {@link FlightServer} to support setting SslContext directly. It can be discarded once - * FlightServer.Builder supports setting SslContext directly. - */ -public class OSFlightServer implements AutoCloseable { - - private static final Logger logger = LogManager.getLogger(OSFlightServer.class); - - private final Location location; - private final Server server; - // The executor used by the gRPC server. We don't use it here, but we do need to clean it up with - // the server. - // May be null, if a user-supplied executor was provided (as we do not want to clean that up) - @VisibleForTesting - final ExecutorService grpcExecutor; - - /** The maximum size of an individual gRPC message. This effectively disables the limit. */ - static final int MAX_GRPC_MESSAGE_SIZE = Integer.MAX_VALUE; - - /** The default number of bytes that can be queued on an output stream before blocking. */ - public static final int DEFAULT_BACKPRESSURE_THRESHOLD = 10 * 1024 * 1024; // 10MB - - /** Create a new instance from a gRPC server. For internal use only. */ - private OSFlightServer(Location location, Server server, ExecutorService grpcExecutor) { - this.location = location; - this.server = server; - this.grpcExecutor = grpcExecutor; - } - - /** Start the server. */ - public OSFlightServer start() throws IOException { - server.start(); - return this; - } - - /** Get the port the server is running on (if applicable). */ - public int getPort() { - return server.getPort(); - } - - /** Get the location for this server. */ - public Location getLocation() { - if (location.getUri().getPort() == 0) { - // If the server was bound to port 0, replace the port in the location with the real port. - final URI uri = location.getUri(); - try { - return new Location( - new URI(uri.getScheme(), uri.getUserInfo(), uri.getHost(), getPort(), uri.getPath(), uri.getQuery(), uri.getFragment()) - ); - } catch (URISyntaxException e) { - // We don't expect this to happen - throw new RuntimeException(e); - } - } - return location; - } - - /** Block until the server shuts down. */ - public void awaitTermination() throws InterruptedException { - server.awaitTermination(); - } - - /** Request that the server shut down. */ - public void shutdown() { - server.shutdown(); - if (grpcExecutor != null) { - grpcExecutor.shutdown(); - } - } - - /** - * Wait for the server to shut down with a timeout. - * - * @return true if the server shut down successfully. - */ - public boolean awaitTermination(final long timeout, final TimeUnit unit) throws InterruptedException { - return server.awaitTermination(timeout, unit); - } - - /** Shutdown the server, waits for up to 6 seconds for successful shutdown before returning. */ - @Override - public void close() throws InterruptedException { - shutdown(); - final boolean terminated = awaitTermination(3000, TimeUnit.MILLISECONDS); - if (terminated) { - logger.debug("Server was terminated within 3s"); - return; - } - - // get more aggressive in termination. - server.shutdownNow(); - - int count = 0; - while (!server.isTerminated() && count < 30) { - count++; - logger.debug("Waiting for termination"); - Thread.sleep(100); - } - - if (!server.isTerminated()) { - logger.warn("Couldn't shutdown server, resources likely will be leaked."); - } - } - - /** Create a builder for a Flight server. */ - public static Builder builder() { - return new Builder(); - } - - /** Create a builder for a Flight server. */ - public static Builder builder(BufferAllocator allocator, Location location, FlightProducer producer) { - return new Builder(allocator, location, producer); - } - - public static Builder builder( - BufferAllocator allocator, - Location location, - FlightProducer producer, - SslContext sslContext, - Class channelType, - EventLoopGroup bossELG, - EventLoopGroup workerELG, - ExecutorService grpcExecutor - ) { - Builder builder = new Builder(allocator, location, producer); - if (sslContext != null) { - builder.useTls(sslContext); - } - builder.transportHint("netty.channelType", channelType); - builder.transportHint("netty.bossEventLoopGroup", bossELG); - builder.transportHint("netty.workerEventLoopGroup", workerELG); - builder.executor(grpcExecutor); - return builder; - } - - /** A builder for Flight servers. */ - public static final class Builder { - private BufferAllocator allocator; - private Location location; - private FlightProducer producer; - private final Map builderOptions; - private ServerAuthHandler authHandler = ServerAuthHandler.NO_OP; - private CallHeaderAuthenticator headerAuthenticator = CallHeaderAuthenticator.NO_OP; - private ExecutorService executor = null; - private int maxInboundMessageSize = MAX_GRPC_MESSAGE_SIZE; - private int maxHeaderListSize = MAX_GRPC_MESSAGE_SIZE; - private int backpressureThreshold = DEFAULT_BACKPRESSURE_THRESHOLD; - private InputStream certChain; - private InputStream key; - private InputStream mTlsCACert; - private SslContext sslContext; - private final List> interceptors; - // Keep track of inserted interceptors - private final Set interceptorKeys; - - Builder() { - builderOptions = new HashMap<>(); - interceptors = new ArrayList<>(); - interceptorKeys = new HashSet<>(); - } - - Builder(BufferAllocator allocator, Location location, FlightProducer producer) { - this(); - this.allocator = Preconditions.checkNotNull(allocator); - this.location = Preconditions.checkNotNull(location); - this.producer = Preconditions.checkNotNull(producer); - } - - /** Create the server for this builder. */ - @SuppressWarnings("unchecked") - public OSFlightServer build() { - // Add the auth middleware if applicable. - if (headerAuthenticator != CallHeaderAuthenticator.NO_OP) { - this.middleware( - FlightServerMiddleware.Key.of(Auth2Constants.AUTHORIZATION_HEADER), - new ServerCallHeaderAuthMiddleware.Factory(headerAuthenticator) - ); - } - - this.middleware(FlightConstants.HEADER_KEY, new ServerHeaderMiddleware.Factory()); - - final NettyServerBuilder builder; - switch (location.getUri().getScheme()) { - case LocationSchemes.GRPC_DOMAIN_SOCKET: { - // The implementation is platform-specific, so we have to find the classes at runtime - builder = NettyServerBuilder.forAddress(location.toSocketAddress()); - try { - try { - // Linux - builder.channelType( - Class.forName("io.netty.channel.epoll.EpollServerDomainSocketChannel").asSubclass(ServerChannel.class) - ); - final EventLoopGroup elg = Class.forName("io.netty.channel.epoll.EpollEventLoopGroup") - .asSubclass(EventLoopGroup.class) - .getConstructor() - .newInstance(); - builder.bossEventLoopGroup(elg).workerEventLoopGroup(elg); - } catch (ClassNotFoundException e) { - // BSD - builder.channelType( - Class.forName("io.netty.channel.kqueue.KQueueServerDomainSocketChannel").asSubclass(ServerChannel.class) - ); - final EventLoopGroup elg = Class.forName("io.netty.channel.kqueue.KQueueEventLoopGroup") - .asSubclass(EventLoopGroup.class) - .getConstructor() - .newInstance(); - builder.bossEventLoopGroup(elg).workerEventLoopGroup(elg); - } - } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodException - | InvocationTargetException e) { - throw new UnsupportedOperationException( - "Could not find suitable Netty native transport implementation for domain socket address." - ); - } - break; - } - case LocationSchemes.GRPC: - case LocationSchemes.GRPC_INSECURE: { - builder = NettyServerBuilder.forAddress(location.toSocketAddress()); - break; - } - case LocationSchemes.GRPC_TLS: { - if (certChain == null) { - throw new IllegalArgumentException("Must provide a certificate and key to serve gRPC over TLS"); - } - builder = NettyServerBuilder.forAddress(location.toSocketAddress()); - break; - } - default: - throw new IllegalArgumentException("Scheme is not supported: " + location.getUri().getScheme()); - } - - if (sslContext != null && certChain != null) { - SslContextBuilder sslContextBuilder = GrpcSslContexts.forServer(certChain, key); - - if (mTlsCACert != null) { - sslContextBuilder.clientAuth(ClientAuth.REQUIRE).trustManager(mTlsCACert); - } - try { - sslContext = sslContextBuilder.build(); - } catch (SSLException e) { - throw new RuntimeException(e); - } finally { - closeMTlsCACert(); - closeCertChain(); - closeKey(); - } - - builder.sslContext(sslContext); - } - - // Share one executor between the gRPC service, DoPut, and Handshake - final ExecutorService exec; - // We only want to have FlightServer close the gRPC executor if we created it here. We should - // not close - // user-supplied executors. - final ExecutorService grpcExecutor; - if (executor != null) { - exec = executor; - grpcExecutor = null; - } else { - throw new IllegalStateException("GRPC executor must be passed to start Flight server."); - } - - final FlightBindingService flightService = new FlightBindingService(allocator, producer, authHandler, exec); - builder.executor(exec) - .maxInboundMessageSize(maxInboundMessageSize) - .maxInboundMetadataSize(maxHeaderListSize) - .addService( - ServerInterceptors.intercept( - flightService, - new ServerBackpressureThresholdInterceptor(backpressureThreshold), - new ServerAuthInterceptor(authHandler) - ) - ); - - // Allow hooking into the gRPC builder. This is not guaranteed to be available on all Arrow - // versions or - // Flight implementations. - builderOptions.computeIfPresent("grpc.builderConsumer", (key, builderConsumer) -> { - final Consumer consumer = (Consumer) builderConsumer; - consumer.accept(builder); - return null; - }); - - // Allow explicitly setting some Netty-specific options - builderOptions.computeIfPresent("netty.channelType", (key, channelType) -> { - builder.channelType((Class) channelType); - return null; - }); - builderOptions.computeIfPresent("netty.bossEventLoopGroup", (key, elg) -> { - builder.bossEventLoopGroup((EventLoopGroup) elg); - return null; - }); - builderOptions.computeIfPresent("netty.workerEventLoopGroup", (key, elg) -> { - builder.workerEventLoopGroup((EventLoopGroup) elg); - return null; - }); - - builder.intercept(new ServerInterceptorAdapter(interceptors)); - return new OSFlightServer(location, builder.build(), grpcExecutor); - } - - public Builder setMaxHeaderListSize(int maxHeaderListSize) { - this.maxHeaderListSize = maxHeaderListSize; - return this; - } - - /** - * Set the maximum size of a message. Defaults to "unlimited", depending on the underlying - * transport. - */ - public Builder maxInboundMessageSize(int maxMessageSize) { - this.maxInboundMessageSize = maxMessageSize; - return this; - } - - /** - * Set the number of bytes that may be queued on a server output stream before writes are - * blocked. - */ - public Builder backpressureThreshold(int backpressureThreshold) { - Preconditions.checkArgument(backpressureThreshold > 0); - this.backpressureThreshold = backpressureThreshold; - return this; - } - - /** - * A small utility function to ensure that InputStream attributes. are closed if they are not - * null - * - * @param stream The InputStream to close (if it is not null). - */ - private void closeInputStreamIfNotNull(InputStream stream) { - if (stream != null) { - try { - stream.close(); - } catch (IOException expected) { - // stream closes gracefully, doesn't expect an exception. - } - } - } - - /** - * A small utility function to ensure that the certChain attribute is closed if it is not null. - * It then sets the attribute to null. - */ - private void closeCertChain() { - closeInputStreamIfNotNull(certChain); - certChain = null; - } - - /** - * A small utility function to ensure that the key attribute is closed if it is not null. It - * then sets the attribute to null. - */ - private void closeKey() { - closeInputStreamIfNotNull(key); - key = null; - } - - /** - * A small utility function to ensure that the mTlsCACert attribute is closed if it is not null. - * It then sets the attribute to null. - */ - private void closeMTlsCACert() { - closeInputStreamIfNotNull(mTlsCACert); - mTlsCACert = null; - } - - /** - * Enable TLS on the server. - * - * @param certChain The certificate chain to use. - * @param key The private key to use. - */ - public Builder useTls(final File certChain, final File key) throws IOException { - closeCertChain(); - this.certChain = new FileInputStream(certChain); - - closeKey(); - this.key = new FileInputStream(key); - - return this; - } - - /** - * Enable Client Verification via mTLS on the server. - * - * @param mTlsCACert The CA certificate to use for verifying clients. - */ - public Builder useMTlsClientVerification(final File mTlsCACert) throws IOException { - closeMTlsCACert(); - this.mTlsCACert = new FileInputStream(mTlsCACert); - return this; - } - - /** - * Enable TLS on the server. - * - * @param certChain The certificate chain to use. - * @param key The private key to use. - */ - public Builder useTls(final InputStream certChain, final InputStream key) throws IOException { - closeCertChain(); - this.certChain = certChain; - - closeKey(); - this.key = key; - - return this; - } - - /** - * Enable TLS on the server. - * @param sslContext SslContext to use. - */ - public Builder useTls(SslContext sslContext) { - this.sslContext = Objects.requireNonNull(sslContext); - return this; - } - - /** - * Enable mTLS on the server. - * - * @param mTlsCACert The CA certificate to use for verifying clients. - */ - public Builder useMTlsClientVerification(final InputStream mTlsCACert) throws IOException { - closeMTlsCACert(); - this.mTlsCACert = mTlsCACert; - return this; - } - - /** - * Set the executor used by the server. - * - *

Flight will NOT take ownership of the executor. The application must clean it up if one is - * provided. (If not provided, Flight will use a default executor which it will clean up.) - */ - public Builder executor(ExecutorService executor) { - this.executor = executor; - return this; - } - - /** Set the authentication handler. */ - public Builder authHandler(ServerAuthHandler authHandler) { - this.authHandler = authHandler; - return this; - } - - /** Set the header-based authentication mechanism. */ - public Builder headerAuthenticator(CallHeaderAuthenticator headerAuthenticator) { - this.headerAuthenticator = headerAuthenticator; - return this; - } - - /** Provide a transport-specific option. Not guaranteed to have any effect. */ - public Builder transportHint(final String key, Object option) { - builderOptions.put(key, option); - return this; - } - - /** - * Add a Flight middleware component to inspect and modify requests to this service. - * - * @param key An identifier for this middleware component. Service implementations can retrieve - * the middleware instance for the current call using {@link - * org.apache.arrow.flight.FlightProducer.CallContext}. - * @param factory A factory for the middleware. - * @param The middleware type. - * @throws IllegalArgumentException if the key already exists - */ - public Builder middleware( - final FlightServerMiddleware.Key key, - final FlightServerMiddleware.Factory factory - ) { - if (interceptorKeys.contains(key.key)) { - throw new IllegalArgumentException("Key already exists: " + key.key); - } - interceptors.add(new KeyFactory<>(key, factory)); - interceptorKeys.add(key.key); - return this; - } - - public Builder allocator(BufferAllocator allocator) { - this.allocator = Preconditions.checkNotNull(allocator); - return this; - } - - public Builder location(Location location) { - this.location = Preconditions.checkNotNull(location); - return this; - } - - public Builder producer(FlightProducer producer) { - this.producer = Preconditions.checkNotNull(producer); - return this; - } - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/package-info.java b/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/package-info.java deleted file mode 100644 index 789a88a2d1159..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/apache/arrow/flight/package-info.java +++ /dev/null @@ -1,13 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/** - * Clone of FlightServer and FlightClient due to package private access of - * certain configurations. - */ -package org.apache.arrow.flight; diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/BaseFlightStreamPlugin.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/BaseFlightStreamPlugin.java deleted file mode 100644 index 2fd256af1dd89..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/BaseFlightStreamPlugin.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight; - -import org.opensearch.arrow.spi.StreamManager; -import org.opensearch.client.Client; -import org.opensearch.cluster.metadata.IndexNameExpressionResolver; -import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.cluster.service.ClusterService; -import org.opensearch.common.network.NetworkService; -import org.opensearch.common.settings.Setting; -import org.opensearch.common.settings.Settings; -import org.opensearch.common.util.PageCacheRecycler; -import org.opensearch.core.common.io.stream.NamedWriteableRegistry; -import org.opensearch.core.indices.breaker.CircuitBreakerService; -import org.opensearch.core.xcontent.NamedXContentRegistry; -import org.opensearch.env.Environment; -import org.opensearch.env.NodeEnvironment; -import org.opensearch.plugins.ClusterPlugin; -import org.opensearch.plugins.NetworkPlugin; -import org.opensearch.plugins.Plugin; -import org.opensearch.plugins.SecureTransportSettingsProvider; -import org.opensearch.plugins.StreamManagerPlugin; -import org.opensearch.repositories.RepositoriesService; -import org.opensearch.script.ScriptService; -import org.opensearch.telemetry.tracing.Tracer; -import org.opensearch.threadpool.ExecutorBuilder; -import org.opensearch.threadpool.ThreadPool; -import org.opensearch.transport.Transport; -import org.opensearch.watcher.ResourceWatcherService; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; - -/** - * BaseFlightStreamPlugin is a plugin that implements the StreamManagerPlugin interface. - * It provides the necessary components for handling flight streams in the OpenSearch cluster. - */ -public abstract class BaseFlightStreamPlugin extends Plugin implements StreamManagerPlugin, NetworkPlugin, ClusterPlugin { - - /** - * Constructor for BaseFlightStreamPlugin. - */ - public BaseFlightStreamPlugin() { - super(); - } - - /** - * createComponents for BaseFlightStreamPlugin - * @param client The client instance. - * @param clusterService The cluster service instance. - * @param threadPool The thread pool instance. - * @param resourceWatcherService The resource watcher service instance. - * @param scriptService The script service instance. - * @param xContentRegistry The named XContent registry. - * @param environment The environment instance. - * @param nodeEnvironment The node environment instance. - * @param namedWriteableRegistry The named writeable registry. - * @param indexNameExpressionResolver The index name expression resolver instance. - * @param repositoriesServiceSupplier The supplier for the repositories service. - * @return A collection of components. - */ - @Override - public abstract Collection createComponents( - Client client, - ClusterService clusterService, - ThreadPool threadPool, - ResourceWatcherService resourceWatcherService, - ScriptService scriptService, - NamedXContentRegistry xContentRegistry, - Environment environment, - NodeEnvironment nodeEnvironment, - NamedWriteableRegistry namedWriteableRegistry, - IndexNameExpressionResolver indexNameExpressionResolver, - Supplier repositoriesServiceSupplier - ); - - /** - * Used to get the transports for SSL/TLS configuration of Flight server and clients - * @param settings The settings for the plugin - * @param threadPool The thread pool instance - * @param pageCacheRecycler The page cache recycler instance - * @param circuitBreakerService The circuit breaker service instance - * @param namedWriteableRegistry The named writeable registry - * @param networkService The network service instance - * @param secureTransportSettingsProvider The secure transport settings provider - * @param tracer The tracer instance - * @return A map of secure transports - */ - @Override - public abstract Map> getSecureTransports( - Settings settings, - ThreadPool threadPool, - PageCacheRecycler pageCacheRecycler, - CircuitBreakerService circuitBreakerService, - NamedWriteableRegistry namedWriteableRegistry, - NetworkService networkService, - SecureTransportSettingsProvider secureTransportSettingsProvider, - Tracer tracer - ); - - /** - * Returns the StreamManager instance for managing flight streams. - */ - @Override - public abstract Supplier getStreamManager(); - - /** - * Returns a list of ExecutorBuilder instances for building thread pools used for FlightServer - * @param settings The settings for the plugin - */ - @Override - public abstract List> getExecutorBuilders(Settings settings); - - /** - * Returns a list of settings for the Flight plugin. - */ - @Override - public abstract List> getSettings(); - - /** - * Called when a node is started. ClusterService is started by this time - * @param localNode local Node info - */ - @Override - public abstract void onNodeStarted(DiscoveryNode localNode); -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/FlightStreamPlugin.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/FlightStreamPlugin.java deleted file mode 100644 index 1911c922ef8da..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/FlightStreamPlugin.java +++ /dev/null @@ -1,228 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight; - -import org.opensearch.arrow.flight.bootstrap.FlightStreamPluginImpl; -import org.opensearch.arrow.spi.StreamManager; -import org.opensearch.client.Client; -import org.opensearch.cluster.metadata.IndexNameExpressionResolver; -import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.cluster.service.ClusterService; -import org.opensearch.common.annotation.ExperimentalApi; -import org.opensearch.common.network.NetworkService; -import org.opensearch.common.settings.Setting; -import org.opensearch.common.settings.Settings; -import org.opensearch.common.util.FeatureFlags; -import org.opensearch.common.util.PageCacheRecycler; -import org.opensearch.core.common.io.stream.NamedWriteableRegistry; -import org.opensearch.core.indices.breaker.CircuitBreakerService; -import org.opensearch.core.xcontent.NamedXContentRegistry; -import org.opensearch.env.Environment; -import org.opensearch.env.NodeEnvironment; -import org.opensearch.plugins.SecureTransportSettingsProvider; -import org.opensearch.repositories.RepositoriesService; -import org.opensearch.script.ScriptService; -import org.opensearch.telemetry.tracing.Tracer; -import org.opensearch.threadpool.ExecutorBuilder; -import org.opensearch.threadpool.ThreadPool; -import org.opensearch.transport.Transport; -import org.opensearch.watcher.ResourceWatcherService; - -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; - -import static org.opensearch.common.util.FeatureFlags.ARROW_STREAMS_SETTING; - -/** - * Delegates the plugin implementation to the {@link FlightStreamPluginImpl} if the Arrow Streams feature flag is enabled. - * Otherwise, it creates a no-op implementation. - */ -@ExperimentalApi -public class FlightStreamPlugin extends BaseFlightStreamPlugin { - - private final BaseFlightStreamPlugin delegate; - - /** - * Constructor for FlightStreamPlugin. - * @param settings The settings for the plugin. - */ - public FlightStreamPlugin(Settings settings) { - if (FeatureFlags.isEnabled(ARROW_STREAMS_SETTING)) { - this.delegate = new FlightStreamPluginImpl(settings); - } else { - this.delegate = new BaseFlightStreamPlugin() { - @Override - public Collection createComponents( - Client client, - ClusterService clusterService, - ThreadPool threadPool, - ResourceWatcherService resourceWatcherService, - ScriptService scriptService, - NamedXContentRegistry xContentRegistry, - Environment environment, - NodeEnvironment nodeEnvironment, - NamedWriteableRegistry namedWriteableRegistry, - IndexNameExpressionResolver indexNameExpressionResolver, - Supplier repositoriesServiceSupplier - ) { - return List.of(); - } - - @Override - public Map> getSecureTransports( - Settings settings, - ThreadPool threadPool, - PageCacheRecycler pageCacheRecycler, - CircuitBreakerService circuitBreakerService, - NamedWriteableRegistry namedWriteableRegistry, - NetworkService networkService, - SecureTransportSettingsProvider secureTransportSettingsProvider, - Tracer tracer - ) { - return Map.of(); - } - - @Override - public Supplier getStreamManager() { - return () -> null; - } - - @Override - public List> getExecutorBuilders(Settings settings) { - return List.of(); - } - - @Override - public List> getSettings() { - return List.of(); - } - - @Override - public void onNodeStarted(DiscoveryNode localNode) { - - } - }; - } - } - - /** - * Creates components related to the Flight stream functionality. - * @param client The OpenSearch client - * @param clusterService The cluster service - * @param threadPool The thread pool - * @param resourceWatcherService The resource watcher service - * @param scriptService The script service - * @param xContentRegistry The named XContent registry - * @param environment The environment - * @param nodeEnvironment The node environment - * @param namedWriteableRegistry The named writeable registry - * @param indexNameExpressionResolver The index name expression resolver - * @param repositoriesServiceSupplier The supplier for the repositories service - * @return A collection of components - */ - @Override - public Collection createComponents( - Client client, - ClusterService clusterService, - ThreadPool threadPool, - ResourceWatcherService resourceWatcherService, - ScriptService scriptService, - NamedXContentRegistry xContentRegistry, - Environment environment, - NodeEnvironment nodeEnvironment, - NamedWriteableRegistry namedWriteableRegistry, - IndexNameExpressionResolver indexNameExpressionResolver, - Supplier repositoriesServiceSupplier - ) { - return delegate.createComponents( - client, - clusterService, - threadPool, - resourceWatcherService, - scriptService, - xContentRegistry, - environment, - nodeEnvironment, - namedWriteableRegistry, - indexNameExpressionResolver, - repositoriesServiceSupplier - ); - } - - /** - * Gets the secure transports for Flight stream functionality. - * @param settings The settings for the plugin - * @param threadPool The thread pool - * @param pageCacheRecycler The page cache recycler - * @param circuitBreakerService The circuit breaker service - * @param namedWriteableRegistry The named writeable registry - * @param networkService The network service - * @param secureTransportSettingsProvider The secure transport settings provider - * @param tracer The tracer - * @return A map of secure transports - */ - @Override - public Map> getSecureTransports( - Settings settings, - ThreadPool threadPool, - PageCacheRecycler pageCacheRecycler, - CircuitBreakerService circuitBreakerService, - NamedWriteableRegistry namedWriteableRegistry, - NetworkService networkService, - SecureTransportSettingsProvider secureTransportSettingsProvider, - Tracer tracer - ) { - return delegate.getSecureTransports( - settings, - threadPool, - pageCacheRecycler, - circuitBreakerService, - namedWriteableRegistry, - networkService, - secureTransportSettingsProvider, - tracer - ); - } - - /** - * Gets the StreamManager instance for managing flight streams. - */ - @Override - public Supplier getStreamManager() { - return delegate.getStreamManager(); - } - - /** - * Gets the list of ExecutorBuilder instances for building thread pools used for FlightServer. - * @param settings The settings for the plugin - */ - @Override - public List> getExecutorBuilders(Settings settings) { - return delegate.getExecutorBuilders(settings); - } - - /** - * Gets the list of settings for the Flight plugin. - */ - @Override - public List> getSettings() { - return delegate.getSettings(); - } - - /** - * Called when a node is started. ClusterService is started by this time - * @param localNode local Node info - */ - @Override - public void onNodeStarted(DiscoveryNode localNode) { - delegate.onNodeStarted(localNode); - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightClientManager.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightClientManager.java deleted file mode 100644 index 19bdbb4df13b2..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightClientManager.java +++ /dev/null @@ -1,246 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ -package org.opensearch.arrow.flight.bootstrap; - -import org.apache.arrow.flight.Location; -import org.apache.arrow.flight.OSFlightClient; -import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.util.VisibleForTesting; -import org.opensearch.Version; -import org.opensearch.arrow.flight.bootstrap.tls.SslContextProvider; -import org.opensearch.cluster.ClusterChangedEvent; -import org.opensearch.cluster.ClusterStateListener; -import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.cluster.service.ClusterService; -import org.opensearch.common.util.FeatureFlags; - -import java.util.Map; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.function.Function; - -import io.netty.channel.EventLoopGroup; - -import static org.opensearch.common.util.FeatureFlags.ARROW_STREAMS_SETTING; - -/** - * Manages Flight client connections to OpenSearch nodes in a cluster. - * This class maintains a pool of Flight clients for internode communication, - * handles client lifecycle, and responds to cluster state changes. - * - *

The manager implements ClusterStateListener to automatically update - * client connections when nodes join or leave the cluster.

- */ -public class FlightClientManager implements ClusterStateListener, AutoCloseable { - private static final Version MIN_SUPPORTED_VERSION = Version.fromString("3.0.0"); - - private final ClientPool clientPool; - private final ClientConfiguration clientConfig; - - /** - * Creates a new FlightClientManager instance. - * - * @param allocator Supplier for buffer allocation - * @param clusterService Service for cluster state management - * @param sslContextProvider Provider for SSL/TLS context configuration - * @param elg Event loop group for network operations - * @param grpcExecutor Executor service for gRPC operations - */ - public FlightClientManager( - BufferAllocator allocator, - ClusterService clusterService, - SslContextProvider sslContextProvider, - EventLoopGroup elg, - ExecutorService grpcExecutor - ) { - this.clientConfig = new ClientConfiguration( - Objects.requireNonNull(allocator, "BufferAllocator cannot be null"), - Objects.requireNonNull(clusterService, "ClusterService cannot be null"), - Objects.requireNonNull(sslContextProvider, "SslContextProvider cannot be null"), - Objects.requireNonNull(elg, "EventLoopGroup cannot be null"), - Objects.requireNonNull(grpcExecutor, "ExecutorService cannot be null") - ); - this.clientPool = new ClientPool(); - clusterService.addListener(this); - } - - /** - * Returns a Flight client for a given node ID. - * @param nodeId The ID of the node for which to retrieve the Flight client - * @return An OpenSearchFlightClient instance for the specified node - */ - public OSFlightClient getFlightClient(String nodeId) { - FlightClientHolder clientHolder = clientPool.getOrCreateClient(nodeId, this::buildFlightClient); - return clientHolder == null ? null : clientHolder.flightClient; - } - - /** - * Returns the location of a Flight client for a given node ID. - * @param nodeId The ID of the node for which to retrieve the location - * @return The Location of the Flight client for the specified node - */ - public Location getFlightClientLocation(String nodeId) { - FlightClientHolder clientHolder = clientPool.getOrCreateClient(nodeId, this::buildFlightClient); - return clientHolder == null ? null : clientHolder.location; - } - - /** - * Returns the ID of the local node in the cluster. - * - * @return String representing the local node ID - */ - public String getLocalNodeId() { - return Objects.requireNonNull(clientConfig.clusterService).state().nodes().getLocalNodeId(); - } - - /** - * Closes the FlightClientManager and all associated Flight clients. - */ - @Override - public void close() throws Exception { - clientPool.close(); - } - - private FlightClientHolder buildFlightClient(String nodeId) { - DiscoveryNode node = getNodeFromCluster(nodeId); - if (!isValidNode(node)) { - return null; - } - - Location location = createClientLocation(node); - OSFlightClient client = buildClient(location); - return new FlightClientHolder(client, location); - } - - private DiscoveryNode getNodeFromCluster(String nodeId) { - return Objects.requireNonNull(clientConfig.clusterService).state().nodes().get(nodeId); - } - - private boolean isValidNode(DiscoveryNode node) { - return node != null && !node.getVersion().before(MIN_SUPPORTED_VERSION) && FeatureFlags.isEnabled(ARROW_STREAMS_SETTING); - } - - private Location createClientLocation(DiscoveryNode node) { - String address = node.getAddress().getAddress(); - int clientPort = Integer.parseInt(node.getAttributes().get("transport.stream.port")); - return clientConfig.sslContextProvider.isSslEnabled() - ? Location.forGrpcTls(address, clientPort) - : Location.forGrpcInsecure(address, clientPort); - } - - private OSFlightClient buildClient(Location location) { - return OSFlightClient.builder( - clientConfig.allocator, - location, - ServerConfig.clientChannelType(), - clientConfig.grpcExecutor, - clientConfig.workerELG, - clientConfig.sslContextProvider.getClientSslContext() - ).build(); - } - - /** - * Initializes the Flight clients for the current cluster state. - * @param event The ClusterChangedEvent containing the current cluster state - */ - @Override - public void clusterChanged(ClusterChangedEvent event) { - if (event.nodesChanged()) { - updateFlightClients(); - } - } - - @VisibleForTesting - void updateFlightClients() { - Set currentNodes = getCurrentClusterNodes(); - clientPool.removeStaleClients(currentNodes); - initializeFlightClients(); - } - - private Set getCurrentClusterNodes() { - return Objects.requireNonNull(clientConfig.clusterService).state().nodes().getNodes().keySet(); - } - - private void initializeFlightClients() { - for (DiscoveryNode node : Objects.requireNonNull(clientConfig.clusterService).state().nodes()) { - getFlightClient(node.getId()); - } - } - - @VisibleForTesting - Map getFlightClients() { - return clientPool.getClients(); - } - - /** - * Holds configuration for Flight client creation - */ - private static class ClientConfiguration { - private final BufferAllocator allocator; - private final ClusterService clusterService; - private final SslContextProvider sslContextProvider; - private final EventLoopGroup workerELG; - private final ExecutorService grpcExecutor; - - ClientConfiguration( - BufferAllocator allocator, - ClusterService clusterService, - SslContextProvider sslContextProvider, - EventLoopGroup workerELG, - ExecutorService grpcExecutor - ) { - this.allocator = allocator; - this.clusterService = clusterService; - this.sslContextProvider = sslContextProvider; - this.workerELG = workerELG; - this.grpcExecutor = grpcExecutor; - } - } - - /** - * Manages the pool of Flight clients - */ - private static class ClientPool implements AutoCloseable { - private final Map flightClients = new ConcurrentHashMap<>(); - - FlightClientHolder getOrCreateClient(String nodeId, Function clientBuilder) { - return flightClients.computeIfAbsent(nodeId, clientBuilder); - } - - void removeStaleClients(Set currentNodes) { - flightClients.keySet().removeIf(nodeId -> !currentNodes.contains(nodeId)); - } - - Map getClients() { - return flightClients; - } - - @Override - public void close() throws Exception { - for (FlightClientHolder clientHolder : flightClients.values()) { - clientHolder.flightClient.close(); - } - flightClients.clear(); - } - } - - /** - * Holds a Flight client and its associated location - */ - private static class FlightClientHolder { - final OSFlightClient flightClient; - final Location location; - - FlightClientHolder(OSFlightClient flightClient, Location location) { - this.flightClient = Objects.requireNonNull(flightClient, "FlightClient cannot be null"); - this.location = Objects.requireNonNull(location, "Location cannot be null"); - } - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightService.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightService.java deleted file mode 100644 index d1497a224a53c..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightService.java +++ /dev/null @@ -1,431 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight.bootstrap; - -import org.apache.arrow.flight.FlightProducer; -import org.apache.arrow.flight.Location; -import org.apache.arrow.flight.NoOpFlightProducer; -import org.apache.arrow.flight.OSFlightServer; -import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.memory.RootAllocator; -import org.apache.arrow.util.AutoCloseables; -import org.apache.arrow.util.VisibleForTesting; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.opensearch.arrow.flight.bootstrap.tls.DefaultSslContextProvider; -import org.opensearch.arrow.flight.bootstrap.tls.DisabledSslContextProvider; -import org.opensearch.arrow.flight.bootstrap.tls.SslContextProvider; -import org.opensearch.arrow.spi.StreamManager; -import org.opensearch.arrow.spi.StreamProducer; -import org.opensearch.arrow.spi.StreamReader; -import org.opensearch.arrow.spi.StreamTicket; -import org.opensearch.arrow.spi.StreamTicketFactory; -import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.cluster.node.DiscoveryNodeRole; -import org.opensearch.cluster.service.ClusterService; -import org.opensearch.common.lifecycle.AbstractLifecycleComponent; -import org.opensearch.common.settings.Settings; -import org.opensearch.core.tasks.TaskId; -import org.opensearch.plugins.SecureTransportSettingsProvider; -import org.opensearch.threadpool.ThreadPool; - -import java.io.IOException; -import java.security.AccessController; -import java.security.PrivilegedExceptionAction; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.TimeUnit; - -import io.netty.channel.EventLoopGroup; -import io.netty.util.NettyRuntime; -import io.netty.util.concurrent.Future; - -/** - * FlightService manages the Arrow Flight server and client for OpenSearch. - * It handles the initialization, startup, and shutdown of the Flight server and client, - * as well as managing the stream operations through a FlightStreamManager. - */ -public class FlightService extends AbstractLifecycleComponent { - private static final Logger logger = LogManager.getLogger(FlightService.class); - - // Constants - private static final String GRPC_WORKER_ELG = "os-grpc-worker-ELG"; - private static final String GRPC_BOSS_ELG = "os-grpc-boss-ELG"; - private static final int SHUTDOWN_TIMEOUT_SECONDS = 5; - private static final String TRANSPORT_STREAM_PORT = "transport.stream.port"; - - private final ServerComponents serverComponents; - private final NetworkResources networkResources; - - /** - * Constructor for FlightService. - * @param settings The settings for the FlightService. - */ - public FlightService(Settings settings) { - Objects.requireNonNull(settings, "Settings cannot be null"); - this.serverComponents = new ServerComponents(); - this.networkResources = new NetworkResources(); - initializeServerConfig(settings); - } - - private void initializeServerConfig(Settings settings) { - try { - AccessController.doPrivileged((PrivilegedExceptionAction) () -> { - ServerConfig.init(settings); - return null; - }); - } catch (Exception e) { - throw new RuntimeException("Failed to initialize Arrow Flight server", e); - } - } - - /** - * Initializes the FlightService with the provided ClusterService and ThreadPool. - * It sets up the SSL context provider, client manager, and stream manager. - * @param clusterService The ClusterService instance. - * @param threadPool The ThreadPool instance. - */ - public void initialize(ClusterService clusterService, ThreadPool threadPool) { - serverComponents.setClusterService(Objects.requireNonNull(clusterService, "ClusterService cannot be null")); - serverComponents.setThreadPool(Objects.requireNonNull(threadPool, "ThreadPool cannot be null")); - } - - /** - * Sets the SecureTransportSettingsProvider for the FlightService. - * @param secureTransportSettingsProvider The SecureTransportSettingsProvider instance. - */ - public void setSecureTransportSettingsProvider(SecureTransportSettingsProvider secureTransportSettingsProvider) { - serverComponents.setSecureTransportSettingsProvider( - Objects.requireNonNull(secureTransportSettingsProvider, "SecureTransportSettingsProvider cannot be null") - ); - } - - /** - * Starts the FlightService by initializing the stream manager. - */ - @Override - protected void doStart() { - serverComponents.initializeStreamManager(); - } - - /** - * Stops the FlightService by closing the server components and network resources. - */ - @Override - protected void doStop() { - serverComponents.close(); - networkResources.close(); - } - - /** - * doStop() ensures all resources are cleaned up and resources are recreated - * onNodeStart() - */ - @Override - protected void doClose() { - - } - - /** - * Lazily instantiates the server and networks resources and starts the FlightServer. - * Cluster services is started and node is part of the cluster when this method is called. - * If the node is a dedicated cluster manager node, its a no-op as this feature isn't valid on dedicated - * cluster manager nodes. - * @param localNode The local node - */ - public void onNodeStart(DiscoveryNode localNode) { - Objects.requireNonNull(localNode, "LocalNode cannot be null"); - - if (isDedicatedClusterManagerNode(localNode)) { - doClose(); - return; - } - - try { - serverComponents.initialize(); - networkResources.initialize(serverComponents); - startFlightServer(localNode); - } catch (Exception e) { - logger.error("Failed to start Flight server", e); - cleanup(); - throw new RuntimeException("Failed to start Flight server", e); - } - } - - private void cleanup() { - try { - doClose(); - } catch (Exception e) { - logger.error("Error during cleanup", e); - } - } - - private void startFlightServer(DiscoveryNode localNode) { - Location serverLocation = createServerLocation(localNode); - FlightProducer producer = serverComponents.createFlightProducer(); - - try { - OSFlightServer server = buildAndStartServer(serverLocation, producer); - serverComponents.setServer(server); - logger.info("Arrow Flight server started. Listening at {}", serverLocation); - } catch (Exception e) { - String errorMsg = "Failed to start Arrow Flight server at " + serverLocation; - logger.error(errorMsg, e); - throw new RuntimeException(errorMsg, e); - } - } - - private Location createServerLocation(DiscoveryNode localNode) { - String host = localNode.getAddress().getAddress(); - int port = Integer.parseInt(localNode.getAttributes().get(TRANSPORT_STREAM_PORT)); - return ServerConfig.getLocation(host, port); - } - - private OSFlightServer buildAndStartServer(Location location, FlightProducer producer) throws IOException { - OSFlightServer server = OSFlightServer.builder( - serverComponents.getAllocator(), - location, - producer, - serverComponents.getSslContextProvider().getServerSslContext(), - ServerConfig.serverChannelType(), - networkResources.getBossEventLoopGroup(), - networkResources.getWorkerEventLoopGroup(), - networkResources.getServerExecutor() - ).build(); - - server.start(); - return server; - } - - private static boolean isDedicatedClusterManagerNode(DiscoveryNode node) { - Set nodeRoles = node.getRoles(); - return nodeRoles.size() == 1 - && (nodeRoles.contains(DiscoveryNodeRole.CLUSTER_MANAGER_ROLE) || nodeRoles.contains(DiscoveryNodeRole.MASTER_ROLE)); - } - - /** - * Retrieves the FlightClientManager used by the FlightService. - * @return The FlightClientManager instance. - */ - public FlightClientManager getFlightClientManager() { - return serverComponents.getClientManager(); - } - - /** - * Retrieves the StreamManager used by the FlightService. - * @return The StreamManager instance. - */ - public StreamManager getStreamManager() { - return serverComponents.getStreamManager(); - } - - @VisibleForTesting - SslContextProvider getSslContextProvider() { - return serverComponents.getSslContextProvider(); - } - - @VisibleForTesting - BufferAllocator getAllocator() { - return serverComponents.getAllocator(); - } - - private static class ServerComponents implements AutoCloseable { - private static final Logger logger = LogManager.getLogger(ServerComponents.class); - - private OSFlightServer server; - private BufferAllocator allocator; - private StreamManager streamManager; - private FlightClientManager clientManager; - private ClusterService clusterService; - private ThreadPool threadPool; - private SecureTransportSettingsProvider secureTransportSettingsProvider; - private SslContextProvider sslContextProvider; - - void initialize() throws Exception { - initializeAllocator(); - initializeSslContext(); - } - - void initializeStreamManager() { - streamManager = new StreamManager() { - @Override - public StreamTicket registerStream(StreamProducer producer, TaskId parentTaskId) { - return null; - } - - @Override - public StreamReader getStreamReader(StreamTicket ticket) { - return null; - } - - @Override - public StreamTicketFactory getStreamTicketFactory() { - return null; - } - - @Override - public void close() { - - } - }; - } - - private void initializeAllocator() throws Exception { - allocator = AccessController.doPrivileged( - (PrivilegedExceptionAction) () -> new RootAllocator(Integer.MAX_VALUE) - ); - } - - private void initializeSslContext() { - sslContextProvider = ServerConfig.isSslEnabled() - ? new DefaultSslContextProvider(secureTransportSettingsProvider) - : new DisabledSslContextProvider(); - } - - FlightProducer createFlightProducer() { - return new NoOpFlightProducer(); - } - - @Override - public void close() { - try { - AutoCloseables.close(server, clientManager, allocator); - } catch (Exception e) { - logger.error("Error while closing server components", e); - } - } - - public BufferAllocator getAllocator() { - return allocator; - } - - public StreamManager getStreamManager() { - return streamManager; - } - - public FlightClientManager getClientManager() { - return clientManager; - } - - public void setClientManager(FlightClientManager clientManager) { - this.clientManager = Objects.requireNonNull(clientManager); - } - - public ClusterService getClusterService() { - return clusterService; - } - - public void setClusterService(ClusterService clusterService) { - this.clusterService = Objects.requireNonNull(clusterService); - } - - public ThreadPool getThreadPool() { - return threadPool; - } - - public void setThreadPool(ThreadPool threadPool) { - this.threadPool = Objects.requireNonNull(threadPool); - } - - public void setSecureTransportSettingsProvider(SecureTransportSettingsProvider provider) { - this.secureTransportSettingsProvider = Objects.requireNonNull(provider); - } - - public void setServer(OSFlightServer server) { - this.server = Objects.requireNonNull(server); - } - - public SslContextProvider getSslContextProvider() { - return sslContextProvider; - } - } - - private static class NetworkResources implements AutoCloseable { - private static final Logger logger = LogManager.getLogger(NetworkResources.class); - - private EventLoopGroup bossEventLoopGroup; - private EventLoopGroup workerEventLoopGroup; - private ExecutorService serverExecutor; - private ExecutorService clientExecutor; - - void initialize(ServerComponents components) { - initializeEventLoopGroups(); - initializeExecutors(components.getThreadPool()); - initializeClientManager(components); - } - - private void initializeEventLoopGroups() { - bossEventLoopGroup = ServerConfig.createELG(GRPC_BOSS_ELG, 1); - workerEventLoopGroup = ServerConfig.createELG(GRPC_WORKER_ELG, NettyRuntime.availableProcessors() * 2); - } - - private void initializeExecutors(ThreadPool threadPool) { - Objects.requireNonNull(threadPool, "ThreadPool cannot be null"); - serverExecutor = threadPool.executor(ServerConfig.FLIGHT_SERVER_THREAD_POOL_NAME); - clientExecutor = threadPool.executor(ServerConfig.FLIGHT_CLIENT_THREAD_POOL_NAME); - } - - private void initializeClientManager(ServerComponents components) { - Objects.requireNonNull(components, "ServerComponents cannot be null"); - FlightClientManager clientManager = new FlightClientManager( - components.getAllocator(), - components.getClusterService(), - components.getSslContextProvider(), - workerEventLoopGroup, - clientExecutor - ); - components.setClientManager(clientManager); - } - - @Override - public void close() { - closeEventLoopGroups(); - closeExecutors(); - } - - private void closeEventLoopGroups() { - gracefullyShutdownEventLoopGroup(bossEventLoopGroup, GRPC_BOSS_ELG); - gracefullyShutdownEventLoopGroup(workerEventLoopGroup, GRPC_WORKER_ELG); - } - - private void gracefullyShutdownEventLoopGroup(EventLoopGroup group, String groupName) { - if (group != null) { - Future shutdownFuture = group.shutdownGracefully(0, SHUTDOWN_TIMEOUT_SECONDS, TimeUnit.SECONDS); - shutdownFuture.awaitUninterruptibly(); - if (!shutdownFuture.isSuccess()) { - logger.warn("Error closing {} netty event loop group {}", groupName, shutdownFuture.cause()); - } - } - } - - private void closeExecutors() { - shutdownExecutor(serverExecutor); - shutdownExecutor(clientExecutor); - } - - private void shutdownExecutor(ExecutorService executor) { - if (executor != null) { - executor.shutdown(); - } - } - - public EventLoopGroup getBossEventLoopGroup() { - return bossEventLoopGroup; - } - - public EventLoopGroup getWorkerEventLoopGroup() { - return workerEventLoopGroup; - } - - public ExecutorService getServerExecutor() { - return serverExecutor; - } - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightStreamPluginImpl.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightStreamPluginImpl.java deleted file mode 100644 index 1e466a644514b..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/FlightStreamPluginImpl.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight.bootstrap; - -import org.opensearch.arrow.flight.BaseFlightStreamPlugin; -import org.opensearch.arrow.spi.StreamManager; -import org.opensearch.client.Client; -import org.opensearch.cluster.metadata.IndexNameExpressionResolver; -import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.cluster.service.ClusterService; -import org.opensearch.common.network.NetworkService; -import org.opensearch.common.settings.Setting; -import org.opensearch.common.settings.Settings; -import org.opensearch.common.util.PageCacheRecycler; -import org.opensearch.core.common.io.stream.NamedWriteableRegistry; -import org.opensearch.core.indices.breaker.CircuitBreakerService; -import org.opensearch.core.xcontent.NamedXContentRegistry; -import org.opensearch.env.Environment; -import org.opensearch.env.NodeEnvironment; -import org.opensearch.plugins.SecureTransportSettingsProvider; -import org.opensearch.repositories.RepositoriesService; -import org.opensearch.script.ScriptService; -import org.opensearch.telemetry.tracing.Tracer; -import org.opensearch.threadpool.ExecutorBuilder; -import org.opensearch.threadpool.ThreadPool; -import org.opensearch.transport.Transport; -import org.opensearch.watcher.ResourceWatcherService; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.function.Supplier; - -/** - * FlightStreamPlugin class extends BaseFlightStreamPlugin and provides implementation for FlightStream plugin. - */ -public class FlightStreamPluginImpl extends BaseFlightStreamPlugin { - - private final FlightService flightService; - - /** - * Constructor for FlightStreamPluginImpl. - * @param settings The settings for the FlightStreamPlugin. - */ - public FlightStreamPluginImpl(Settings settings) { - this.flightService = new FlightService(settings); - } - - /** - * Creates components for the FlightStream plugin. - * @param client The client instance. - * @param clusterService The cluster service instance. - * @param threadPool The thread pool instance. - * @param resourceWatcherService The resource watcher service instance. - * @param scriptService The script service instance. - * @param xContentRegistry The named XContent registry. - * @param environment The environment instance. - * @param nodeEnvironment The node environment instance. - * @param namedWriteableRegistry The named writeable registry. - * @param indexNameExpressionResolver The index name expression resolver instance. - * @param repositoriesServiceSupplier The supplier for the repositories service. - * @return FlightService - */ - @Override - public Collection createComponents( - Client client, - ClusterService clusterService, - ThreadPool threadPool, - ResourceWatcherService resourceWatcherService, - ScriptService scriptService, - NamedXContentRegistry xContentRegistry, - Environment environment, - NodeEnvironment nodeEnvironment, - NamedWriteableRegistry namedWriteableRegistry, - IndexNameExpressionResolver indexNameExpressionResolver, - Supplier repositoriesServiceSupplier - ) { - flightService.initialize(clusterService, threadPool); - return List.of(flightService); - } - - /** - * Gets the secure transports for the FlightStream plugin. - * @param settings The settings for the plugin. - * @param threadPool The thread pool instance. - * @param pageCacheRecycler The page cache recycler instance. - * @param circuitBreakerService The circuit breaker service instance. - * @param namedWriteableRegistry The named writeable registry. - * @param networkService The network service instance. - * @param secureTransportSettingsProvider The secure transport settings provider. - * @param tracer The tracer instance. - * @return A map of secure transports. - */ - @Override - public Map> getSecureTransports( - Settings settings, - ThreadPool threadPool, - PageCacheRecycler pageCacheRecycler, - CircuitBreakerService circuitBreakerService, - NamedWriteableRegistry namedWriteableRegistry, - NetworkService networkService, - SecureTransportSettingsProvider secureTransportSettingsProvider, - Tracer tracer - ) { - flightService.setSecureTransportSettingsProvider(secureTransportSettingsProvider); - return Collections.emptyMap(); - } - - /** - * Called when a node is started. Starts the FlightService - * @param localNode local Node. - */ - @Override - public void onNodeStarted(DiscoveryNode localNode) { - flightService.onNodeStart(localNode); - } - - /** - * Gets the StreamManager instance for managing flight streams. - */ - @Override - public Supplier getStreamManager() { - return flightService::getStreamManager; - } - - /** - * Gets the list of ExecutorBuilder instances for building thread pools used for FlightServer. - * @param settings The settings for the plugin - */ - @Override - public List> getExecutorBuilders(Settings settings) { - return List.of(ServerConfig.getServerExecutorBuilder(), ServerConfig.getClientExecutorBuilder()); - } - - /** - * Gets the list of settings for the Flight plugin. - */ - @Override - public List> getSettings() { - return ServerConfig.getSettings(); - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/ServerConfig.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/ServerConfig.java deleted file mode 100644 index db792a686145f..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/ServerConfig.java +++ /dev/null @@ -1,240 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight.bootstrap; - -import org.apache.arrow.flight.Location; -import org.opensearch.common.SuppressForbidden; -import org.opensearch.common.settings.Setting; -import org.opensearch.common.settings.Settings; -import org.opensearch.common.unit.TimeValue; -import org.opensearch.threadpool.ScalingExecutorBuilder; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import io.netty.channel.Channel; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.epoll.Epoll; -import io.netty.channel.epoll.EpollEventLoopGroup; -import io.netty.channel.epoll.EpollServerSocketChannel; -import io.netty.channel.epoll.EpollSocketChannel; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.nio.NioServerSocketChannel; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.util.concurrent.DefaultThreadFactory; - -/** - * Configuration class for OpenSearch Flight server settings. - * This class manages server-side configurations including port settings, Arrow memory settings, - * thread pool configurations, and SSL/TLS settings. - */ -public class ServerConfig { - /** - * Creates a new instance of the server configuration with default settings. - */ - public ServerConfig() {} - - /** - * Setting for the transport stream port. - */ - public static final Setting STREAM_PORT = Setting.intSetting( - "node.attr.transport.stream.port", - 9880, - 1024, - 65535, - Setting.Property.NodeScope - ); - - static final Setting ARROW_ALLOCATION_MANAGER_TYPE = Setting.simpleString( - "arrow.allocation.manager.type", - "Netty", - Setting.Property.NodeScope - ); - - static final Setting ARROW_ENABLE_NULL_CHECK_FOR_GET = Setting.boolSetting( - "arrow.enable_null_check_for_get", - false, - Setting.Property.NodeScope - ); - - static final Setting ARROW_ENABLE_DEBUG_ALLOCATOR = Setting.boolSetting( - "arrow.memory.debug.allocator", - false, - Setting.Property.NodeScope - ); - - static final Setting ARROW_ENABLE_UNSAFE_MEMORY_ACCESS = Setting.boolSetting( - "arrow.enable_unsafe_memory_access", - true, - Setting.Property.NodeScope - ); - - static final Setting FLIGHT_THREAD_POOL_MIN_SIZE = Setting.intSetting( - "thread_pool.flight-server.min", - 0, - 0, - Setting.Property.NodeScope - ); - - static final Setting FLIGHT_THREAD_POOL_MAX_SIZE = Setting.intSetting( - "thread_pool.flight-server.max", - 100000, // TODO depends on max concurrent streams per node, decide after benchmark. To be controlled by admission control layer. - 1, - Setting.Property.NodeScope - ); - - static final Setting FLIGHT_THREAD_POOL_KEEP_ALIVE = Setting.timeSetting( - "thread_pool.flight-server.keep_alive", - TimeValue.timeValueSeconds(30), - Setting.Property.NodeScope - ); - - static final Setting ARROW_SSL_ENABLE = Setting.boolSetting( - "arrow.ssl.enable", - false, // TODO: get default from security enabled - Setting.Property.NodeScope - ); - - /** - * The thread pool name for the Flight server. - */ - public static final String FLIGHT_SERVER_THREAD_POOL_NAME = "flight-server"; - - /** - * The thread pool name for the Flight client. - */ - public static final String FLIGHT_CLIENT_THREAD_POOL_NAME = "flight-client"; - - private static final String host = "localhost"; - private static boolean enableSsl; - private static int threadPoolMin; - private static int threadPoolMax; - private static TimeValue keepAlive; - - /** - * Initializes the server configuration with the provided settings. - * Sets system properties for Arrow memory management and configures thread pool settings. - * - * @param settings The OpenSearch settings to initialize the server with - */ - @SuppressForbidden(reason = "required for arrow allocator") - public static void init(Settings settings) { - System.setProperty("arrow.allocation.manager.type", ARROW_ALLOCATION_MANAGER_TYPE.get(settings)); - System.setProperty("arrow.enable_null_check_for_get", Boolean.toString(ARROW_ENABLE_NULL_CHECK_FOR_GET.get(settings))); - System.setProperty("arrow.enable_unsafe_memory_access", Boolean.toString(ARROW_ENABLE_UNSAFE_MEMORY_ACCESS.get(settings))); - System.setProperty("arrow.memory.debug.allocator", Boolean.toString(ARROW_ENABLE_DEBUG_ALLOCATOR.get(settings))); - Netty4Configs.init(settings); - enableSsl = ARROW_SSL_ENABLE.get(settings); - threadPoolMin = FLIGHT_THREAD_POOL_MIN_SIZE.get(settings); - threadPoolMax = FLIGHT_THREAD_POOL_MAX_SIZE.get(settings); - keepAlive = FLIGHT_THREAD_POOL_KEEP_ALIVE.get(settings); - } - - /** - * Checks if SSL/TLS is enabled for the Flight server. - * - * @return true if SSL is enabled, false otherwise - */ - public static boolean isSslEnabled() { - return enableSsl; - } - - /** - * Gets the thread pool executor builder configured for the Flight server. - * - * @return The configured ScalingExecutorBuilder instance - */ - public static ScalingExecutorBuilder getServerExecutorBuilder() { - return new ScalingExecutorBuilder(FLIGHT_SERVER_THREAD_POOL_NAME, threadPoolMin, threadPoolMax, keepAlive); - } - - /** - * Gets the thread pool executor builder configured for the Flight server. - * - * @return The configured ScalingExecutorBuilder instance - */ - public static ScalingExecutorBuilder getClientExecutorBuilder() { - return new ScalingExecutorBuilder(FLIGHT_CLIENT_THREAD_POOL_NAME, threadPoolMin, threadPoolMax, keepAlive); - } - - /** - * Returns a list of all settings managed by this configuration class. - * - * @return List of Setting instances - */ - public static List> getSettings() { - return new ArrayList<>( - Arrays.asList( - ARROW_ALLOCATION_MANAGER_TYPE, - ARROW_ENABLE_NULL_CHECK_FOR_GET, - ARROW_ENABLE_DEBUG_ALLOCATOR, - ARROW_ENABLE_UNSAFE_MEMORY_ACCESS, - ARROW_SSL_ENABLE - ) - ) { - { - addAll(Netty4Configs.getSettings()); - } - }; - } - - static Location getLocation(String address, int port) { - if (enableSsl) { - return Location.forGrpcTls(address, port); - } - return Location.forGrpcInsecure(address, port); - } - - static EventLoopGroup createELG(String name, int eventLoopThreads) { - - return Epoll.isAvailable() - ? new EpollEventLoopGroup(eventLoopThreads, new DefaultThreadFactory(name, true)) - : new NioEventLoopGroup(eventLoopThreads, new DefaultThreadFactory(name, true)); - } - - static Class serverChannelType() { - return Epoll.isAvailable() ? EpollSocketChannel.class : NioServerSocketChannel.class; - } - - static Class clientChannelType() { - return Epoll.isAvailable() ? EpollServerSocketChannel.class : NioSocketChannel.class; - } - - private static class Netty4Configs { - public static final Setting NETTY_ALLOCATOR_NUM_DIRECT_ARENAS = Setting.intSetting( - "io.netty.allocator.numDirectArenas", - 1, // TODO - 2 * the number of available processors; to be confirmed and set after running benchmarks - 1, - Setting.Property.NodeScope - ); - - public static final Setting NETTY_TRY_REFLECTION_SET_ACCESSIBLE = Setting.boolSetting( - "io.netty.tryReflectionSetAccessible", - true, - Setting.Property.NodeScope - ); - - public static final Setting NETTY_NO_UNSAFE = Setting.boolSetting("io.netty.noUnsafe", false, Setting.Property.NodeScope); - - public static final Setting NETTY_TRY_UNSAFE = Setting.boolSetting("io.netty.tryUnsafe", true, Setting.Property.NodeScope); - - @SuppressForbidden(reason = "required for netty allocator configuration") - public static void init(Settings settings) { - System.setProperty("io.netty.allocator.numDirectArenas", Integer.toString(NETTY_ALLOCATOR_NUM_DIRECT_ARENAS.get(settings))); - System.setProperty("io.netty.noUnsafe", Boolean.toString(NETTY_NO_UNSAFE.get(settings))); - System.setProperty("io.netty.tryUnsafe", Boolean.toString(NETTY_TRY_UNSAFE.get(settings))); - System.setProperty("io.netty.tryReflectionSetAccessible", Boolean.toString(NETTY_TRY_REFLECTION_SET_ACCESSIBLE.get(settings))); - } - - public static List> getSettings() { - return Arrays.asList(NETTY_TRY_REFLECTION_SET_ACCESSIBLE, NETTY_ALLOCATOR_NUM_DIRECT_ARENAS, NETTY_NO_UNSAFE, NETTY_TRY_UNSAFE); - } - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/package-info.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/package-info.java deleted file mode 100644 index 3ee247809b0c0..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/** - * Bootstrap classes for initializing and configuring OpenSearch Flight service. - */ -package org.opensearch.arrow.flight.bootstrap; diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProvider.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProvider.java deleted file mode 100644 index e416c7e32ad81..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DefaultSslContextProvider.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight.bootstrap.tls; - -import org.opensearch.OpenSearchException; -import org.opensearch.plugins.SecureTransportSettingsProvider; - -import java.security.AccessController; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; -import java.util.Locale; - -import io.netty.handler.ssl.ApplicationProtocolConfig; -import io.netty.handler.ssl.ApplicationProtocolNames; -import io.netty.handler.ssl.ClientAuth; -import io.netty.handler.ssl.SslContext; -import io.netty.handler.ssl.SslProvider; -import io.netty.handler.ssl.SupportedCipherSuiteFilter; - -/** - * DefaultSslContextProvider is an implementation of the SslContextProvider interface that provides SSL contexts based on the provided SecureTransportSettingsProvider. - */ -public class DefaultSslContextProvider implements SslContextProvider { - - private final SecureTransportSettingsProvider secureTransportSettingsProvider; - - /** - * Constructor for DefaultSslContextProvider. - * @param secureTransportSettingsProvider The SecureTransportSettingsProvider instance. - */ - public DefaultSslContextProvider(SecureTransportSettingsProvider secureTransportSettingsProvider) { - this.secureTransportSettingsProvider = secureTransportSettingsProvider; - } - - /** - * Returns true to indicate that SSL is enabled. - * @return true - */ - @Override - public boolean isSslEnabled() { - return true; - } - - // TODO - handle certificates reload - /** - * Creates and returns the server SSL context based on the provided SecureTransportSettingsProvider. - * @return The server SSL context. - */ - @Override - public SslContext getServerSslContext() { - try { - SecureTransportSettingsProvider.SecureTransportParameters parameters = secureTransportSettingsProvider.parameters(null).get(); - return AccessController.doPrivileged( - (PrivilegedExceptionAction) () -> io.netty.handler.ssl.SslContextBuilder.forServer( - parameters.keyManagerFactory() - ) - .sslProvider(SslProvider.valueOf(parameters.sslProvider().toUpperCase(Locale.ROOT))) - .clientAuth(ClientAuth.valueOf(parameters.clientAuth().toUpperCase(Locale.ROOT))) - .protocols(parameters.protocols()) - .ciphers(parameters.cipherSuites(), SupportedCipherSuiteFilter.INSTANCE) - .sessionCacheSize(0) - .sessionTimeout(0) - .applicationProtocolConfig( - new ApplicationProtocolConfig( - ApplicationProtocolConfig.Protocol.ALPN, - // NO_ADVERTISE is currently the only mode supported by both OpenSsl and JDK providers. - ApplicationProtocolConfig.SelectorFailureBehavior.NO_ADVERTISE, - // ACCEPT is currently the only mode supported by both OpenSsl and JDK providers. - ApplicationProtocolConfig.SelectedListenerFailureBehavior.ACCEPT, - ApplicationProtocolNames.HTTP_2, - ApplicationProtocolNames.HTTP_1_1 - ) - ) - .trustManager(parameters.trustManagerFactory()) - .build() - ); - } catch (PrivilegedActionException e) { - throw new OpenSearchException("Failed to build server SSL context", e); - } - } - - /** - * Returns the client SSL context based on the provided SecureTransportSettingsProvider. - * @return The client SSL context. - */ - @Override - public SslContext getClientSslContext() { - try { - SecureTransportSettingsProvider.SecureTransportParameters parameters = secureTransportSettingsProvider.parameters(null).get(); - return AccessController.doPrivileged( - (PrivilegedExceptionAction) () -> io.netty.handler.ssl.SslContextBuilder.forClient() - .sslProvider(SslProvider.valueOf(parameters.sslProvider().toUpperCase(Locale.ROOT))) - .protocols(parameters.protocols()) - .ciphers(parameters.cipherSuites(), SupportedCipherSuiteFilter.INSTANCE) - .applicationProtocolConfig( - new ApplicationProtocolConfig( - ApplicationProtocolConfig.Protocol.ALPN, - ApplicationProtocolConfig.SelectorFailureBehavior.NO_ADVERTISE, - ApplicationProtocolConfig.SelectedListenerFailureBehavior.ACCEPT, - ApplicationProtocolNames.HTTP_2, - ApplicationProtocolNames.HTTP_1_1 - ) - ) - .sessionCacheSize(0) - .sessionTimeout(0) - .keyManager(parameters.keyManagerFactory()) - .trustManager(parameters.trustManagerFactory()) - .build() - ); - } catch (PrivilegedActionException e) { - throw new OpenSearchException("Failed to build client SSL context", e); - } - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DisabledSslContextProvider.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DisabledSslContextProvider.java deleted file mode 100644 index e7782b33a9b81..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/DisabledSslContextProvider.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight.bootstrap.tls; - -import io.netty.handler.ssl.SslContext; - -/** - * DisabledSslContextProvider is an implementation of the SslContextProvider interface that provides disabled SSL contexts. - * It is used when SSL is not enabled in the application. - */ -public class DisabledSslContextProvider implements SslContextProvider { - - /** - * Constructor for DisabledSslContextProvider. - */ - public DisabledSslContextProvider() {} - - /** - * Returns false to indicate that SSL is not enabled. - * @return false - */ - @Override - public boolean isSslEnabled() { - return false; - } - - /** - * Returns null as there is no server SSL context when SSL is disabled. - * @return null - */ - @Override - public SslContext getServerSslContext() { - return null; - } - - /** - * Returns null as there is no client SSL context when SSL is disabled. - * @return null - */ - @Override - public SslContext getClientSslContext() { - return null; - } -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProvider.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProvider.java deleted file mode 100644 index 2ed520e5d01a3..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProvider.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight.bootstrap.tls; - -import io.netty.handler.ssl.SslContext; - -/** - * Provider interface for SSL/TLS context configuration in OpenSearch Flight. - * This interface defines methods for managing SSL contexts for both server and client-side - * Flight communications. - */ -public interface SslContextProvider { - /** - * Checks if SSL/TLS is enabled for Flight communications. - * - * @return true if SSL/TLS is enabled, false otherwise - */ - boolean isSslEnabled(); - - /** - * Gets the SSL context configuration for the Flight server. - * This context is used to secure incoming connections to the Flight server. - * - * @return SslContext configured for server-side TLS - */ - SslContext getServerSslContext(); - - /** - * Gets the SSL context configuration for Flight clients. - * This context is used when making outbound connections to other Flight servers. - * - * @return SslContext configured for client-side TLS - */ - SslContext getClientSslContext(); -} diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/package-info.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/package-info.java deleted file mode 100644 index 2ad8ae734c2da..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/bootstrap/tls/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/** - * TLS/SSL configuration and security components for OpenSearch Flight service. - */ -package org.opensearch.arrow.flight.bootstrap.tls; diff --git a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/package-info.java b/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/package-info.java deleted file mode 100644 index 2341a24d0be85..0000000000000 --- a/modules/arrow-flight-rpc/src/main/java/org/opensearch/arrow/flight/package-info.java +++ /dev/null @@ -1,12 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/** - * Root package for OpenSearch Flight functionality, providing core flight service integration with OpenSearch. - */ -package org.opensearch.arrow.flight; diff --git a/modules/arrow-flight-rpc/src/main/plugin-metadata/plugin-security.policy b/modules/arrow-flight-rpc/src/main/plugin-metadata/plugin-security.policy deleted file mode 100644 index cff9156f3e6c9..0000000000000 --- a/modules/arrow-flight-rpc/src/main/plugin-metadata/plugin-security.policy +++ /dev/null @@ -1,20 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -grant codeBase "${codebase.arrow-flight-rpc}" { - // arrow flight service permissions - permission java.util.PropertyPermission "arrow.allocation.manager.type", "write"; - permission java.util.PropertyPermission "arrow.enable_null_check_for_get", "write"; - permission java.util.PropertyPermission "arrow.enable_unsafe_memory_access", "write"; - permission java.util.PropertyPermission "arrow.memory.debug.allocator", "write"; - - permission java.util.PropertyPermission "io.netty.tryReflectionSetAccessible", "write"; - permission java.util.PropertyPermission "io.netty.allocator.numDirectArenas", "write"; - permission java.util.PropertyPermission "io.netty.noUnsafe", "write"; - permission java.util.PropertyPermission "io.netty.tryUnsafe", "write"; -}; diff --git a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/FlightStreamPluginTests.java b/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/FlightStreamPluginTests.java deleted file mode 100644 index 3aad78c8ab39c..0000000000000 --- a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/FlightStreamPluginTests.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -package org.opensearch.arrow.flight; - -import org.opensearch.arrow.flight.bootstrap.FlightService; -import org.opensearch.arrow.spi.StreamManager; -import org.opensearch.cluster.ClusterState; -import org.opensearch.cluster.node.DiscoveryNodes; -import org.opensearch.cluster.service.ClusterService; -import org.opensearch.common.settings.Setting; -import org.opensearch.common.settings.Settings; -import org.opensearch.common.util.FeatureFlags; -import org.opensearch.plugins.SecureTransportSettingsProvider; -import org.opensearch.test.FeatureFlagSetter; -import org.opensearch.test.OpenSearchTestCase; -import org.opensearch.threadpool.ExecutorBuilder; -import org.opensearch.threadpool.ThreadPool; - -import java.io.IOException; -import java.util.Collection; -import java.util.List; -import java.util.function.Supplier; - -import static org.opensearch.common.util.FeatureFlags.ARROW_STREAMS_SETTING; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class FlightStreamPluginTests extends OpenSearchTestCase { - private Settings settings; - private ClusterService clusterService; - - @Override - public void setUp() throws Exception { - super.setUp(); - settings = Settings.builder().put("node.attr.transport.stream.port", "9880").put(ARROW_STREAMS_SETTING.getKey(), true).build(); - clusterService = mock(ClusterService.class); - ClusterState clusterState = mock(ClusterState.class); - DiscoveryNodes nodes = mock(DiscoveryNodes.class); - when(clusterService.state()).thenReturn(clusterState); - when(clusterState.nodes()).thenReturn(nodes); - when(nodes.getLocalNodeId()).thenReturn("test-node"); - } - - public void testPluginEnableAndDisable() throws IOException { - - Settings disabledSettings = Settings.builder() - .put("node.attr.transport.stream.port", "9880") - .put(ARROW_STREAMS_SETTING.getKey(), false) - .build(); - FeatureFlags.initializeFeatureFlags(disabledSettings); - FlightStreamPlugin disabledPlugin = new FlightStreamPlugin(disabledSettings); - - Collection disabledPluginComponents = disabledPlugin.createComponents( - null, - clusterService, - mock(ThreadPool.class), - null, - null, - null, - null, - null, - null, - null, - null - ); - - assertTrue(disabledPluginComponents.isEmpty()); - assertNull(disabledPlugin.getStreamManager().get()); - assertTrue(disabledPlugin.getExecutorBuilders(disabledSettings).isEmpty()); - assertNotNull(disabledPlugin.getSettings()); - assertTrue(disabledPlugin.getSettings().isEmpty()); - - assertNotNull(disabledPlugin.getSecureTransports(null, null, null, null, null, null, null, null)); - - disabledPlugin.close(); - - FeatureFlags.initializeFeatureFlags(settings); - FeatureFlagSetter.set(ARROW_STREAMS_SETTING.getKey()); - FlightStreamPlugin plugin = new FlightStreamPlugin(settings); - Collection components = plugin.createComponents( - null, - clusterService, - mock(ThreadPool.class), - null, - null, - null, - null, - null, - null, - null, - null - ); - - assertNotNull(components); - assertFalse(components.isEmpty()); - assertEquals(1, components.size()); - assertTrue(components.iterator().next() instanceof FlightService); - - List> executorBuilders = plugin.getExecutorBuilders(settings); - assertNotNull(executorBuilders); - assertFalse(executorBuilders.isEmpty()); - assertEquals(2, executorBuilders.size()); - - Supplier streamManager = plugin.getStreamManager(); - assertNotNull(streamManager); - - List> settings = plugin.getSettings(); - assertNotNull(settings); - assertFalse(settings.isEmpty()); - - assertNotNull(plugin.getSecureTransports(null, null, null, null, null, null, mock(SecureTransportSettingsProvider.class), null)); - plugin.close(); - } -} diff --git a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightClientManagerTests.java b/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightClientManagerTests.java deleted file mode 100644 index 59dfad0878fd2..0000000000000 --- a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightClientManagerTests.java +++ /dev/null @@ -1,232 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ -package org.opensearch.arrow.flight.bootstrap; - -import org.apache.arrow.flight.Location; -import org.apache.arrow.flight.OSFlightClient; -import org.apache.arrow.memory.BufferAllocator; -import org.apache.arrow.memory.RootAllocator; -import org.opensearch.Version; -import org.opensearch.arrow.flight.bootstrap.tls.SslContextProvider; -import org.opensearch.cluster.ClusterChangedEvent; -import org.opensearch.cluster.ClusterName; -import org.opensearch.cluster.ClusterState; -import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.cluster.node.DiscoveryNodeRole; -import org.opensearch.cluster.node.DiscoveryNodes; -import org.opensearch.cluster.service.ClusterService; -import org.opensearch.common.settings.Settings; -import org.opensearch.common.util.FeatureFlags; -import org.opensearch.core.common.transport.TransportAddress; -import org.opensearch.test.FeatureFlagSetter; -import org.opensearch.test.OpenSearchTestCase; -import org.junit.AfterClass; -import org.junit.BeforeClass; - -import java.net.InetAddress; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.atomic.AtomicInteger; - -import io.grpc.netty.GrpcSslContexts; -import io.netty.channel.EventLoopGroup; -import io.netty.handler.ssl.SslContext; -import io.netty.handler.ssl.SslContextBuilder; -import io.netty.util.NettyRuntime; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class FlightClientManagerTests extends OpenSearchTestCase { - - private static BufferAllocator allocator; - private static EventLoopGroup elg; - private static ExecutorService executorService; - private static final AtomicInteger port = new AtomicInteger(0); - - private ClusterService clusterService; - private ClusterState state; - private FlightClientManager clientManager; - - @BeforeClass - public static void setupClass() throws Exception { - ServerConfig.init(Settings.EMPTY); - allocator = new RootAllocator(); - elg = ServerConfig.createELG("test-grpc-worker-elg", NettyRuntime.availableProcessors() * 2); - executorService = ServerConfig.createELG("test-grpc-worker", NettyRuntime.availableProcessors() * 2); - } - - @Override - public void setUp() throws Exception { - super.setUp(); - FeatureFlagSetter.set(FeatureFlags.ARROW_STREAMS_SETTING.getKey()); - clusterService = mock(ClusterService.class); - state = getDefaultState(); - when(clusterService.state()).thenReturn(state); - SslContextProvider sslContextProvider = mock(SslContextProvider.class); - // Create a proper gRPC client SSL context with ALPN and HTTP/2 support - SslContext clientSslContext = GrpcSslContexts.configure(SslContextBuilder.forClient()).build(); - when(sslContextProvider.isSslEnabled()).thenReturn(true); - when(sslContextProvider.getClientSslContext()).thenReturn(clientSslContext); - clientManager = new FlightClientManager(allocator, clusterService, sslContextProvider, elg, executorService); - clientManager.updateFlightClients(); - } - - @Override - public void tearDown() throws Exception { - super.tearDown(); - clientManager.close(); - } - - private ClusterState getDefaultState() throws Exception { - int testPort = getBasePort() + port.addAndGet(2); - - DiscoveryNode localNode = createNode("local_node", "127.0.0.1", testPort); - DiscoveryNode remoteNode = createNode("remote_node", "127.0.0.2", testPort + 1); - - // Setup initial cluster state - DiscoveryNodes.Builder nodesBuilder = DiscoveryNodes.builder(); - nodesBuilder.add(remoteNode); - nodesBuilder.add(localNode); - nodesBuilder.localNodeId(localNode.getId()); - DiscoveryNodes nodes = nodesBuilder.build(); - - return ClusterState.builder(new ClusterName("test")).nodes(nodes).build(); - } - - private DiscoveryNode createNode(String nodeId, String host, int port) throws Exception { - TransportAddress address = new TransportAddress(InetAddress.getByName(host), port); - Map attributes = new HashMap<>(); - attributes.put("transport.stream.port", String.valueOf(port)); - attributes.put("arrow.streams.enabled", "true"); - Set roles = Collections.singleton(DiscoveryNodeRole.DATA_ROLE); - return new DiscoveryNode(nodeId, address, attributes, roles, Version.CURRENT); - } - - @AfterClass - public static void tearClass() { - allocator.close(); - } - - public void testGetFlightClientForExistingNode() { - validateNodes(); - } - - public void testGetFlightClientLocation() { - for (DiscoveryNode node : state.nodes()) { - Location location = clientManager.getFlightClientLocation(node.getId()); - assertNotNull("Flight client location should be returned", location); - assertEquals("Location host should match", node.getHostAddress(), location.getUri().getHost()); - } - } - - public void testGetFlightClientForNonExistentNode() throws Exception { - assertNull(clientManager.getFlightClient("non_existent_node")); - } - - public void testClusterChangedWithNodesChanged() throws Exception { - DiscoveryNode newNode = createNode("new_node", "127.0.0.3", getBasePort() + port.addAndGet(1)); - DiscoveryNodes.Builder newNodesBuilder = DiscoveryNodes.builder(); - - for (DiscoveryNode node : state.nodes()) { - newNodesBuilder.add(node); - } - newNodesBuilder.localNodeId("local_node"); - // Update cluster state with new node - newNodesBuilder.add(newNode); - DiscoveryNodes newNodes = newNodesBuilder.build(); - - ClusterState newState = ClusterState.builder(new ClusterName("test")).nodes(newNodes).build(); - - when(clusterService.state()).thenReturn(newState); - - clientManager.updateFlightClients(); - - for (DiscoveryNode node : state.nodes()) { - assertNotNull(clientManager.getFlightClient(node.getId())); - } - } - - public void testClusterChangedWithNoNodesChanged() throws Exception { - ClusterChangedEvent event = new ClusterChangedEvent("test", state, state); - clientManager.clusterChanged(event); - - // Verify original client still exists - for (DiscoveryNode node : state.nodes()) { - assertNotNull(clientManager.getFlightClient(node.getId())); - } - } - - public void testGetLocalNodeId() throws Exception { - assertEquals("Local node ID should match", "local_node", clientManager.getLocalNodeId()); - } - - public void testNodeWithoutStreamPort() throws Exception { - DiscoveryNode invalidNode = new DiscoveryNode( - "invalid_node", - new TransportAddress(InetAddress.getByName("127.0.0.4"), getBasePort() + port.addAndGet(1)), - Map.of("arrow.streams.enabled", "true"), - Collections.singleton(DiscoveryNodeRole.DATA_ROLE), - Version.CURRENT - ); - - DiscoveryNodes.Builder nodesBuilder = DiscoveryNodes.builder(); - nodesBuilder.add(invalidNode); - nodesBuilder.localNodeId("local_node"); - DiscoveryNodes nodes = nodesBuilder.build(); - ClusterState invalidState = ClusterState.builder(new ClusterName("test")).nodes(nodes).build(); - - when(clusterService.state()).thenReturn(invalidState); - - expectThrows(NumberFormatException.class, () -> { clientManager.getFlightClient(invalidNode.getId()); }); - } - - public void testCloseWithActiveClients() throws Exception { - for (DiscoveryNode node : state.nodes()) { - OSFlightClient client = clientManager.getFlightClient(node.getId()); - assertNotNull(client); - } - - clientManager.close(); - assertEquals(0, clientManager.getFlightClients().size()); - } - - public void testIncompatibleNodeVersion() throws Exception { - Map attributes = new HashMap<>(); - attributes.put("transport.stream.port", String.valueOf(getBasePort() + port.addAndGet(1))); - attributes.put("arrow.streams.enabled", "true"); - DiscoveryNode oldVersionNode = new DiscoveryNode( - "old_version_node", - new TransportAddress(InetAddress.getByName("127.0.0.3"), getBasePort() + port.addAndGet(1)), - attributes, - Collections.singleton(DiscoveryNodeRole.DATA_ROLE), - Version.fromString("2.18.0") // Version before Arrow Flight introduction - ); - - // Update cluster state with old version node - DiscoveryNodes.Builder nodesBuilder = DiscoveryNodes.builder(); - nodesBuilder.add(oldVersionNode); - nodesBuilder.localNodeId("local_node"); - DiscoveryNodes nodes = nodesBuilder.build(); - ClusterState oldVersionState = ClusterState.builder(new ClusterName("test")).nodes(nodes).build(); - - when(clusterService.state()).thenReturn(oldVersionState); - - assertNull(clientManager.getFlightClient(oldVersionNode.getId())); - } - - private void validateNodes() { - for (DiscoveryNode node : state.nodes()) { - OSFlightClient client = clientManager.getFlightClient(node.getId()); - assertNotNull("Flight client should be created for existing node", client); - } - } -} diff --git a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightServiceTests.java b/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightServiceTests.java deleted file mode 100644 index 197aa8f75112d..0000000000000 --- a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightServiceTests.java +++ /dev/null @@ -1,176 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ -package org.opensearch.arrow.flight.bootstrap; - -import org.opensearch.Version; -import org.opensearch.arrow.flight.bootstrap.tls.DefaultSslContextProvider; -import org.opensearch.arrow.flight.bootstrap.tls.DisabledSslContextProvider; -import org.opensearch.arrow.flight.bootstrap.tls.SslContextProvider; -import org.opensearch.cluster.ClusterName; -import org.opensearch.cluster.ClusterState; -import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.cluster.node.DiscoveryNodeRole; -import org.opensearch.cluster.node.DiscoveryNodes; -import org.opensearch.cluster.service.ClusterService; -import org.opensearch.common.settings.Settings; -import org.opensearch.common.util.FeatureFlags; -import org.opensearch.core.common.transport.TransportAddress; -import org.opensearch.plugins.SecureTransportSettingsProvider; -import org.opensearch.test.FeatureFlagSetter; -import org.opensearch.test.OpenSearchTestCase; -import org.opensearch.threadpool.ThreadPool; - -import java.net.InetAddress; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.atomic.AtomicInteger; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class FlightServiceTests extends OpenSearchTestCase { - - private Settings settings; - private ClusterService clusterService; - private ThreadPool threadPool; - private SecureTransportSettingsProvider secureTransportSettingsProvider; - private final AtomicInteger port = new AtomicInteger(0); - private DiscoveryNode localNode; - - @Override - public void setUp() throws Exception { - super.setUp(); - FeatureFlagSetter.set(FeatureFlags.ARROW_STREAMS_SETTING.getKey()); - int availablePort = getBaseStreamPort() + port.addAndGet(1); - settings = Settings.EMPTY; - localNode = createNode(availablePort); - - // Setup initial cluster state - DiscoveryNodes.Builder nodesBuilder = DiscoveryNodes.builder(); - nodesBuilder.localNodeId(localNode.getId()); - nodesBuilder.add(localNode); - DiscoveryNodes nodes = nodesBuilder.build(); - ClusterState clusterState = ClusterState.builder(new ClusterName("test")).nodes(nodes).build(); - clusterService = mock(ClusterService.class); - when(clusterService.state()).thenReturn(clusterState); - - threadPool = mock(ThreadPool.class); - when(threadPool.executor(ServerConfig.FLIGHT_SERVER_THREAD_POOL_NAME)).thenReturn(mock(ExecutorService.class)); - when(threadPool.executor(ServerConfig.FLIGHT_CLIENT_THREAD_POOL_NAME)).thenReturn(mock(ExecutorService.class)); - secureTransportSettingsProvider = mock(SecureTransportSettingsProvider.class); - } - - public void testInitializeWithSslEnabled() throws Exception { - // Configure SSL enabled - Settings sslSettings = Settings.builder().put("arrow.ssl.enable", true).build(); - - try (FlightService sslService = new FlightService(sslSettings)) { - sslService.setSecureTransportSettingsProvider(secureTransportSettingsProvider); - sslService.initialize(clusterService, threadPool); - expectThrows(RuntimeException.class, () -> sslService.onNodeStart(localNode)); - - SslContextProvider sslContextProvider = sslService.getSslContextProvider(); - assertNotNull("SSL context provider should not be null", sslContextProvider); - assertTrue("SSL context provider should be DefaultSslContextProvider", sslContextProvider instanceof DefaultSslContextProvider); - assertTrue("SSL should be enabled", sslContextProvider.isSslEnabled()); - } - } - - public void testInitializeWithSslDisabled() throws Exception { - int testPort = getBaseStreamPort() + port.addAndGet(1); - - Settings noSslSettings = Settings.builder() - .put("node.attr.transport.stream.port", String.valueOf(testPort)) - .put("arrow.ssl.enable", false) - .build(); - - try (FlightService noSslService = new FlightService(noSslSettings)) { - noSslService.initialize(clusterService, threadPool); - noSslService.start(); - noSslService.onNodeStart(localNode); - // Verify SSL is properly disabled - SslContextProvider sslContextProvider = noSslService.getSslContextProvider(); - assertNotNull("SSL context provider should not be null", sslContextProvider); - assertTrue( - "SSL context provider should be DisabledSslContextProvider", - sslContextProvider instanceof DisabledSslContextProvider - ); - assertFalse("SSL should be disabled", sslContextProvider.isSslEnabled()); - } - } - - public void testStartAndStop() throws Exception { - try (FlightService testService = new FlightService(Settings.EMPTY)) { - testService.initialize(clusterService, threadPool); - - testService.start(); - testService.onNodeStart(localNode); - testService.stop(); - testService.start(); - testService.onNodeStart(localNode); - assertNotNull(testService.getStreamManager()); - } - } - - public void testInitializeWithoutSecureTransportSettingsProvider() { - Settings sslSettings = Settings.builder().put(settings).put("arrow.ssl.enable", true).build(); - - try (FlightService sslService = new FlightService(sslSettings)) { - // Should throw exception when initializing without provider - expectThrows(RuntimeException.class, () -> { - sslService.initialize(clusterService, threadPool); - sslService.onNodeStart(localNode); - }); - } - } - - public void testServerStartupFailure() { - Settings invalidSettings = Settings.builder() - .put("node.attr.transport.stream.port", "-1") // Invalid port - .build(); - try (FlightService invalidService = new FlightService(invalidSettings)) { - expectThrows(RuntimeException.class, () -> { invalidService.onNodeStart(localNode); }); - } - } - - public void testLifecycleStateTransitions() throws Exception { - // Find new port for this test - try (FlightService testService = new FlightService(Settings.EMPTY)) { - testService.initialize(clusterService, threadPool); - - // Test all state transitions - testService.start(); - testService.onNodeStart(localNode); - assertEquals("STARTED", testService.lifecycleState().toString()); - - testService.stop(); - assertEquals("STOPPED", testService.lifecycleState().toString()); - - testService.close(); - assertEquals("CLOSED", testService.lifecycleState().toString()); - } - } - - @Override - public void tearDown() throws Exception { - super.tearDown(); - } - - private DiscoveryNode createNode(int port) throws Exception { - TransportAddress address = new TransportAddress(InetAddress.getByName("127.0.0.1"), port); - Map attributes = new HashMap<>(); - attributes.put("transport.stream.port", String.valueOf(port)); - attributes.put("arrow.streams.enabled", "true"); - - Set roles = Collections.singleton(DiscoveryNodeRole.DATA_ROLE); - return new DiscoveryNode("local_node", address, attributes, roles, Version.CURRENT); - } -} diff --git a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/ServerConfigTests.java b/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/ServerConfigTests.java deleted file mode 100644 index ec7b05a30eb49..0000000000000 --- a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/ServerConfigTests.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ -package org.opensearch.arrow.flight.bootstrap; - -import org.opensearch.common.settings.Settings; -import org.opensearch.common.unit.TimeValue; -import org.opensearch.test.OpenSearchTestCase; -import org.opensearch.threadpool.ScalingExecutorBuilder; - -public class ServerConfigTests extends OpenSearchTestCase { - - private Settings settings; - - @Override - public void setUp() throws Exception { - super.setUp(); - settings = Settings.builder() - .put("node.attr.transport.stream.port", 9880) - .put("arrow.allocation.manager.type", "Netty") - .put("arrow.enable_null_check_for_get", false) - .put("arrow.enable_unsafe_memory_access", true) - .put("arrow.memory.debug.allocator", false) - .put("arrow.ssl.enable", true) - .put("thread_pool.flight-server.min", 1) - .put("thread_pool.flight-server.max", 4) - .put("thread_pool.flight-server.keep_alive", TimeValue.timeValueMinutes(5)) - .build(); - } - - public void testInit() { - ServerConfig.init(settings); - - // Verify system properties are set correctly - assertEquals("Netty", System.getProperty("arrow.allocation.manager.type")); - assertEquals("false", System.getProperty("arrow.enable_null_check_for_get")); - assertEquals("true", System.getProperty("arrow.enable_unsafe_memory_access")); - assertEquals("false", System.getProperty("arrow.memory.debug.allocator")); - - // Verify SSL settings - assertTrue(ServerConfig.isSslEnabled()); - - ScalingExecutorBuilder executorBuilder = ServerConfig.getServerExecutorBuilder(); - assertNotNull(executorBuilder); - assertEquals(3, executorBuilder.getRegisteredSettings().size()); - assertEquals(1, executorBuilder.getRegisteredSettings().get(0).get(settings)); // min - assertEquals(4, executorBuilder.getRegisteredSettings().get(1).get(settings)); // max - assertEquals(TimeValue.timeValueMinutes(5), executorBuilder.getRegisteredSettings().get(2).get(settings)); // keep alive - } - - public void testGetSettings() { - var settings = ServerConfig.getSettings(); - assertNotNull(settings); - assertFalse(settings.isEmpty()); - - assertTrue(settings.contains(ServerConfig.ARROW_ALLOCATION_MANAGER_TYPE)); - assertTrue(settings.contains(ServerConfig.ARROW_ENABLE_NULL_CHECK_FOR_GET)); - assertTrue(settings.contains(ServerConfig.ARROW_ENABLE_UNSAFE_MEMORY_ACCESS)); - assertTrue(settings.contains(ServerConfig.ARROW_ENABLE_DEBUG_ALLOCATOR)); - assertTrue(settings.contains(ServerConfig.ARROW_SSL_ENABLE)); - } - - public void testDefaultSettings() { - Settings defaultSettings = Settings.EMPTY; - ServerConfig.init(defaultSettings); - - // Verify default values - assertEquals(9880, ServerConfig.STREAM_PORT.get(defaultSettings).intValue()); - assertEquals("Netty", ServerConfig.ARROW_ALLOCATION_MANAGER_TYPE.get(defaultSettings)); - assertFalse(ServerConfig.ARROW_ENABLE_NULL_CHECK_FOR_GET.get(defaultSettings)); - assertTrue(ServerConfig.ARROW_ENABLE_UNSAFE_MEMORY_ACCESS.get(defaultSettings)); - assertFalse(ServerConfig.ARROW_ENABLE_DEBUG_ALLOCATOR.get(defaultSettings)); - assertFalse(ServerConfig.ARROW_SSL_ENABLE.get(defaultSettings)); - } -} diff --git a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProviderTests.java b/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProviderTests.java deleted file mode 100644 index 650fdf4c364b9..0000000000000 --- a/modules/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/tls/SslContextProviderTests.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ -package org.opensearch.arrow.flight.bootstrap.tls; - -import org.opensearch.plugins.SecureTransportSettingsProvider; -import org.opensearch.test.OpenSearchTestCase; - -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.TrustManagerFactory; - -import java.io.IOException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; -import java.util.Arrays; - -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -public class SslContextProviderTests extends OpenSearchTestCase { - - private SecureTransportSettingsProvider mockSecureTransportSettingsProvider; - private SecureTransportSettingsProvider.SecureTransportParameters mockParameters; - private KeyManagerFactory keyManagerFactory; - private TrustManagerFactory trustManagerFactory; - - @Override - public void setUp() throws Exception { - super.setUp(); - - mockSecureTransportSettingsProvider = mock(SecureTransportSettingsProvider.class); - mockParameters = mock(SecureTransportSettingsProvider.SecureTransportParameters.class); - - Iterable protocols = Arrays.asList("TLSv1.2", "TLSv1.3"); - Iterable cipherSuites = Arrays.asList("TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256", "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"); - setupDummyFactories(); - when(mockParameters.sslProvider()).thenReturn("JDK"); - when(mockParameters.clientAuth()).thenReturn("REQUIRE"); - when(mockParameters.protocols()).thenReturn(protocols); - when(mockParameters.cipherSuites()).thenReturn(cipherSuites); - when(mockParameters.keyManagerFactory()).thenReturn(keyManagerFactory); - when(mockParameters.trustManagerFactory()).thenReturn(trustManagerFactory); - - when(mockSecureTransportSettingsProvider.parameters(null)).thenReturn(java.util.Optional.of(mockParameters)); - } - - private void setupDummyFactories() throws KeyStoreException, CertificateException, IOException, NoSuchAlgorithmException, - UnrecoverableKeyException { - KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); - keystore.load(null, new char[0]); - - keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - keyManagerFactory.init(keystore, new char[0]); - - trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - trustManagerFactory.init(keystore); - } - - public void testEnabledSslContextProvider() { - SslContextProvider provider = new DefaultSslContextProvider(mockSecureTransportSettingsProvider); - - assertTrue("SSL should be enabled", provider.isSslEnabled()); - assertNotNull(provider.getServerSslContext()); - assertNotNull(provider.getClientSslContext()); - } - - public void testDisabledSslContextProvider() { - SslContextProvider provider = new DisabledSslContextProvider(); - - assertFalse("SSL should be disabled", provider.isSslEnabled()); - assertNull("Server SSL context should be null", provider.getServerSslContext()); - assertNull("Client SSL context should be null", provider.getClientSslContext()); - } - - public void testDefaultSslContextProviderWithNullSupplier() { - expectThrows(NullPointerException.class, () -> { - SslContextProvider sslContextProvider = new DefaultSslContextProvider(null); - sslContextProvider.getServerSslContext(); - }); - } - - public void testDefaultSslContextProviderWithInvalidSslProvider() { - when(mockParameters.sslProvider()).thenReturn("INVALID"); - DefaultSslContextProvider provider = new DefaultSslContextProvider(mockSecureTransportSettingsProvider); - expectThrows(IllegalArgumentException.class, provider::getServerSslContext); - expectThrows(IllegalArgumentException.class, provider::getClientSslContext); - } -} diff --git a/plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightClientManagerTests.java b/plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightClientManagerTests.java index 4c4baac71fc99..c144a0837cc1f 100644 --- a/plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightClientManagerTests.java +++ b/plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightClientManagerTests.java @@ -106,20 +106,11 @@ public void setUp() throws Exception { clientManager = new FlightClientManager(allocator, clusterService, sslContextProvider, elg, threadPool, client); ClusterChangedEvent event = new ClusterChangedEvent("test", state, ClusterState.EMPTY_STATE); clientManager.clusterChanged(event); -<<<<<<< HEAD assertBusy(() -> { assertEquals("Flight client isn't built in time limit", 2, clientManager.getClients().size()); assertNotNull("local_node should exist", clientManager.getFlightClient("local_node")); assertNotNull("remote_node should exist", clientManager.getFlightClient("remote_node")); }, 2, TimeUnit.SECONDS); -======= - clientManager.updateFlightClients(); - assertBusy( - () -> { assertFalse("Flight client isn't built in time limit", clientManager.getClients().isEmpty()); }, - 2, - TimeUnit.SECONDS - ); ->>>>>>> 8cc555604ef (Fix the issue with single node ClientManager) } private void mockFlightInfoResponse(DiscoveryNodes nodes, int sleepDuration) { diff --git a/plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightServiceTests.java b/plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightServiceTests.java index 1800e39eca946..886a626c3a8a1 100644 --- a/plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightServiceTests.java +++ b/plugins/arrow-flight-rpc/src/test/java/org/opensearch/arrow/flight/bootstrap/FlightServiceTests.java @@ -103,7 +103,7 @@ public void testStartAndStop() throws Exception { testService.start(); testService.stop(); testService.start(); - assertNull(testService.getStreamManager()); + assertNotNull(testService.getStreamManager()); } } diff --git a/server/src/main/java/org/opensearch/action/search/SearchResponseMerger.java b/server/src/main/java/org/opensearch/action/search/SearchResponseMerger.java index 5712032121217..5e689edabe51d 100644 --- a/server/src/main/java/org/opensearch/action/search/SearchResponseMerger.java +++ b/server/src/main/java/org/opensearch/action/search/SearchResponseMerger.java @@ -233,6 +233,7 @@ SearchResponse getMergedResponse(SearchResponse.Clusters clusters, SearchRequest topDocsStats.terminatedEarly, numReducePhases, Collections.emptyList(), + Collections.emptyList(), (tickets.isEmpty() ? null : tickets) ); long tookInMillis = searchTimeProvider.buildTookInMillis(); diff --git a/server/src/main/java/org/opensearch/action/search/SearchResponseSections.java b/server/src/main/java/org/opensearch/action/search/SearchResponseSections.java index 08aeffa804c33..31e3d7d79cd89 100644 --- a/server/src/main/java/org/opensearch/action/search/SearchResponseSections.java +++ b/server/src/main/java/org/opensearch/action/search/SearchResponseSections.java @@ -90,17 +90,7 @@ public SearchResponseSections( SearchProfileShardResults profileResults, int numReducePhases ) { - this( - hits, - aggregations, - suggest, - timedOut, - terminatedEarly, - profileResults, - numReducePhases, - Collections.emptyList(), - Collections.emptyList() - ); + this(hits, aggregations, suggest, timedOut, terminatedEarly, profileResults, numReducePhases, Collections.emptyList()); } public SearchResponseSections( @@ -113,7 +103,7 @@ public SearchResponseSections( int numReducePhases, List searchExtBuilders, List processorResult, - List tickets + List tickets ) { this.hits = hits; this.aggregations = aggregations; @@ -124,7 +114,32 @@ public SearchResponseSections( this.numReducePhases = numReducePhases; this.processorResult.addAll(processorResult); this.searchExtBuilders.addAll(Objects.requireNonNull(searchExtBuilders, "searchExtBuilders must not be null")); - this.tickets = tickets; + this.tickets = tickets; + } + + public SearchResponseSections( + SearchHits hits, + Aggregations aggregations, + Suggest suggest, + boolean timedOut, + Boolean terminatedEarly, + SearchProfileShardResults profileResults, + int numReducePhases, + List searchExtBuilders, + List processorResult + ) { + this( + hits, + aggregations, + suggest, + timedOut, + terminatedEarly, + profileResults, + numReducePhases, + searchExtBuilders, + Collections.emptyList(), + null + ); } public SearchResponseSections( @@ -226,7 +241,7 @@ public final XContentBuilder toXContent(XContentBuilder builder, Params params) if (!processorResult.isEmpty()) { builder.field(PROCESSOR_RESULT_FIELD.getPreferredName(), processorResult); - } + } if (tickets != null && !tickets.isEmpty()) { builder.startArray(TICKET_FIELD); diff --git a/server/src/main/java/org/opensearch/action/search/StreamAsyncAction.java b/server/src/main/java/org/opensearch/action/search/StreamAsyncAction.java index 9f5792a34a7d4..b5cac957aa7bd 100644 --- a/server/src/main/java/org/opensearch/action/search/StreamAsyncAction.java +++ b/server/src/main/java/org/opensearch/action/search/StreamAsyncAction.java @@ -148,6 +148,7 @@ protected void doRun() throws Exception { false, 1, Collections.emptyList(), + Collections.emptyList(), tickets ); context.sendSearchResponse(internalSearchResponse, results.getAtomicArray()); diff --git a/server/src/main/java/org/opensearch/search/internal/InternalSearchResponse.java b/server/src/main/java/org/opensearch/search/internal/InternalSearchResponse.java index 602a625032dcc..859c0b32bc1dc 100644 --- a/server/src/main/java/org/opensearch/search/internal/InternalSearchResponse.java +++ b/server/src/main/java/org/opensearch/search/internal/InternalSearchResponse.java @@ -120,8 +120,9 @@ public InternalSearchResponse( boolean timedOut, Boolean terminatedEarly, int numReducePhases, - List searchExtBuilderList - + List searchExtBuilderList, + List processorResult, + List osTickets ) { super( hits, @@ -132,8 +133,8 @@ public InternalSearchResponse( profileResults, numReducePhases, searchExtBuilderList, - Collections.emptyList(), - null + processorResult, + osTickets ); } @@ -145,11 +146,20 @@ public InternalSearchResponse( boolean timedOut, Boolean terminatedEarly, int numReducePhases, - List searchExtBuilderList, - List tickets + List searchExtBuilderList ) { - super(hits, aggregations, suggest, timedOut, terminatedEarly, profileResults, numReducePhases, searchExtBuilderList, tickets); ->>>>>>> 81c1e6f05e7 (Flight Producer changes and integration) + super( + hits, + aggregations, + suggest, + timedOut, + terminatedEarly, + profileResults, + numReducePhases, + searchExtBuilderList, + Collections.emptyList(), + null + ); } public InternalSearchResponse(StreamInput in) throws IOException { diff --git a/server/src/test/java/org/opensearch/search/query/QueryPhaseTests.java b/server/src/test/java/org/opensearch/search/query/QueryPhaseTests.java index dd2d614f91067..9520bc491b715 100644 --- a/server/src/test/java/org/opensearch/search/query/QueryPhaseTests.java +++ b/server/src/test/java/org/opensearch/search/query/QueryPhaseTests.java @@ -568,7 +568,7 @@ public void testArrow() throws Exception { context.parsedQuery(new ParsedQuery(new MatchAllDocsQuery())); context.setTask(new SearchShardTask(123L, "", "", "", null, Collections.emptyMap())); QueryPhase.executeInternal(context, queryPhaseSearcher); - assertThat(context.queryResult().topDocs().topDocs.totalHits.value, equalTo((long) numDocs)); + assertThat(context.queryResult().topDocs().topDocs.totalHits.value(), equalTo((long) numDocs)); } public void testIndexSortingEarlyTermination() throws Exception { diff --git a/test/framework/src/main/java/org/opensearch/test/InternalTestCluster.java b/test/framework/src/main/java/org/opensearch/test/InternalTestCluster.java index cd63af1ded27f..7b2c653e9bdb2 100644 --- a/test/framework/src/main/java/org/opensearch/test/InternalTestCluster.java +++ b/test/framework/src/main/java/org/opensearch/test/InternalTestCluster.java @@ -165,7 +165,6 @@ import static org.opensearch.test.NodeRoles.onlyRoles; import static org.opensearch.test.NodeRoles.removeRoles; import static org.opensearch.test.OpenSearchTestCase.assertBusy; -import static org.opensearch.test.OpenSearchTestCase.getBaseStreamPort; import static org.opensearch.test.OpenSearchTestCase.randomBoolean; import static org.opensearch.test.OpenSearchTestCase.randomFrom; import static org.hamcrest.Matchers.equalTo; @@ -238,8 +237,6 @@ public final class InternalTestCluster extends TestCluster { static final int DEFAULT_MIN_NUM_CLIENT_NODES = 0; static final int DEFAULT_MAX_NUM_CLIENT_NODES = 1; - private static final AtomicInteger FLIGHT_PORT_COUNTER = new AtomicInteger(0); - /* Sorted map to make traverse order reproducible. * The map of nodes is never mutated so individual reads are safe without synchronization. * Updates are intended to follow a copy-on-write approach. */ @@ -758,6 +755,7 @@ private Settings getNodeSettings( final Settings.Builder updatedSettings = Settings.builder(); updatedSettings.put(Environment.PATH_HOME_SETTING.getKey(), baseDir); + if (numDataPaths > 1) { updatedSettings.putList( Environment.PATH_DATA_SETTING.getKey(), diff --git a/test/framework/src/main/java/org/opensearch/test/OpenSearchIntegTestCase.java b/test/framework/src/main/java/org/opensearch/test/OpenSearchIntegTestCase.java index a772af6ec81ae..e1eafb8570022 100644 --- a/test/framework/src/main/java/org/opensearch/test/OpenSearchIntegTestCase.java +++ b/test/framework/src/main/java/org/opensearch/test/OpenSearchIntegTestCase.java @@ -709,7 +709,7 @@ protected Settings featureFlagSettings() { // Enabling Telemetry setting by default featureSettings.put(FeatureFlags.TELEMETRY_SETTING.getKey(), true); featureSettings.put(FeatureFlags.APPLICATION_BASED_CONFIGURATION_TEMPLATES_SETTING.getKey(), true); - featureSettings.put(FeatureFlags.ARROW_STREAMS_SETTING.getKey(), true); + return featureSettings.build(); }