How This Missing Shell Option Took Down Cloudflare

Поделиться
HTML-код
  • Опубликовано: 4 фев 2025

Комментарии • 336

  • @electricindigoball1244
    @electricindigoball1244 2 месяца назад +939

    As a software dev "nuclear launch code API" is one of the scariest things I can imagine.

    • @YourFavoriteHacker8666
      @YourFavoriteHacker8666 2 месяца назад +50

      I’ll be sure to show you the demo first. -dev

    • @hubertnnn
      @hubertnnn 2 месяца назад +40

      Knowing how governments work, US probably hired some intern to make a bluetooth API for the famous football (remote launcher that is supposed to be always close to the president)..

    • @kellymoses8566
      @kellymoses8566 2 месяца назад +21

      The US is replacing all its ground based nuclear ICBMs and there is a LOT of controversy and debate about how computerized their control should be for this very reason. The current control system is to analog it is impossible to hack remotely but IMHO using TCP/IP to launch nukes would be a really bad idea.

    • @the-answer-is-42
      @the-answer-is-42 2 месяца назад +17

      It uses basic authentication and the password is just 15 of the "*" character because the guy in charge thought "no one would expect something THAT stupid".

    • @SpringySpring04
      @SpringySpring04 2 месяца назад +2

      @@the-answer-is-42 The password is "password"!

  • @thenayancat8802
    @thenayancat8802 2 месяца назад +605

    Love that bash by default just doesn't give 2 Fs about your errors and just ploughs on regardless

    • @YourFavoriteHacker8666
      @YourFavoriteHacker8666 2 месяца назад +18

      Just modify the strings to remove all the error codes. Then any shell will plough through

    • @udirt
      @udirt 2 месяца назад +37

      Plowing through can avoid some other classes of errors. Its the fail-open he explains at length though I don't think he noticed he was looking at it.
      Meant to think as you write scripts. That's also why pipefail or e need to be applied with thought, and not to replace thought. set -u is the only thing that can be expected to fail safe and only for good causes.
      Still in the end, most of these features ought to never be hit, the script's flow control should be handling errors and not the shell running the script, and design / pre/post conditions should handle data. Blaming a pipe in that case means you just ignore that you wrote a trash script.
      Poop code caused by thinking shell scripts are not worthy of thought, while they are critical systems code after all.
      If thinking about this thing, you should not see a cron job for a task like this, you'd want to see another daemon.
      At the end - learn use pre/post conditions, let your code measure its data quality, learn to write state machines. And then rely on set mechanisms on top. Don't replace good design with it.
      Shell scripts are important because they can condense various tasks of multiple sources etc., and they are a lot better at error handling, you just mustn't take too many shortcuts. Like tee in a data processing step. Noone on our team would have let you wrote something like that twice.

    • @charlesbenca5357
      @charlesbenca5357 2 месяца назад +11

      wait until you learn about sh, then you'll apreciate bash for all the good it does

    • @hubertnnn
      @hubertnnn 2 месяца назад +4

      @@udirt I think cron is a perfectly valid use case for this.
      While cron is an old tool its a very mature and good tool for what it does.
      You denying cron kind of reminds me of a coworker that "solved" a problem of docker not running cron correctly by replacing a cronjob with "while true {runscript; sleep X}" loop and causing more problems due to the script not being executed at the beginning of the minute. (The script I made had an assumption that it is executed at the beginning of a minute or else there might be a race condition due to time being checked twice and having to match in both checks).

    • @thenayancat8802
      @thenayancat8802 2 месяца назад +5

      @@udirt I can see that the default behavior would be useful in some situations but you have to acknowledge it's an insane default

  • @djklfsdjklfjlif
    @djklfsdjklfjlif 2 месяца назад +377

    The way you cover and present these is awesome. I always look forward to new videos from you. I've been in FAANG and adjacent companies, including being on-call during one of the incidents you've done a video on. I wish we could present the post-mortem/COE/whatever by just playing one of your videos.

  • @hoang-himself
    @hoang-himself 2 месяца назад +823

    God damn the Teams notification

  • @jacksonyan7346
    @jacksonyan7346 2 месяца назад +226

    Blowing up the service while doing batched rollbacks on a known good commit is like the worst nightmare I can imagine😅. I can’t blame them for looking for potentials hackers before anything else.

    • @YourFavoriteHacker8666
      @YourFavoriteHacker8666 2 месяца назад

      More shit to be broken.

    • @NoOne-fe3gc
      @NoOne-fe3gc 2 месяца назад +15

      Yeah, I can 100% guarantee that everybody involved said "wtf" when they saw a rollback to good code failing

  • @npip99
    @npip99 2 месяца назад +273

    Imagine writing a whole service in Rust and spend half your code just handling errors and result types, just to call unwrap() and panic on bad input anyway.

    • @Sierra410
      @Sierra410 2 месяца назад +44

      That's kinda one of the reasons to use Rust, though. A reliable panic is A LOT better than undefined behavior you're likely to have in C or C++ in a similar situation.

    • @evanjsx
      @evanjsx 2 месяца назад +17

      @@Sierra410 I completely agree.
      "Oh, I add match here"
      .....
      "Is that it?"

    • @sas408
      @sas408 2 месяца назад +12

      Good luck debugging same thing in C

    • @tacokoneko
      @tacokoneko Месяц назад +8

      the reason rust is safer is because in rust that's a panic and the software is guaranteed to either terminate or perform a desired action, but in C it's an undefined behavior and the whole software could be vulnerable to a code injection exploit

    • @acard0
      @acard0 Месяц назад

      thats actually big chunky safe guard.

  • @ArdourXL
    @ArdourXL 2 месяца назад +37

    Your editing is always absolutely amazing and one of the main reasons I love basically every video on this channel

    • @transfo47
      @transfo47 Месяц назад

      Yes, so many hilarious small details

  • @sixmike
    @sixmike 2 месяца назад +18

    putting all those notification sounds in a video dropping on a Saturday is dastardly work

  • @MusicGameFinatic999
    @MusicGameFinatic999 2 месяца назад +43

    Love the way you walked through the initial problem, explained what the engineers looked at to troubleshoot and what they did to eventually fix the issue. This is the kind of thing we deal with frequently at work when I am working On-Call, so it was really interesting! Gives people who do not work in this industry more insight into how it all goes down.

    • @Ormaaj
      @Ormaaj Месяц назад

      It's ironically insightful in the sense that it shows how people that call themselves engineers are now allowing their practices to be informed by totally uncritical viewing of clickbait media.

  • @N_N_N
    @N_N_N 2 месяца назад +4

    this was very well explained and animated, and funny, without overly intense sound effects or jokes. Got a new subscriber!

  • @LudicrosityIndustries
    @LudicrosityIndustries 2 месяца назад +21

    I'm a simple man. I see a new Kevin Fang video-I click.
    Serious segment:
    One of the ideas I had was to not rollback all of the servers simultaneously. That was clearly a bit much.

  • @ZettaiKatsu2013
    @ZettaiKatsu2013 2 месяца назад +16

    I'm glad to see you're well Mister Fang.

  • @martinmartinpl
    @martinmartinpl 2 месяца назад +10

    I'm glad to see that even deep inside one if the world's biggest IT companies there are cron and bash-related bugs just like the ones I make every other month lol

  • @SIMULATAN
    @SIMULATAN 2 месяца назад +92

    F*cking up a shell command? Couldn't be me!

  • @olzhasarystanov9582
    @olzhasarystanov9582 2 месяца назад +6

    I’m a senior back-end engineer and this is the only RUclips channel I love.
    Kevin, please, keep doing your great work. There are no alternatives to your content, not even a single channel I can name

  • @nealelliott1360
    @nealelliott1360 2 месяца назад +26

    I've leaned a long time ago to not have stacked pipe commands in scripts. It makes for a fun troubleshooting time..

    • @alex84632
      @alex84632 2 месяца назад +4

      So what do you use instead? Process substitution?

    • @sergiosoares5045
      @sergiosoares5045 2 месяца назад

      @@alex84632Use strict mode in bash or leave pipe for daily terminal usage.
      Scripts without strict bash options can lead to hard debug sessions like that.
      For example that issue could be avoided with basic habit of avoid single line / pipes in scritps (same apply for deep sub shells)
      Example:
      $ dos-make-addr-conf > config.toml
      $ dosctl set template_vars config.toml
      Without pipes an error in the code will trigger an error in the first line avoiding fulfilling cache with an empty value.

    • @sergiosoares5045
      @sergiosoares5045 2 месяца назад +5

      Use strict mode in bash or leave pipe for daily terminal usage.
      Scripts without strict bash options can lead to hard debug sessions like that.
      For example that issue could be avoided with basic habit of avoid single line / pipes in scritps (same apply for deep sub shells)
      Example:
      $ dos-make-addr-conf > config.toml
      $ dosctl set template_vars config.toml
      Without pipes an error in the code will trigger an error in the first line avoiding fulfilling cache with an empty value.

  • @d_ryz
    @d_ryz 2 месяца назад +48

    00:49 bro got hit hard by those auto updates and had to throw shade at Microsoft 😂😂. To be honest, have had similar experience and haven’t had auto updates enabled in a long time

  • @DrowsySquid75
    @DrowsySquid75 2 месяца назад +201

    Babe wake up new site event just dropped

  • @hufuhufu
    @hufuhufu 2 месяца назад

    Thank you for the opportunity.
    I smashed that like button really hard.

  • @Froschkoenig751
    @Froschkoenig751 2 месяца назад

    Your channel is a true gem 💎 I celebrate every new upload - keep it up!

  • @ericpruitt2558
    @ericpruitt2558 2 месяца назад +42

    I think there's a mistake a 8:11. Enabling errexit would not cause the script fail if the pipeline fails because errexit works based on the last exit status of a compound command (i.e. a command using "&&" or "||" among other things). If you run `bash -c 'set -e; (false) && true; echo OK'` you'll see that "OK" is still displayed even though the first command, "false", fails. Compare that to `bash -c 'set -e; (false); true; echo OK'` in which "OK" is not printed.

    • @TimVergenz
      @TimVergenz Месяц назад +4

      Additionally, the `… | tee config.toml` part does NOT get “skipped” as the video overlay text suggests. It actually starts up at the same time as the first command, just with its input hooked up to the first command’s output. And because the first command fails, its output is empty, and then `tee` **successfully** overwrites the config file with its (empty) input. `pipefail` does not enable any short circuiting - it just tells bash to consider exit codes for **all** jobs to determine the exit code of a pipeline, not just the exit code of the last job (the default behavior).

    • @Ormaaj
      @Ormaaj Месяц назад

      In an ordinary command context `&&` and `||` are list operators which form command lists, not compound commands. Compound commands are always surrounded by a pair of either keywords like `if` and `fi` or metacharacters in the case of `()` and `(())` . This aspect isn't particularly relevant to the issue.
      As a side-note, `&&` and `||` have numerous context-dependent functions. The sections of a `[[ ]]` compound command are delimited by keywords that may include `&&` and `||` and the arithmetic expression grammar has its own entirely separate `&&` and `||` operators that have yet another function.

    • @ericpruitt2558
      @ericpruitt2558 Месяц назад

      @@Ormaaj looking at Bash manual, you're right -- compound command isn't the right term, but errexit still operates based on the last command in the series, so the behavior described/shown is the same.

    • @Ormaaj
      @Ormaaj Месяц назад

      @@ericpruitt2558 The best solution is to never use errexit. pipefail on its own is an ok solution but it's better to avoid needing pipefail if possible. A better non-portable solution is `cmd1 | cmd2; ((!PIPESTATUS[0]))`. Another is to use `

    • @Ormaaj
      @Ormaaj Месяц назад

      Actually I lied there is one shell that does pipes the right way and it's execline (not even a shell). An execline chain using `pipeline` `piperw` and `wait` can handle this situation beautifully (but it's a little verbose). It is very funny that the simple execline toolset of all things has no problem here while none of the big languages can deal with such simple problems in anything close to an ideal way.

  • @GeraldTM
    @GeraldTM 2 месяца назад +4

    OUR YEARLY KEVIN FANG UPLOAD!

  • @trap7369
    @trap7369 2 месяца назад

    Great video, very well produced, and with a quick explanation of some informations, perfect!

  • @KerboOnYT
    @KerboOnYT 2 месяца назад

    Excellent analysis. Thanks for the detailed breakdown.

  • @thetruereality2
    @thetruereality2 2 месяца назад

    Great to see you back with new video, commenting before watching it 😊

  • @69k_gold
    @69k_gold 2 месяца назад +6

    Learned more about CS from Kevin Fang's videos than I ever did in college

  • @Aranimda
    @Aranimda 2 месяца назад +4

    04:30 I love how the nuke has the cloudflare logo in it.

  • @haventyetbegun
    @haventyetbegun 2 месяца назад

    I was desperate for more videos. Great job and thank you!

  • @kisaragi-hiu
    @kisaragi-hiu 2 месяца назад +28

    I kind of didn't expect the solution to the rollback causing slowdowns to just be scaling it out (throw more hardware at it), but yeah, that's a fairly reasonable step to take.

  • @Rei-s7y
    @Rei-s7y 2 месяца назад +67

    no fucking way new upload

  • @zdrux
    @zdrux 2 месяца назад +8

    I had a team on our Kubernetes cluster configure their liveness and readiness probes with a "; exit 0" at the end of the executed command. Then they called me trying to find out why any pod that stopped responding is not being seen as dead and automatically restarted by Kubernetes.
    /smh

  • @HMPerson2
    @HMPerson2 2 месяца назад +5

    do note that `pipefail` also means that a pipeline containing `| head` will always fail, because `head` closes stdin after enough lines and most programs handle `SIGPIPE` by hard-crashing

  • @TwistedMe13
    @TwistedMe13 2 месяца назад +2

    9:13 Or better yet have a 'last known good configuration' fallback as part of the error correction handling. Hypothetical:
    0. Frontline is setup as an N-1 Configuration (always one configuration behind DoSD and other daemons.) and will verify legitimacy of the most current config files received before overwriting one in service
    Redundancy is established for DoSD server and servers running the Kubernetes Script and the Addressing APIs.
    1. DoSD detects an empty or malformed quicksilver key -> DoSd throws an alarm and sends a command to Frontline not to overwrite existing config files until service is restored -> Command sent to Kubernetes daemon to restart
    2. Kubernetes script needs it's own output sanitatization/error handling and will throw an alarm if the return from the addressing API return is empty or malformed.
    3. Addressing API needs redundant servers and Kubernetes will throw an alert if the data from one server varies significantly (or doesn't exist) and run with the majority-agreed output.

  • @Bunny501
    @Bunny501 2 месяца назад +2

    Really nice visuals!!!
    I love that Bloons metaphor and repressing actors as amogus

  • @Imolos
    @Imolos 2 месяца назад +1

    That PagerDuty ship bells sound almost triggered my PTSD.

  • @coopergates9680
    @coopergates9680 2 месяца назад +1

    2:56 Lol, gotta love pop. "How to tell if a girl likes you" top suggestion

  • @anhquantranle961
    @anhquantranle961 2 месяца назад +1

    The moral of the story is to always think about the edge case when writing code. Error handling has been neglected for so long in the search for “clean looking code” and / or implementing features as fast as possible.

  • @skysuperblock2204
    @skysuperblock2204 2 месяца назад +1

    Cant wait for him to cover the wayback machine incident

  • @shubhamsawant1551
    @shubhamsawant1551 2 месяца назад +7

    Waiting for Crowdstrike outrage video :D

  • @bobokira
    @bobokira Месяц назад

    The second image of something broke is insanely crazy

  • @KCOWMOO
    @KCOWMOO 2 месяца назад

    lol the part when typing for search results in bing, love the funny video editing

  • @mbrg6843
    @mbrg6843 2 месяца назад

    Automatic P0 Incident is a trigger I didn't know I had

  • @glitchy_weasel
    @glitchy_weasel 2 месяца назад +9

    Glad to see you back, king 👑
    Love your breakdown videos of tech companies being one inch away from complete disaster - makes me feel like the entire internet is more fragile than it seems (specially with a few companies, like Cloudflare, routing one fifth of the entire global web traffic).

    • @entechcore
      @entechcore 2 месяца назад +3

      most of the time we actually have no idea what we're doing, or what the last guy did

  • @FutureAIDev2015
    @FutureAIDev2015 2 месяца назад

    This reminds me of what I learned a few years ago from taking some Google Cloud Platform and Google Kubernetes courses

  • @ved_s
    @ved_s 2 месяца назад +8

    4:04 bad rust developers! Rust specifically makes you handle those types of things, of course, you can ignore that and just panic on invalid data, which is bad practice and should never be pushed to production in that stage

  • @Moziilla.Firefox
    @Moziilla.Firefox 2 месяца назад

    nice video 👍 and editing

  • @Artpicks
    @Artpicks 2 месяца назад

    That PagerDuty alarm spiked my blood pressure

  • @JanDahl
    @JanDahl 2 месяца назад +1

    @6:03 right in the C64 nostalgia feels

    • @8bits59
      @8bits59 2 месяца назад

      ???

    • @JanDahl
      @JanDahl 2 месяца назад

      @@8bits59 Sound effects from the old game, Boulder Dash :-)

  • @telgou
    @telgou 2 месяца назад +4

    How about keeping the current cache if the new value is "null" too as a simple precaution ?

    • @YourFavoriteHacker8666
      @YourFavoriteHacker8666 2 месяца назад

      How about I fire the whole team and I’ll implement the shit I want not what the “community” wants. I’m not part of a single one yet it seems like everyone wants to micro manage my life but that’s gonna be stopped.

  • @Dog_kibble
    @Dog_kibble 2 месяца назад

    Dude I love these vids, please make more!!!

  • @WackoMcGoose
    @WackoMcGoose 2 месяца назад +1

    I always heard it pronounced "day-mon", _specifically_ to avoid semantic overlap with the other kind (something Dwarf Fortress actually exploits, as the ascii tileset character for a... denizen of the circus, is the & symbol, the same thing that denotes a daemon).

  • @skysuperblock2204
    @skysuperblock2204 2 месяца назад

    OMG he finally CAME back.

  • @amahlaka
    @amahlaka 2 месяца назад

    I hope we get episode on the crowdstrike f-up soon

  • @viktor6726
    @viktor6726 2 месяца назад

    Dinners gonna taste real nice with this one 🔥

  • @ロジャー-n3s
    @ロジャー-n3s 2 месяца назад +18

    The Slack knock-knock-knock has scared me 🤧

  • @chasemarangu
    @chasemarangu 2 месяца назад

    So glad this guy returned

  • @thebosscrystal
    @thebosscrystal 2 месяца назад

    Miss these videos!

  • @42shrooms
    @42shrooms 2 месяца назад +4

    HES BACK

  • @mateuszdrab
    @mateuszdrab 2 месяца назад +1

    Love how global companies run solutions similar to what I do at home, bunch of scripts in Kubernetes cronjons. 😅

    • @sergiosoares5045
      @sergiosoares5045 2 месяца назад

      We are prepared for the job already 😂

  • @chrishamilton1728
    @chrishamilton1728 2 месяца назад +1

    This reminds me of a time I was asked to remove error handling because it made the code "too cumbersome". Please handle your errors 🙏

  • @timog7358
    @timog7358 2 месяца назад

    amazing content. love the humour

  • @ralphway823
    @ralphway823 2 месяца назад

    kevin vid just dropped🗣🗣🔥

  • @3rdalbum
    @3rdalbum 2 месяца назад

    I would also argue that the command which writes a value to Quiksilver should not be able to set a blank value. If a value needs to be blank, there ahould be a flag which causes the value to be blanked out. This would make it more difficult to accidentally blank out a value, because you have to explicitly change the command in order to blank the value.

  • @Velocifyer
    @Velocifyer 2 месяца назад +3

    Wow, i really shiuld order quicksilver now!

  • @xminty77
    @xminty77 2 месяца назад

    hell yeah new kevin fang video

  • @SakuraiEvsa
    @SakuraiEvsa 2 месяца назад +1

    bash pipe always scared me.
    there is one time I make backup script that works for years, and it suddenly creating 0 byte backup. it took me hours debugging it, not realizing it simply because one part of the pipe broke.

  • @g1sbi
    @g1sbi 2 месяца назад

    How dare you flash a Teams notification, I had a heart attack bruh

  • @danielja1832
    @danielja1832 2 месяца назад

    Excellent, let me get my popcorn!

    • @YourFavoriteHacker8666
      @YourFavoriteHacker8666 2 месяца назад

      I got the butter right here *pulls out the spot between his thighs and scrota* extra buttery just like you like.

  • @aliencrafter_
    @aliencrafter_ 2 месяца назад +1

    Oh thank God, I've had food in front of me for like 20 minutes just looking for a video to watch.

  • @AndersonPEM
    @AndersonPEM 2 месяца назад

    HE'S BACK! I'LL GET THE POPCORN 🍿

  • @stevenhe3462
    @stevenhe3462 2 месяца назад

    That mushroom cloudflare looks awesome.

  • @lIlIlIIlIIlIIlIIIlIIIl
    @lIlIlIIlIIlIIlIIIlIIIl 2 месяца назад +3

    new kevin fang video just dropped

  • @youi690
    @youi690 2 месяца назад +3

    Bloons mentioned!!!! 🎈🎈🎈🙊🙈

  • @DaveEeEeE-hu7gu
    @DaveEeEeE-hu7gu Месяц назад

    2:22 Swear I get PTSD with that pager duty sound 😂

  • @dhimandutta9376
    @dhimandutta9376 2 месяца назад +1

    Babe wake up, Kevin just dropped a new video🗣️

  • @TheRealStevenPolley
    @TheRealStevenPolley 2 месяца назад

    Thank you Kevin

  • @ISBP
    @ISBP 2 месяца назад

    HELL YEAH KEVIN FANG UPLOAD

  • @anon_y_mousse
    @anon_y_mousse 2 месяца назад

    I wonder if pipefail shouldn't be the default. It makes more sense for a command returning an error code to kill the pipeline, but unless each command writes its output to a file somewhere you can't easily chain them to stop at failure points. Also, it kind of sucks that you even need `tee` in the first place because you can't use the shell to redirect to files if you don't have permission to write to those files and tee obviates the need to acquire higher permissions. This is where having a proper programming language would be better, because you could deal with everything in one step, but then it would be harder to write glue code for automation.

  • @uniquehandle1234
    @uniquehandle1234 2 месяца назад +1

    He's back!!

  • @alsifjlasieflooo
    @alsifjlasieflooo 2 месяца назад

    Yay, the funny videos are back!

  • @davidyoder562
    @davidyoder562 Месяц назад

    5:30 If dos-make-addr-conf returns with an error value, then dosctl shouldn't run. Granted, there will still be a corrupt conf file since tee will execute, but it shouldn't do anything until the dosctl command is run. So I take it that the dos-make-conf command always returned true?
    Edit 8:04 my question was answered 🤦‍♂️

  • @pablojuan4679
    @pablojuan4679 2 месяца назад

    MY GOAT POSTED AGAIN 🗣️📢🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥🔥💯💯💯💯💯💯💯💯💯

  • @Luzgar
    @Luzgar 2 месяца назад +19

    Invalid input data is always the problem.
    Please validate your inputs, all of them.

    • @YourFavoriteHacker8666
      @YourFavoriteHacker8666 2 месяца назад

      And by validate we mean let this third party app/extension do it for you. Not anymore fags.

    • @sergiosoares5045
      @sergiosoares5045 2 месяца назад +1

      Ever, the async job putting empty objects is a old friend.

    • @galactic_dust42
      @galactic_dust42 2 месяца назад +1

      And what a great idea to use bash to validate inputs...
      Seriously, it's just lazy work by the cloudflare developers.
      This bash command is a shortcut to something which should have way more thoughts into it.
      Each deployment step is a potential failure, and even more with bash and all theses broken tools

  • @luketurner314
    @luketurner314 2 месяца назад +1

    0:39 Not sure if this is an intentional inside joke or genuine misunderstanding, but the "ae" in "daemon" should be pronounced as a long "a" like 'day-mon' and is not meant to be related at all to an evil "supernatural being"; as "daemon" predates "demon" and is more like a guardian angel

    • @randomgeocacher
      @randomgeocacher 2 месяца назад +1

      Contested, if you look around there are competing valid pronunciation rules; demon, dēm(ə)n, dee·muhn, daymon etc etc are valid in different schools of English. So virtually any reasonable pronunciation is valid unless you are trying to enforce a particular dialect/ruleset.

    • @EchoHeo
      @EchoHeo 2 месяца назад +1

      latin æ is traditionally pronounced /iː/ in english, from middle english /ɛː/ as in meat (now /iː/)

  • @mahb-i1y
    @mahb-i1y 2 месяца назад

    We don't have a lot of bash but when we do I start with `set -eu` probably time to add pipefail to that

  • @offsetmonkey538
    @offsetmonkey538 2 месяца назад

    Oh wow I loved watching this

  • @RealJoBoGamer
    @RealJoBoGamer 2 месяца назад

    So for 30 minutes, ddos attacks were possible?

  • @fdsKedi
    @fdsKedi 2 месяца назад +2

    NEW KEVIN FANG VIDEO DROPPED!

  • @zeroskill.
    @zeroskill. 2 месяца назад

    yay new upload from the legend

  • @alanmok8783
    @alanmok8783 2 месяца назад

    4:26 The sleeping dosd is so cute 😆

  • @rem0tivated
    @rem0tivated 2 месяца назад

    new kevin fang video 🎉

  • @bmenrigh
    @bmenrigh 2 месяца назад +2

    I completely disagree that a shell configuration was the core fix. The update to the dosd configuration wasn't robust. It should have written configuration to a new variable, verified the configuration, and then atomically swapped out the running config for the new config. Relying on the shell exiting properly on subshell error papers over the fact that the downstream of the pipe was dumb and couldn't detect obvious failures.

  • @Joelitop
    @Joelitop 2 месяца назад

    Babe, wake up, Kevin posted a new video

  • @jakint0sh
    @jakint0sh 2 месяца назад

    Woohoo more Kevin Fang!

  • @JustaGuy-cool
    @JustaGuy-cool 2 месяца назад

    Very good video.

  • @ARandomUserOfThisWorld
    @ARandomUserOfThisWorld 2 месяца назад

    KEVIN! YOUR BACK!

    • @ARandomUserOfThisWorld
      @ARandomUserOfThisWorld 2 месяца назад

      Imma watch it first but I am sure it is still as great as your other vids going in depth to the technical details

    • @1e1001
      @1e1001 2 месяца назад +4

      what about his back?

    • @Dr-Zed
      @Dr-Zed 2 месяца назад +1

      I hope his back is ok.

  • @mr.yap.the.cat.from.meowcamera
    @mr.yap.the.cat.from.meowcamera 2 месяца назад +1

    kevin fang is KING

  • @nirmalthomasmathew
    @nirmalthomasmathew 2 месяца назад

    Yessss, New Kevin Fang

  • @nax47
    @nax47 2 месяца назад

    Love this videos.

  • @CoderedLegacy
    @CoderedLegacy 2 месяца назад

    Why is the timing of the rollback of the second batch overlapping with the timing of the scheduled cronjob not included as a lesson/potential fix? Shouldn't they have had some sort of preventative measure to account for such a situation, beyond the 4 lessons already described (i.e. some sort of change/release management procedure to catch this)?