Skip to content

Escape the azblob CopyObject source URL, fix #1637 - #1638

Merged
Slach merged 4 commits into
Altinity:masterfrom
shubhamkapoor01:fix/azblob-copy-source-escape
Oct 28, 2026
Merged

Slach merged 4 commits into
Altinity:masterfrom
shubhamkapoor01:fix/azblob-copy-source-escape

Conversation

@shubhamkapoor01

@shubhamkapoor01 shubhamkapoor01 commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

fix https://github.com/Altinity/clickhouse-backup/issue/1637

Azure decodes the copy source path, so encoded names like test%2Ddb pointed at a blob that doesn't exist and rebase failed with BlobNotFound. This escapes the source URL like s3CopySource does for S3, as @kolsys suggested.

Checked against Azurite: copying a part of test-db or of a .inner_id. table fails on master and works with this change.

@Slach Slach added this to the 2.8.3 milestone Oct 25, 2026
The rebase scenario used plain `test_rebase_<storage>` / `t1` names, which
common.TablePathEncode keeps as is, so no remote key passed to CopyObject
ever contained a literal `%` and the azblob copy source escaping bug (Altinity#1637)
went unnoticed. Names now contain `-`, `.`, `#`, `$`, Cyrillic and a leading
dot like `.inner_id.<uuid>`; without the fix TestRebaseAzblob fails with
BlobNotFound, every TestRebase* backend passes with it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Slach

Slach commented Oct 28, 2026

Copy link
Copy Markdown
Collaborator

@shubhamkapoor01 thanks for your contribution

@Slach
Slach merged commit 12f2b09 into Altinity:master Oct 28, 2026
59 of 60 checks passed
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