~/talk

Tool belt of a seasoned bug hunter

Talkat EuRuKo 2018 · 2018-08-24..08-25· [ruby]
links:none on file
slides:none on file

Tests that used to start quickly begin taking 20–30 seconds after a series of commits; git bisect plus an automated script narrows the window but fails until dependency and DB problems are handled. Heap dumps via ObjectSpace.dump_all and analysis with hippy show many class/DSL objects; CPU sampling and flamegraph diffs reveal Rails spending tons of time undefining methods (clearing method caches). Root cause: an internal monolith eagerly generates anonymous controllers for routes. Making controller generation lazy fixes startup slowness.

AI-written summary · about

  1. 0:00Start
  2. 6:16A Tool Belt of a Seasoned Bug Hunter
  3. 7:13Baaaad bugs Not so bad bugs
  4. 7:42Silent bugs
  5. 8:042016: a debugging odyssey
  6. 8:45Reproduce
  7. 10:07What introduced it?
  8. 12:24Install gems
  9. 12:52Reset the database
  10. 13:12Missing dependency
  11. 14:36Monolith: Business Action Framework
  12. 18:05$ gem install heapy
  13. 19:02Class DSL objects survive longest
  14. 19:27Let's trace a call stack
  15. 21:38$ gem install flamegraph
  16. 26:21Is removing a method from a module slow?
  17. 27:24Dig into Ruby!
  18. 28:12Is adding a method to a module slow?
  19. 28:59Complete the puzzle
  20. 29:59We're leaking controllers
  21. 30:35Fixing it!
  22. 31:29The Lesson
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.