- package core
-
- import (
- "os"
- "runtime/pprof"
-
- ctypes "github.com/tendermint/tendermint/rpc/core/types"
- rpctypes "github.com/tendermint/tendermint/rpc/lib/types"
- )
-
- // UnsafeFlushMempool removes all transactions from the mempool.
- func UnsafeFlushMempool(ctx *rpctypes.Context) (*ctypes.ResultUnsafeFlushMempool, error) {
- mempool.Flush()
- return &ctypes.ResultUnsafeFlushMempool{}, nil
- }
-
- var profFile *os.File
-
- // UnsafeStartCPUProfiler starts a pprof profiler using the given filename.
- func UnsafeStartCPUProfiler(ctx *rpctypes.Context, filename string) (*ctypes.ResultUnsafeProfile, error) {
- var err error
- profFile, err = os.Create(filename)
- if err != nil {
- return nil, err
- }
- err = pprof.StartCPUProfile(profFile)
- if err != nil {
- return nil, err
- }
- return &ctypes.ResultUnsafeProfile{}, nil
- }
-
- // UnsafeStopCPUProfiler stops the running pprof profiler.
- func UnsafeStopCPUProfiler(ctx *rpctypes.Context) (*ctypes.ResultUnsafeProfile, error) {
- pprof.StopCPUProfile()
- if err := profFile.Close(); err != nil {
- return nil, err
- }
- return &ctypes.ResultUnsafeProfile{}, nil
- }
-
- // UnsafeWriteHeapProfile dumps a heap profile to the given filename.
- func UnsafeWriteHeapProfile(ctx *rpctypes.Context, filename string) (*ctypes.ResultUnsafeProfile, error) {
- memProfFile, err := os.Create(filename)
- if err != nil {
- return nil, err
- }
- if err := pprof.WriteHeapProfile(memProfFile); err != nil {
- return nil, err
- }
- if err := memProfFile.Close(); err != nil {
- return nil, err
- }
-
- return &ctypes.ResultUnsafeProfile{}, nil
- }
|