2-race-in-cache

command
v0.0.0-...-70ad313 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

README

Race condition in caching scenario

Given is some code to cache key-value pairs from a mock database into the main memory (to reduce access time). The code is buggy and contains a race condition. Change the code to make this thread safe.

Also, try to get your solution down to less than 30 seconds to run tests. Hint: fetching from the database takes the longest.

Note: Map access is unsafe only when updates are occurring. As long as all goroutines are only reading and not changing the map, it is safe to access the map concurrently without synchronization. (See https://golang.org/doc/faq#atomic_maps)

If possible, get your solution down to less than 5 seconds for all tests.

Background Reading

Test your solution

Use the following command to test for race conditions and correct functionality:

go test -race

Correct solution: No output = solution correct:

$ go test -race
$

Incorrect solution:

==================
WARNING: DATA RACE
Write by goroutine 7:
...
==================
Found 3 data race(s)

Additional Reading

High Performance Caches in Production

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL