ui: Use UUIDs for table names in all tracks

Currently there is a potential race when using the trackKey to
generate table names. When a track is desroyed, it is destroyed
asynchronously, so it can take a little while before e.g. tables are
dropped. This means that tracks can be destroyed and recreated with the
same trackKey before a previous incarnation of the track has been
destroyed resulting in table name clashes.

While there might be better ways to address this issue at a global
level, this patch implements the easy solution - using a uniquely
generated uuid per track instance to create table names instead of the
trackKey.

This could inroduce memory spikes, while new tracks are initialized
while old tracks still exist, but it's better to be functionally
correct at least for the time being, and this is no worse than it was
before.

This patch also addresses a formatting issues in base_slice_track.ts
where the unsanitized track key was being used in the table name
which could contain underscores e.g. in debug tracks.

Bug: 337801510
Change-Id: Ifbdecf2e82a61abf5223b7357755929e5c7f2ec2
7 files changed
tree: 7c9dbe104fc9bf3681c905a0e15cff087e268436
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. python/
  13. src/
  14. test/
  15. third_party/
  16. tools/
  17. ui/
  18. .clang-format
  19. .clang-tidy
  20. .git-blame-ignore-revs
  21. .gitattributes
  22. .gitignore
  23. .gn
  24. .style.yapf
  25. Android.bp
  26. Android.bp.extras
  27. BUILD
  28. BUILD.extras
  29. BUILD.gn
  30. CHANGELOG
  31. codereview.settings
  32. DIR_METADATA
  33. heapprofd.rc
  34. LICENSE
  35. meson.build
  36. METADATA
  37. MODULE_LICENSE_APACHE2
  38. OWNERS
  39. perfetto.rc
  40. PerfettoIntegrationTests.xml
  41. persistent_cfg.pbtxt
  42. PRESUBMIT.py
  43. README.chromium
  44. README.md
  45. TEST_MAPPING
  46. traced_perf.rc
  47. WATCHLISTS
  48. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.