Skip to content

Migrate ConfigSetUploadTool to Solr HTTP V2 API (ConfigsetsApi.UploadConfigSet)#35

Draft
Copilot wants to merge 2 commits intomainfrom
copilot/migrate-configset-upload-tool
Draft

Migrate ConfigSetUploadTool to Solr HTTP V2 API (ConfigsetsApi.UploadConfigSet)#35
Copilot wants to merge 2 commits intomainfrom
copilot/migrate-configset-upload-tool

Conversation

Copy link

Copilot AI commented Mar 23, 2026

ConfigSetUploadTool (bin/solr zk upconfig) was uploading configsets by walking the directory tree and writing individual files directly to ZooKeeper via SolrZkClient + ZkMaintenanceUtils.uploadToZK(). This bypasses the Solr API layer entirely.

Changes

  • ConfigSetUploadTool: Replaces ZK-direct upload with HTTP V2 PUT /configsets/{name}. The tool now zips the configset directory in memory (respecting UPLOAD_FILENAME_EXCLUDE_PATTERN to skip hidden files) and uploads via GenericV2SolrRequest through CLIUtils.getSolrClient(). Both --solr-url and --zk-host remain valid connection options — when only --zk-host is provided, a live Solr node URL is automatically discovered from ZooKeeper.
// Before: direct ZK write
ZkMaintenanceUtils.uploadToZK(zkClient, confPath,
    ZkMaintenanceUtils.CONFIGS_ZKNODE + "/" + confName,
    ZkMaintenanceUtils.UPLOAD_FILENAME_EXCLUDE_PATTERN);

// After: HTTP V2 PUT → ConfigsetsApi.Upload.uploadConfigSet() on the server
var request = new GenericV2SolrRequest(SolrRequest.METHOD.PUT, "/configsets/" + confName);
request.withContent(createZipData(confPath), "application/octet-stream");
request.process(solrClient);
  • ZkSubcommandsTest: That test runs with a bare ZkTestServer (no Solr node), so the CLI-based upconfig step is replaced with a direct ZkConfigSetService.uploadConfig() call to pre-populate ZK state for the linkconfig/downconfig steps it actually exercises. The ConfigSetUploadTool CLI path is covered by SolrCLIZkToolsTest.testUpconfig.

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • develocity.apache.org
    • Triggering command: /usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java -XX:ReservedCodeCacheSize=256m -XX:TieredStopAtLevel=1 -XX:+UseParallelGC -XX:ActiveProcessorCount=1 --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED (dns block)
  • metadata.google.internal
    • Triggering command: /usr/lib/jvm/temurin-21-jdk-amd64/bin/java /usr/lib/jvm/temurin-21-jdk-amd64/bin/java -Dcommon-solr.dir=/home/REDACTED/work/solr/solr/solr -Dgradle.lib.dir=/home/REDACTED/.gradle/wrapper/dists/gradle-8.10-bin/deqhafrv1ntovfmgh0nh3npr9/gradle-8.10/lib -Dgradle.user.home=/home/REDACTED/.gradle -Dgradle.worker.jar=/home/REDACTED/.gradle/caches/8.10/workerMain/gradle-worker.jar -Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom -Djava.security.manager=default -Djava.security.policy=/home/REDACTED/work/solr/solr/gradle/testing/randomization/policies/solr-tests.policy -Djava.util.logging.config.file=/home/REDACTED/work/solr/solr/gradle/testing/defaults-tests/logging.properties -Djdk.map.althashing.threshold=0 -Djetty.insecurerandom=1 -Djetty.testMode=1 -Djunit4.childvm.count=1 -Djunit4.childvm.id=0 -Dorg.gradle.internal.worker.tmpdir=/home/REDACTED/work/solr/solr/solr/core/build/tmp/test/work -DtempDir=/home/REDACTED/work/solr/solr/build/tmp/tests-tmp -Dtests.LUCENE_VERSION=10.3.2 -Dtests.asserts=true -Dtests.codec=random (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI changed the title [WIP] Migrate ConfigSetUploadTool to Solr HTTP V2 helper Migrate ConfigSetUploadTool to Solr HTTP V2 API (ConfigsetsApi.UploadConfigSet) Mar 23, 2026
Copilot AI requested a review from epugh March 23, 2026 16:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants