Merge epic/file-schema-v6 into main#787
Merged
Merged
Conversation
… migration (GoogleCloudPlatform#618) * feat(proto): add proto definitions and build setup for file schema v7 migration - Add Protobuf definitions for KHI file schema v7 (split into shared.proto, style.proto, timeline.proto, etc.) to migrate from the previous JSON-based file format. - Set up Buf configuration (buf.yaml, buf.gen.yaml) to generate Go and TypeScript code. - Add `proto-gen` target to `scripts/make/codegen.mk` using `npx @bufbuild/buf` to support the new build process. - Generate Go code in `pkg/generated/khifile/` and TypeScript code in `web/src/app/generated/`. * fixed typos on proto fields * Specified proto rule and build target * Rebuild the generated files from the updated proto * Added linguist-generated for ignoreing generated files by proto * fix reviewed points and lint error * fix version number * Skip proto breaking change check until it's merged * Fixed shared type names * fix typos on comments
…m#621) * feat: update InternedValue proto to have int64 value * Adding KHI file schema v6 namespaced ID generator
* feat: update InternedValue proto to have int64 value * Adding KHI file schema v6 namespaced ID generator * Adding generated files I forgot to push
* feat: update InternedValue proto to have int64 value * Adding KHI file schema v6 namespaced ID generator * Adding generated files I forgot to push * Fix the lint thing on the generated codes
…orm#622) * feat: update InternedValue proto to have int64 value * Adding KHI file schema v6 namespaced ID generator * Adding generated files I forgot to push * Fix the lint thing on the generated codes * Adding interning utility used in khi file format v6
…m#630) * feat(web): add v6 parser binary reader and streamer * address review comments
* Removing unused CORS code (GoogleCloudPlatform#619) * Removing unused CORS code * Update pkg/core/init/default/defaultextension.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Replaced unsafe innerHTML with textContent (GoogleCloudPlatform#620) * feat(startup): implement smart component and integrate data loading (GoogleCloudPlatform#599) * feat(startup): add inspection list components * feat(startup): implement smart component and integrate data loading GoogleCloudPlatform#558 * Fix name of the function pointed out by the review * chore: fix make setup error in jj and update dev guide (GoogleCloudPlatform#629) * chore: fix make setup error in jj and update dev guide * fix commented issues on review * fixed minor issues on Makefile (GoogleCloudPlatform#644) * Merge epic/csm-parser into main (GoogleCloudPlatform#645) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name (GoogleCloudPlatform#635) * Add fleet PJ form task and query task to gather CSM TD audit logs (GoogleCloudPlatform#636) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for TD resource logs (GoogleCloudPlatform#637) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for traffic director resource logs * 🐛 fix set-input suggestion being wrapped for every lines (GoogleCloudPlatform#638) * fix set-input suggestion being wrapped for every lines * Update web/src/app/timeline-toolbar/components/set-input-popup.component.scss Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Removing unused CORS code (GoogleCloudPlatform#619) * Removing unused CORS code * Update pkg/core/init/default/defaultextension.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Replaced unsafe innerHTML with textContent (GoogleCloudPlatform#620) * feat(startup): implement smart component and integrate data loading (GoogleCloudPlatform#599) * feat(startup): add inspection list components * feat(startup): implement smart component and integrate data loading GoogleCloudPlatform#558 * Fix name of the function pointed out by the review * chore: fix make setup error in jj and update dev guide (GoogleCloudPlatform#629) * chore: fix make setup error in jj and update dev guide * fix commented issues on review * fixed minor issues on Makefile (GoogleCloudPlatform#644) * Merge epic/csm-parser into main (GoogleCloudPlatform#645) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name (GoogleCloudPlatform#635) * Add fleet PJ form task and query task to gather CSM TD audit logs (GoogleCloudPlatform#636) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for TD resource logs (GoogleCloudPlatform#637) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for traffic director resource logs * 🐛 fix set-input suggestion being wrapped for every lines (GoogleCloudPlatform#638) * fix set-input suggestion being wrapped for every lines * Update web/src/app/timeline-toolbar/components/set-input-popup.component.scss Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Fix bugs to register the CSM TD parser tasks (GoogleCloudPlatform#647) * Fix the same issue of GoogleCloudPlatform#638 (GoogleCloudPlatform#659) * Adding make clean command (GoogleCloudPlatform#651) * Addming make clean command * fixed commented points * Removing unused old headers on frontend (GoogleCloudPlatform#660) * removed prefix 'v2' in shader files (GoogleCloudPlatform#661) * rename commonlogk8sauditv2 to commonlogk8saudit (GoogleCloudPlatform#662) --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* Removing unused CORS code (GoogleCloudPlatform#619) * Removing unused CORS code * Update pkg/core/init/default/defaultextension.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Replaced unsafe innerHTML with textContent (GoogleCloudPlatform#620) * feat(startup): implement smart component and integrate data loading (GoogleCloudPlatform#599) * feat(startup): add inspection list components * feat(startup): implement smart component and integrate data loading GoogleCloudPlatform#558 * Fix name of the function pointed out by the review * chore: fix make setup error in jj and update dev guide (GoogleCloudPlatform#629) * chore: fix make setup error in jj and update dev guide * fix commented issues on review * fixed minor issues on Makefile (GoogleCloudPlatform#644) * Merge epic/csm-parser into main (GoogleCloudPlatform#645) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name (GoogleCloudPlatform#635) * Add fleet PJ form task and query task to gather CSM TD audit logs (GoogleCloudPlatform#636) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for TD resource logs (GoogleCloudPlatform#637) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for traffic director resource logs * 🐛 fix set-input suggestion being wrapped for every lines (GoogleCloudPlatform#638) * fix set-input suggestion being wrapped for every lines * Update web/src/app/timeline-toolbar/components/set-input-popup.component.scss Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Fix bugs to register the CSM TD parser tasks (GoogleCloudPlatform#647) * Fix the same issue of GoogleCloudPlatform#638 (GoogleCloudPlatform#659) * Adding make clean command (GoogleCloudPlatform#651) * Addming make clean command * fixed commented points * Removing unused old headers on frontend (GoogleCloudPlatform#660) * removed prefix 'v2' in shader files (GoogleCloudPlatform#661) * rename commonlogk8sauditv2 to commonlogk8saudit (GoogleCloudPlatform#662) * fixed the flaky backend test due to race condition (GoogleCloudPlatform#665) * improved sticky header to show resource layer (GoogleCloudPlatform#663) --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This type is duplication of the pb.InternedStruct. It's internal type of the domain store but its a shared proto type which is expected not to change by file version update.
* Removing unused CORS code (GoogleCloudPlatform#619) * Removing unused CORS code * Update pkg/core/init/default/defaultextension.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Replaced unsafe innerHTML with textContent (GoogleCloudPlatform#620) * feat(startup): implement smart component and integrate data loading (GoogleCloudPlatform#599) * feat(startup): add inspection list components * feat(startup): implement smart component and integrate data loading GoogleCloudPlatform#558 * Fix name of the function pointed out by the review * chore: fix make setup error in jj and update dev guide (GoogleCloudPlatform#629) * chore: fix make setup error in jj and update dev guide * fix commented issues on review * fixed minor issues on Makefile (GoogleCloudPlatform#644) * Merge epic/csm-parser into main (GoogleCloudPlatform#645) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name (GoogleCloudPlatform#635) * Add fleet PJ form task and query task to gather CSM TD audit logs (GoogleCloudPlatform#636) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for TD resource logs (GoogleCloudPlatform#637) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for traffic director resource logs * 🐛 fix set-input suggestion being wrapped for every lines (GoogleCloudPlatform#638) * fix set-input suggestion being wrapped for every lines * Update web/src/app/timeline-toolbar/components/set-input-popup.component.scss Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Fix bugs to register the CSM TD parser tasks (GoogleCloudPlatform#647) * Fix the same issue of GoogleCloudPlatform#638 (GoogleCloudPlatform#659) * Adding make clean command (GoogleCloudPlatform#651) * Addming make clean command * fixed commented points * Removing unused old headers on frontend (GoogleCloudPlatform#660) * removed prefix 'v2' in shader files (GoogleCloudPlatform#661) * rename commonlogk8sauditv2 to commonlogk8saudit (GoogleCloudPlatform#662) * fixed the flaky backend test due to race condition (GoogleCloudPlatform#665) * improved sticky header to show resource layer (GoogleCloudPlatform#663) * Removed redundant v from the version string (GoogleCloudPlatform#671) * bugfix: automatic log scroll is not matching to the actual element (GoogleCloudPlatform#675) * bugfix: ignore changing selected timeline when user clicked a log from log list (GoogleCloudPlatform#674) * bugfix: automatic scroll to the beginning time of log query when user selected a timeline without point to a log (GoogleCloudPlatform#676) * bugfix: scaling around right edge of query duration may be clipped to jump to other timing (GoogleCloudPlatform#677) --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
… are associated with the same log (GoogleCloudPlatform#772) * bug: fix unintentionally jump to another timeline when 2 or more logs are associated with the same log * Addressed review comments for PR 772
* Removing unused CORS code (GoogleCloudPlatform#619) * Removing unused CORS code * Update pkg/core/init/default/defaultextension.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Replaced unsafe innerHTML with textContent (GoogleCloudPlatform#620) * feat(startup): implement smart component and integrate data loading (GoogleCloudPlatform#599) * feat(startup): add inspection list components * feat(startup): implement smart component and integrate data loading GoogleCloudPlatform#558 * Fix name of the function pointed out by the review * chore: fix make setup error in jj and update dev guide (GoogleCloudPlatform#629) * chore: fix make setup error in jj and update dev guide * fix commented issues on review * fixed minor issues on Makefile (GoogleCloudPlatform#644) * Merge epic/csm-parser into main (GoogleCloudPlatform#645) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name (GoogleCloudPlatform#635) * Add fleet PJ form task and query task to gather CSM TD audit logs (GoogleCloudPlatform#636) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for TD resource logs (GoogleCloudPlatform#637) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for traffic director resource logs * 🐛 fix set-input suggestion being wrapped for every lines (GoogleCloudPlatform#638) * fix set-input suggestion being wrapped for every lines * Update web/src/app/timeline-toolbar/components/set-input-popup.component.scss Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Fix bugs to register the CSM TD parser tasks (GoogleCloudPlatform#647) * Fix the same issue of GoogleCloudPlatform#638 (GoogleCloudPlatform#659) * Adding make clean command (GoogleCloudPlatform#651) * Addming make clean command * fixed commented points * Removing unused old headers on frontend (GoogleCloudPlatform#660) * removed prefix 'v2' in shader files (GoogleCloudPlatform#661) * rename commonlogk8sauditv2 to commonlogk8saudit (GoogleCloudPlatform#662) * fixed the flaky backend test due to race condition (GoogleCloudPlatform#665) * improved sticky header to show resource layer (GoogleCloudPlatform#663) * Removed redundant v from the version string (GoogleCloudPlatform#671) * bugfix: automatic log scroll is not matching to the actual element (GoogleCloudPlatform#675) * bugfix: ignore changing selected timeline when user clicked a log from log list (GoogleCloudPlatform#674) * bugfix: automatic scroll to the beginning time of log query when user selected a timeline without point to a log (GoogleCloudPlatform#676) * bugfix: scaling around right edge of query duration may be clipped to jump to other timing (GoogleCloudPlatform#677) * Updated CODEOWNER file (GoogleCloudPlatform#678) * Updated the release.yml for GitHub (GoogleCloudPlatform#679) * fix: confirm refresh when backend disconnects (GoogleCloudPlatform#692) * fix: confirm refresh when backend disconnects Signed-off-by: Haihan Jiang <[email protected]> * chore: use absolute imports in root tests Signed-off-by: Haihan Jiang <[email protected]> * Align unload confirmation with disconnect review --------- Signed-off-by: Haihan Jiang <[email protected]> * Handle slog attributes in KHI log formatter (GoogleCloudPlatform#708) * Handle slog attributes in KHI log formatter * Optimize KHI log attribute formatting * Handle KHI log formatter review feedback * Change default listen host to 127.0.0.1 from localhost (GoogleCloudPlatform#759) * Improve retry logic to consider temporal failure due to ECP issue (GoogleCloudPlatform#760) * Improve retry logic to consider temporal failure due to ECP issue * fixed GCA's reviewed points --------- Signed-off-by: kyasbal <[email protected]> Signed-off-by: Haihan Jiang <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Haihan Jiang <[email protected]>
…#777) * Optimize log lookup and resolve sticky header overlay placement - Resolve target timeline fallback order (selectedTimeline -> descendants -> all timelines) - Compensate hover placement offset when hovering directly over the sticky header - Optimize preceding and succeeding log extraction using bisectLeft - Standardize timestamps to bigint (nanoseconds) across hover resolution * Visualize current cursor time with a dedicated separator line - Propagate cursor time as bigint (nanoseconds) to the hover overlay - Update lastClickedTime dynamically on mouse movement across empty timeline periods - Conditionally insert a dedicated cursor separator row (isCursor: true) only when hovering over empty timeline periods - Render cursor row with flex container and CSS dashed lines flanking centered text - Enforce dashed lines expansion with flex: 1 1 20px and height: 1px - Update Storybook stories to include mock cursorTime property * addressed comments on PR777
GoogleCloudPlatform#776) * feat: show RevisionState description popup on hover in timeline legend * addressed comments on PR776
* feat: embed graph view as a GoldenLayout tab * Remove diagram button from the toolbar * addressed PR comments on GoogleCloudPlatform#780
* make storybook not freezed by serialization * addressed PR781 review comments
* Make graph draw feature async * addressed PR782 review comments
* Removing unused CORS code (GoogleCloudPlatform#619) * Removing unused CORS code * Update pkg/core/init/default/defaultextension.go Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Replaced unsafe innerHTML with textContent (GoogleCloudPlatform#620) * feat(startup): implement smart component and integrate data loading (GoogleCloudPlatform#599) * feat(startup): add inspection list components * feat(startup): implement smart component and integrate data loading GoogleCloudPlatform#558 * Fix name of the function pointed out by the review * chore: fix make setup error in jj and update dev guide (GoogleCloudPlatform#629) * chore: fix make setup error in jj and update dev guide * fix commented issues on review * fixed minor issues on Makefile (GoogleCloudPlatform#644) * Merge epic/csm-parser into main (GoogleCloudPlatform#645) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name (GoogleCloudPlatform#635) * Add fleet PJ form task and query task to gather CSM TD audit logs (GoogleCloudPlatform#636) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for TD resource logs (GoogleCloudPlatform#637) * Add Inventory/Discovery tasks for parsing the map from NEG name to BS name * Adding form task to receive the fleet project and query task to gather logs from Cloud Logging * Add timeline mapper for traffic director resource logs * 🐛 fix set-input suggestion being wrapped for every lines (GoogleCloudPlatform#638) * fix set-input suggestion being wrapped for every lines * Update web/src/app/timeline-toolbar/components/set-input-popup.component.scss Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: kyasbal <[email protected]> --------- Signed-off-by: kyasbal <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> * Fix bugs to register the CSM TD parser tasks (GoogleCloudPlatform#647) * Fix the same issue of GoogleCloudPlatform#638 (GoogleCloudPlatform#659) * Adding make clean command (GoogleCloudPlatform#651) * Addming make clean command * fixed commented points * Removing unused old headers on frontend (GoogleCloudPlatform#660) * removed prefix 'v2' in shader files (GoogleCloudPlatform#661) * rename commonlogk8sauditv2 to commonlogk8saudit (GoogleCloudPlatform#662) * fixed the flaky backend test due to race condition (GoogleCloudPlatform#665) * improved sticky header to show resource layer (GoogleCloudPlatform#663) * Removed redundant v from the version string (GoogleCloudPlatform#671) * bugfix: automatic log scroll is not matching to the actual element (GoogleCloudPlatform#675) * bugfix: ignore changing selected timeline when user clicked a log from log list (GoogleCloudPlatform#674) * bugfix: automatic scroll to the beginning time of log query when user selected a timeline without point to a log (GoogleCloudPlatform#676) * bugfix: scaling around right edge of query duration may be clipped to jump to other timing (GoogleCloudPlatform#677) * Updated CODEOWNER file (GoogleCloudPlatform#678) * Updated the release.yml for GitHub (GoogleCloudPlatform#679) * fix: confirm refresh when backend disconnects (GoogleCloudPlatform#692) * fix: confirm refresh when backend disconnects Signed-off-by: Haihan Jiang <[email protected]> * chore: use absolute imports in root tests Signed-off-by: Haihan Jiang <[email protected]> * Align unload confirmation with disconnect review --------- Signed-off-by: Haihan Jiang <[email protected]> * Handle slog attributes in KHI log formatter (GoogleCloudPlatform#708) * Handle slog attributes in KHI log formatter * Optimize KHI log attribute formatting * Handle KHI log formatter review feedback * Change default listen host to 127.0.0.1 from localhost (GoogleCloudPlatform#759) * Improve retry logic to consider temporal failure due to ECP issue (GoogleCloudPlatform#760) * Improve retry logic to consider temporal failure due to ECP issue * fixed GCA's reviewed points * bug: fix CSM's access log query was wrong for GDC clusters (GoogleCloudPlatform#779) * bug: fix CSM's access log query was wrong for GDC clusters * addressed comment in GoogleCloudPlatform#779 --------- Signed-off-by: kyasbal <[email protected]> Signed-off-by: Haihan Jiang <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Haihan Jiang <[email protected]>
Contributor
There was a problem hiding this comment.
Code Review
This pull request introduces the KHI v6 file format and serializer architecture, replacing legacy parser and mapper tasks with new v6 implementations (GroupedLogIngesterV2, LogIngesterV2, and LogToTimelineMapperV2) along with extensive documentation, style guides, and Protobuf configurations. The review feedback highlights a critical issue in container.go where io.LimitReader silently truncates oversized payloads, an optimization opportunity in field_filter.go to avoid wrapping nodes when no keys are filtered, and a discrepancy in metadata_accumulator.go where unknown metadata types fail with an error instead of falling back to JSON serialization as documented.
7 tasks
This was
linked to
issues
Jun 19, 2026
kyasbal
marked this pull request as ready for review
June 19, 2026 01:12
kyasbal
requested review from
K53,
RyuSA,
jyane,
kkuchima and
renamoo
as code owners
June 19, 2026 01:12
renamoo
approved these changes
Jun 19, 2026
Merged
via the queue into
GoogleCloudPlatform:main
with commit Jun 19, 2026
dff3574
15 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge the long running epic branch
epic/file-schema-v6into the main branch to prepare releasing 0.56.0.This epic branch has dozens of change including some breaking changes. It originally started as file schema change then it changed the domain model used in frontend. The data structure change made necessity to restructure how it should be visualized or filtered and also allowed us to improve frontend side quite easier.
Here are the list of notable changes included in this merge PR:
Breaking change
.khi file format structure change
Previously .khi file format used JSON for storing its metadata and gzipped raw array buffer for long text part. This limits the maximum size of the logs due to the max string length accepted on V8.
This version changed
.khito use protocol buffer based file schema. It allows performant serialization/deserialization while we maintain file schema interface across backend and frontend.Protocol buffer has limitation on the max size per single message, thus KHI concatenate multiple protos on simple KHI's container file format.
Comparison by file format update
This is not only for the file size issue. KHI needs decompress string data from the file at the beginning of the load to perform filtering and consume a lot of memory(The larger scenario data with old format couldn't be loaded on my environment.) This allows frontend to open larger log data.
Note that even if we support larger log volume, still it's recommended to set appropriate filter to query. Larger logs takes longer time to filter and the inspection experience would be worse.
UI changes
More types of timelines
KHI was initially designed only for visualizing Kubernetes logs. Thus timeline layer count was fixed and it always has the structure

APIVersion -> Kind -> Namespace -> Resource -> SubResource.However, now we have a lot of types of visualization are placed with hierarchical relationships such as
.status.conditionsor.metadata.ownerReference. We recently added support for CSM TD resources or Managed airflow. These were needed to be placed on timeline with mapping their concept to kubernetes concept forcibly.New change allows defining new timeline type for each parsers and the count of layers of timeline hierarchy is not limited.
With this change, Kubernetes resource hierarchy was changed to

cluster name -> api version -> kind -> namespace -> resource -> subresourcewith aiming to support multi clusters.New timeline filters
By the change of timeline types, KHI no longer guarantee given data contains
namespaceorkindtimeline. It needed more widely applicable filtering mechanism.CEL based filtering
The new filtering system is based on CEL based highly flexible filtering system. Now advanced user can input the filter directly. One of the example of this usage is to filter timelines by its manifest property.
The screenshot captures filtering timelines which has
status.qosClass = Burstable. This allows us to find resources with more complex conditions.Severity filtering
KHI hasn't supported severity based filtering. This was not from the architectural limit, but more like my own ideological policy. But now I supported it as there were many requests on it.
But note that severities in distributed system sometimes become misleading because each component decides its severity from its own perspective. Severity is not a universal criteria of logs.
Log body search and diff body search
Our log or diff components hasn't provided searching capability. It lead user to use in-browser search but it sometimes hit other elements not on the logs or the manifest.
Graph view integration on the dockable window
hevc.mov
Now KHI's graph view is integrated on the dockable window. It allows us to see the diagram along with the timeline.