Skip to content
Snippets Groups Projects
Commit 8a1b4346 authored by vlorentz's avatar vlorentz
Browse files

Revert "postgresql: drop fallback for extra_headers in Revision.metadata"

This reverts commit 8435607b
parent 4dd0246e
No related branches found
Tags v2.3.0
1 merge request!1125Revert "postgresql: drop fallback for extra_headers in Revision.metadata"
Pipeline #8673 passed
......@@ -252,10 +252,13 @@ def db_to_revision(db_revision: Dict[str, Any]) -> Revision:
parents.append(parent)
metadata = db_revision["metadata"]
if metadata and "extra_headers" in metadata:
del metadata["extra_headers"]
extra_headers = db_revision["extra_headers"] or ()
extra_headers = db_revision["extra_headers"]
if not extra_headers:
if metadata and "extra_headers" in metadata:
extra_headers = db_to_git_headers(metadata.pop("extra_headers"))
else:
# For older versions of the database that were not migrated to schema v161
extra_headers = ()
return Revision(
id=db_revision["id"],
......
# Copyright (C) 2020 The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
import attr
from swh.core.utils import decode_with_escape
from swh.storage import get_storage
from swh.storage.tests.test_postgresql import db_transaction
def headers_to_db(git_headers):
return [[key, decode_with_escape(value)] for key, value in git_headers]
def test_revision_extra_header_in_metadata(swh_storage_backend_config, sample_data):
storage = get_storage(**swh_storage_backend_config)
rev = sample_data.revision
md_w_extra = dict(
rev.metadata.items(),
extra_headers=headers_to_db(
[
["gpgsig", b"test123"],
["mergetag", b"foo\\bar"],
["mergetag", b"\x22\xaf\x89\x80\x01\x00"],
]
),
)
bw_rev = attr.evolve(rev, extra_headers=())
object.__setattr__(bw_rev, "metadata", md_w_extra)
assert bw_rev.extra_headers == ()
assert storage.revision_add([bw_rev]) == {"revision:add": 1}
# check data in the db are old format
with db_transaction(storage) as (_, cur):
cur.execute("SELECT metadata, extra_headers FROM revision")
metadata, extra_headers = cur.fetchone()
assert extra_headers == []
assert metadata == bw_rev.metadata
# check the Revision build from revision_get is the original, "new style", Revision
assert storage.revision_get([rev.id]) == [rev]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment