All posts

Golang Internals Part 1: Autogenerated functions (and how to get rid of them)

Maybe if you are like us at MinIO, you have every now and then come across ‘autogenerated’ functions in your Golang call stacks and wondered what they are all about? We had a case the other day where the call stack showed something like the following: cmd.retryStorage.ListDir(0x12847c0, 0xc420402e70, 0x1, ...) minio/cmd/retry-storage.go:183 +0x72 cmd.(*retryStorage)

Read more...

ToolsLib switches to MinIO for scale and performance

ToolsLib recently switched to a brand new dashboard. However, behind the scenes, there was another switch happening. We used block based filesystem for underlying storage. However, as we grew, the filesystem was proving difficult to scale. So, we were looking to move from block based storage to an object store system, when we found MinIO. After initial analysis, MinIO looked

Read more...

Debugging Go Routine leaks

Before beginning with Debugging Goroutines leaks, let me give a small introduction of some fundamentals which will give you a broader perspective of the problem. Concurrent Programming. Concurrent programming deals with concurrent execution of a program wherein multiple sequential streams of execution run at a time resulting in faster execution of your computations.It helps in better utilization of multicore

Read more...