Hacker News

Kyerɛ HN: Deadlog – ɛkame ayɛ sɛ drop-in mutex ma debugging Go deadlocks

\u003ch2\u003eKyerɛ HN: Deadlog – ɛkame ayɛ sɛ drop-in mutex ma debugging Go deadlocks\u003c/h2\u003e \u003cp\u003eHacker News "Show HN" post yi de adwuma anaa adwinnade foforo bi a developers ayɛ ama mpɔtam hɔfo no kyerɛ. Nsɛm a wɔde kɔma no gyina hɔ ma mfiridwuma mu nneɛma foforo ne ɔhaw ahorow ano aduru wɔ adeyɛ mu...

6 min read Via github.com

Mewayz Team

Editorial Team

Hacker News
\u003ch2\u003eKyerɛ HN: Deadlog – ɛkame ayɛ sɛ drop-in mutex ma debugging Go deadlocks\u003c/h2\u003e \u003cp\u003eHacker News "Show HN" post yi de adwuma anaa adwinnade foforo bi a developers ayɛ ama mpɔtam hɔfo no kyerɛ. Nneɛma a wɔde kɔma no gyina hɔ ma mfiridwuma mu nnoɔma foforɔ ne ɔhaw ano aduru a wɔde yɛ adwuma.\u003c/p\u003e \u003ch3\u003eAdwuma no Nsɛntitiriw\u003c/h3\u003e \u003cp\u003eNneɛma titire a ɛma adwuma yi yɛ nea ɛfata sɛ yɛhyɛ no nsow:\u003c/p\u003e \u003cul\u003e na ɛwɔ hɔ \u003cli\u003eOpen-source kwan a ɛhyɛ adwumayɛkuo ho nkuran\u003c/li\u003e \u003cli\u003eWiase haw ankasa ano aduru a mfaso wɔ so\u003c/li\u003e \u003cli\u003eMfiridwuma mu nneɛma foforo a wɔyɛ wɔ softwea nkɔso mu\u003c/li\u003e \u003cli\u003eMpɔtam hɔfoɔ a wɔde wɔn ho bɛhyɛ mu ne nkɔsoɔ a ɛnam nsɛm a wɔka fa ho so\u003c/li\u003e \u003c/ul\u003e na ɛyɛ adwuma \u003ch3\u003eMfiridwuma mu Nsεmfua\u003c/h3\u003e \u003cp\u003eSaa dwumadie yi kyerɛ tumi a ɛwɔ nkɔsoɔ a mpɔtam hɔfoɔ di anim ne mfiridwuma ano aduru a ɛkɔ so nya nkɔsoɔ denam mmɔdenbɔ a wɔbom yɛ so.\u003c/p\u003e

Nsɛmmisa a Wɔtaa Bisa

Dɛn ne Deadlog na ɔkwan bɛn so na ɛboa ma wɔsiesie Go deadlocks?

Deadlog yɛ open-source, ɛkame ayɛ sɛ drop-in a wɔde besi Go gyinapɛn sync.Mutex ananmu a ɛboa developers ma wohu na wɔhwehwɛ deadlocks wɔ bere koro mu applications mu. Ɛyɛ adwuma denam logging lock acquisition order na ɛkyerɛ circular dependencies a ɛma goroutines sɛn daa. Sɛ anka wobɛhwɛ akwan a wɔahyɛ no nwini no, wunya amanneɛbɔ a emu da hɔ a ɛkyerɛ apon a ɛrepere pɛpɛɛpɛ — ɛkora nnɔnhwerew pii a wode siesie nsaanodwuma wɔ Go codebases a ɛyɛ den bere koro mu.

Ɛbɛyɛ dɛn na mede Deadlog abɔ Go adwuma a ɛwɔ hɔ dada no mu?

Integration yɛ tẽẽ ɛfiri sɛ wɔayɛ Deadlog sɛ ɛkame ayɛ sɛ drop-in replacement. Wosesa sync.Mutex ne Deadlog mutex type wɔ wo code mu, mpɛn pii no ɛhwehwɛ sɛ wobɛsesa import kwan ne refactoring kakraa bi pɛ. Ma no nyɛ adwuma wɔ nkɔso ne sɔhwɛ mu, afei ma no nyɛ adwuma wɔ adwumayɛ mu na woakwati sɛ wobɛbɔ ka. Wɔ akuo a wɔhwɛ Go microservices pii so no, platforms te sɛ Mewayz de module 207 ma wɔ $19/mo a ɛbɛtumi ama deployment adwumayɛ ayɛ mmerɛ a ɛka debugging nnwinnadeɛ te sɛ Deadlog.

ho

So wobetumi de Deadlog adi dwuma dwoodwoo wɔ mmeae a wɔyɛ nneɛma?

Deadlog no yɛ nea wɔahyɛ da ayɛ titiriw ama nkɔso ne staging atwa yɛn ho ahyia. Instrumentation no de adwumayɛ so ka ho denam lock tracking ne logging so, a ɛma ɛnyɛ nea ɛfata ma latency-sensitive production workloads. Ɔkwan a wɔkamfo kyerɛ ne sɛ wɔbɛma Deadlog atumi bere a wɔresɔ ahwɛ na CI nsuo afiri no atumi akyere nneɛma a ɛyɛ den ansa na wɔadu adwumayɛ ho. Sɛ wohu na wosiesie akasakasa ho nsɛm wie a, san dan kɔ gyinapɛn sync.Mutex so ma adwumayɛ bere a eye sen biara.

Dɛn ne nneɛma a ɛtaa de deadlocks ba wɔ Go mu, na mɛyɛ dɛn asiw ano?

Deadlocks wɔ Go mu taa firi lock nhyehyɛe a ɛnhyia, nested locks a wɔanya wɔ ntoatoasoɔ ahodoɔ mu, anaa goroutines a ɛretwɛn wɔ channels a ɛnnya values da. Akwan a wɔfa so siw ano no bi ne sɛ wobenya lock bere nyinaa wɔ wiase nyinaa nhyehyɛe a ɛkɔ so daa mu, de bere a wɔde twam a context.Context wom bedi dwuma, ne nnwinnade te sɛ Deadlog a wɔde bedi dwuma de ahu ntɛm. Mewayz nkɔsoɔ module 207, a ɛwɔ $19/mo no, ka nneɛma a ɛfa Go concurrency best practices ho de boa akuo ma wɔkyekyere application a ɛyɛ den, a enni deadlock.