Skip to content

Commit

Permalink
fix: Avoid key-error when inserting asset chunks (#550)
Browse files Browse the repository at this point in the history
* if no key exists in map then skip

* actual fix

* add repr on asset for easier debugging, update jsons to v3 parser

* fix tests, use .get()

* revert thing that makes test fail

* add to other parser versions and test
  • Loading branch information
ajay-sentry authored Mar 3, 2025
1 parent 1d40dfa commit a9e7453
Showing 11 changed files with 398 additions and 70 deletions.
4 changes: 4 additions & 0 deletions shared/bundle_analysis/models.py
Original file line number Diff line number Diff line change
@@ -238,6 +238,10 @@ class Asset(Base):
"Chunk", secondary=assets_chunks, back_populates="assets", cascade="all, delete"
)

def __repr__(self):
"""Returns a string representation of the Asset with key information"""
return f"Asset(name='{self.name}', type={self.asset_type}, size={self.size})"


class Chunk(Base):
"""
3 changes: 2 additions & 1 deletion shared/bundle_analysis/parsers/v1.py
Original file line number Diff line number Diff line change
@@ -342,8 +342,9 @@ def _create_associations(self):
asset_names = self.chunk_asset_names_index[chunk.unique_external_id]
inserts.extend(
[
dict(asset_id=asset_name_to_id[asset_name], chunk_id=chunk_id)
dict(asset_id=asset_name_to_id.get(asset_name), chunk_id=chunk_id)
for asset_name in asset_names
if asset_name_to_id.get(asset_name) is not None
]
)
if inserts:
3 changes: 2 additions & 1 deletion shared/bundle_analysis/parsers/v2.py
Original file line number Diff line number Diff line change
@@ -345,8 +345,9 @@ def _create_associations(self):
asset_names = self.chunk_asset_names_index[chunk.unique_external_id]
inserts.extend(
[
dict(asset_id=asset_name_to_id[asset_name], chunk_id=chunk_id)
dict(asset_id=asset_name_to_id.get(asset_name), chunk_id=chunk_id)
for asset_name in asset_names
if asset_name_to_id.get(asset_name) is not None
]
)
if inserts:
6 changes: 4 additions & 2 deletions shared/bundle_analysis/parsers/v3.py
Original file line number Diff line number Diff line change
@@ -188,7 +188,7 @@ def parse(self, path: str) -> Tuple[int, str]:
assert self.session.bundle is not None
return self.session.id, self.session.bundle.name
except Exception as e:
# Inject the plugin name to the Exception object so we have visibilitity on which plugin
# Inject the plugin name to the Exception object so we have visibility on which plugin
# is causing the trouble.
e.bundle_analysis_plugin_name = self.info.get("plugin_name", "unknown")
raise e
@@ -408,10 +408,12 @@ def _create_associations(self):
for chunk in chunks:
chunk_id = chunk.id
asset_names = self.chunk_asset_names_index[chunk.unique_external_id]

inserts.extend(
[
dict(asset_id=asset_name_to_id[asset_name], chunk_id=chunk_id)
dict(asset_id=asset_name_to_id.get(asset_name), chunk_id=chunk_id)
for asset_name in asset_names
if asset_name_to_id.get(asset_name) is not None
]
)
if inserts:
86 changes: 71 additions & 15 deletions tests/samples/asset_link_curr_a.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,57 @@
{
"version": "1",
"version": "3",
"builtAt": 1716480551148,
"duration": 294,
"bundleName": "BundleA",
"outputPath": "/vite/dist",
"bundler": { "name": "rollup", "version": "4.16.2" },
"plugin": { "name": "@codecov/vite-plugin", "version": "0.0.1-beta.8" },
"assets": [
{ "name": "asset-same-name-diff-modules.js", "size": 4126, "normalized": "asset-*.js" },
{ "name": "asset-diff-name-same-modules-TWO.js", "size": 1421, "normalized": "asset-*.js" },
{ "name": "asset-diff-name-diff-modules-TWO.js", "size": 161, "normalized": "asset-*.js" },
{ "name": "asset-css-A-TWO.css", "size": 4, "normalized": "assets/index-*.css"},
{ "name": "asset-css-B-TWO.css", "size": 5, "normalized": "assets/index-*.css"},
{ "name": "asset-font-A-TWO.woff", "size": 40, "normalized": "assets/index-*.woff"},
{ "name": "asset-font-B-TWO.ttf", "size": 50, "normalized": "assets/index-*.ttf"},
{ "name": "asset-image-A-TWO.jpg", "size": 400, "normalized": "assets/index-*.jpg"},
{ "name": "asset-image-B-TWO.svg", "size": 500, "normalized": "assets/index-*.svg"}
{
"name": "asset-same-name-diff-modules.js",
"size": 4126,
"normalized": "asset-*.js"
},
{
"name": "asset-diff-name-same-modules-TWO.js",
"size": 1421,
"normalized": "asset-*.js"
},
{
"name": "asset-diff-name-diff-modules-TWO.js",
"size": 161,
"normalized": "asset-*.js"
},
{
"name": "asset-css-A-TWO.css",
"size": 4,
"normalized": "assets/index-*.css"
},
{
"name": "asset-css-B-TWO.css",
"size": 5,
"normalized": "assets/index-*.css"
},
{
"name": "asset-font-A-TWO.woff",
"size": 40,
"normalized": "assets/index-*.woff"
},
{
"name": "asset-font-B-TWO.ttf",
"size": 50,
"normalized": "assets/index-*.ttf"
},
{
"name": "asset-image-A-TWO.jpg",
"size": 400,
"normalized": "assets/index-*.jpg"
},
{
"name": "asset-image-B-TWO.svg",
"size": 500,
"normalized": "assets/index-*.svg"
}
],
"chunks": [
{
@@ -44,14 +80,34 @@
}
],
"modules": [
{ "name": "./src/file-aTwo.js", "size": 189, "chunkUniqueIds": ["0-asset"] },
{ "name": "./src/file-bTwo.js", "size": 353, "chunkUniqueIds": ["0-asset"] },
{ "name": "./src/file-cTwo.js", "size": 497, "chunkUniqueIds": ["0-asset"] },
{
"name": "./src/file-aTwo.js",
"size": 189,
"chunkUniqueIds": ["0-asset"]
},
{
"name": "./src/file-bTwo.js",
"size": 353,
"chunkUniqueIds": ["0-asset"]
},
{
"name": "./src/file-cTwo.js",
"size": 497,
"chunkUniqueIds": ["0-asset"]
},
{ "name": "./src/file-d.js", "size": 154, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-e.js", "size": 140, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-f.js", "size": 315, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-sTWO.js", "size": 406, "chunkUniqueIds": ["2-asset"] },
{ "name": "./src/file-tTWO.js", "size": 262, "chunkUniqueIds": ["2-asset"] },
{
"name": "./src/file-sTWO.js",
"size": 406,
"chunkUniqueIds": ["2-asset"]
},
{
"name": "./src/file-tTWO.js",
"size": 262,
"chunkUniqueIds": ["2-asset"]
},
{ "name": "./src/file-uTWO.js", "size": 308, "chunkUniqueIds": ["2-asset"] }
]
}
86 changes: 71 additions & 15 deletions tests/samples/asset_link_curr_b.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,57 @@
{
"version": "1",
"version": "3",
"builtAt": 1716480551148,
"duration": 294,
"bundleName": "BundleB",
"outputPath": "/vite/dist",
"bundler": { "name": "rollup", "version": "4.16.2" },
"plugin": { "name": "@codecov/vite-plugin", "version": "0.0.1-beta.8" },
"assets": [
{ "name": "asset-same-name-diff-modules.js", "size": 4126, "normalized": "asset-*.js" },
{ "name": "asset-diff-name-same-modules-TWO.js", "size": 1421, "normalized": "asset-*.js" },
{ "name": "asset-diff-name-diff-modules-TWO.js", "size": 161, "normalized": "asset-*.js" },
{ "name": "asset-css-A-TWO.css", "size": 4, "normalized": "assets/index-*.css"},
{ "name": "asset-css-B-TWO.css", "size": 5, "normalized": "assets/index-*.css"},
{ "name": "asset-font-A-TWO.woff", "size": 40, "normalized": "assets/index-*.woff"},
{ "name": "asset-font-B-TWO.ttf", "size": 50, "normalized": "assets/index-*.ttf"},
{ "name": "asset-image-A-TWO.jpg", "size": 400, "normalized": "assets/index-*.jpg"},
{ "name": "asset-image-B-TWO.svg", "size": 500, "normalized": "assets/index-*.svg"}
{
"name": "asset-same-name-diff-modules.js",
"size": 4126,
"normalized": "asset-*.js"
},
{
"name": "asset-diff-name-same-modules-TWO.js",
"size": 1421,
"normalized": "asset-*.js"
},
{
"name": "asset-diff-name-diff-modules-TWO.js",
"size": 161,
"normalized": "asset-*.js"
},
{
"name": "asset-css-A-TWO.css",
"size": 4,
"normalized": "assets/index-*.css"
},
{
"name": "asset-css-B-TWO.css",
"size": 5,
"normalized": "assets/index-*.css"
},
{
"name": "asset-font-A-TWO.woff",
"size": 40,
"normalized": "assets/index-*.woff"
},
{
"name": "asset-font-B-TWO.ttf",
"size": 50,
"normalized": "assets/index-*.ttf"
},
{
"name": "asset-image-A-TWO.jpg",
"size": 400,
"normalized": "assets/index-*.jpg"
},
{
"name": "asset-image-B-TWO.svg",
"size": 500,
"normalized": "assets/index-*.svg"
}
],
"chunks": [
{
@@ -44,14 +80,34 @@
}
],
"modules": [
{ "name": "./src/file-aTwo.js", "size": 189, "chunkUniqueIds": ["0-asset"] },
{ "name": "./src/file-bTwo.js", "size": 353, "chunkUniqueIds": ["0-asset"] },
{ "name": "./src/file-cTwo.js", "size": 497, "chunkUniqueIds": ["0-asset"] },
{
"name": "./src/file-aTwo.js",
"size": 189,
"chunkUniqueIds": ["0-asset"]
},
{
"name": "./src/file-bTwo.js",
"size": 353,
"chunkUniqueIds": ["0-asset"]
},
{
"name": "./src/file-cTwo.js",
"size": 497,
"chunkUniqueIds": ["0-asset"]
},
{ "name": "./src/file-d.js", "size": 154, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-e.js", "size": 140, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-f.js", "size": 315, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-sTWO.js", "size": 406, "chunkUniqueIds": ["2-asset"] },
{ "name": "./src/file-tTWO.js", "size": 262, "chunkUniqueIds": ["2-asset"] },
{
"name": "./src/file-sTWO.js",
"size": 406,
"chunkUniqueIds": ["2-asset"]
},
{
"name": "./src/file-tTWO.js",
"size": 262,
"chunkUniqueIds": ["2-asset"]
},
{ "name": "./src/file-uTWO.js", "size": 308, "chunkUniqueIds": ["2-asset"] }
]
}
86 changes: 71 additions & 15 deletions tests/samples/asset_link_prev_a.json
Original file line number Diff line number Diff line change
@@ -1,21 +1,57 @@
{
"version": "1",
"version": "3",
"builtAt": 1716480551136,
"duration": 294,
"bundleName": "BundleA",
"outputPath": "/vite/dist",
"bundler": { "name": "rollup", "version": "4.16.2" },
"plugin": { "name": "@codecov/vite-plugin", "version": "0.0.1-beta.8" },
"assets": [
{ "name": "asset-same-name-diff-modules.js", "size": 4126, "normalized": "asset-*.js" },
{ "name": "asset-diff-name-same-modules-ONE.js", "size": 1421, "normalized": "asset-*.js" },
{ "name": "asset-diff-name-diff-modules-ONE.js", "size": 161, "normalized": "asset-*.js" },
{ "name": "asset-css-A-ONE.css", "size": 2, "normalized": "assets/index-*.css"},
{ "name": "asset-css-B-ONE.css", "size": 3, "normalized": "assets/index-*.css"},
{ "name": "asset-font-A-ONE.woff", "size": 20, "normalized": "assets/index-*.woff"},
{ "name": "asset-font-B-ONE.ttf", "size": 30, "normalized": "assets/index-*.ttf"},
{ "name": "asset-image-A-ONE.jpg", "size": 200, "normalized": "assets/index-*.jpg"},
{ "name": "asset-image-B-ONE.svg", "size": 300, "normalized": "assets/index-*.svg"}
{
"name": "asset-same-name-diff-modules.js",
"size": 4126,
"normalized": "asset-*.js"
},
{
"name": "asset-diff-name-same-modules-ONE.js",
"size": 1421,
"normalized": "asset-*.js"
},
{
"name": "asset-diff-name-diff-modules-ONE.js",
"size": 161,
"normalized": "asset-*.js"
},
{
"name": "asset-css-A-ONE.css",
"size": 2,
"normalized": "assets/index-*.css"
},
{
"name": "asset-css-B-ONE.css",
"size": 3,
"normalized": "assets/index-*.css"
},
{
"name": "asset-font-A-ONE.woff",
"size": 20,
"normalized": "assets/index-*.woff"
},
{
"name": "asset-font-B-ONE.ttf",
"size": 30,
"normalized": "assets/index-*.ttf"
},
{
"name": "asset-image-A-ONE.jpg",
"size": 200,
"normalized": "assets/index-*.jpg"
},
{
"name": "asset-image-B-ONE.svg",
"size": 300,
"normalized": "assets/index-*.svg"
}
],
"chunks": [
{
@@ -44,14 +80,34 @@
}
],
"modules": [
{ "name": "./src/file-aOne.js", "size": 189, "chunkUniqueIds": ["0-asset"] },
{ "name": "./src/file-bOne.js", "size": 353, "chunkUniqueIds": ["0-asset"] },
{ "name": "./src/file-cOne.js", "size": 497, "chunkUniqueIds": ["0-asset"] },
{
"name": "./src/file-aOne.js",
"size": 189,
"chunkUniqueIds": ["0-asset"]
},
{
"name": "./src/file-bOne.js",
"size": 353,
"chunkUniqueIds": ["0-asset"]
},
{
"name": "./src/file-cOne.js",
"size": 497,
"chunkUniqueIds": ["0-asset"]
},
{ "name": "./src/file-d.js", "size": 154, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-e.js", "size": 140, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-f.js", "size": 315, "chunkUniqueIds": ["1-asset"] },
{ "name": "./src/file-gONE.js", "size": 406, "chunkUniqueIds": ["2-asset"] },
{ "name": "./src/file-hONE.js", "size": 262, "chunkUniqueIds": ["2-asset"] },
{
"name": "./src/file-gONE.js",
"size": 406,
"chunkUniqueIds": ["2-asset"]
},
{
"name": "./src/file-hONE.js",
"size": 262,
"chunkUniqueIds": ["2-asset"]
},
{ "name": "./src/file-iONE.js", "size": 308, "chunkUniqueIds": ["2-asset"] }
]
}
Loading
Oops, something went wrong.

0 comments on commit a9e7453

Please sign in to comment.