MCPcopy Create free account
hub / github.com/IceFireDB/IceFireDB / main

Function main

main.go:50–128  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

48 conf.Name = "IceFireDB"
49 conf.Version = "1.0.0-rc.1"
50 conf.GitSHA = BuildVersion
51 conf.Flag.Custom = true
52 confInit(&conf)
53 conf.DataDirReady = func(dir string) {
54 cfg, l, d, err := openStorage(dir, storageBackend)
55 if err != nil {
56 log.Fatalf("failed to initialize storage backend %q: %v", storageBackend, err)
57 }
58 ldsCfg, le, ldb = cfg, l, d
59 storageReady.Store(true)
60
61 // Register backend-specific metrics with the INFO endpoint.
62 switch storageBackend {
63 case hybriddb.StorageName:
64 serverInfo.RegisterExtInfo(ldb.GetSDB().GetDriver().(*hybriddb.DB).Metrics)
65 case ipfs.StorageName:
66 serverInfo.RegisterExtInfo(ldb.GetSDB().GetDriver().(*ipfs.DB).Metrics)
67 case ipfs_synckv.StorageName:
68 serverInfo.RegisterExtInfo(ldb.GetSDB().GetDriver().(*ipfs_synckv.DB).Metrics)
69 }
70 }
71 if enablePprof {
72 // pprof for profiling — opt-in, loopback by default.
73 go func() {
74 log.Printf("pprof listening on %s", pprofAddr)
75 if err := http.ListenAndServe(pprofAddr, nil); err != nil {
76 log.Printf("pprof server stopped: %v", err)
77 }
78 }()
79 }
80 if enableMetrics {
81 startObservabilityServer(metricsAddr, func() bool { return storageReady.Load() })
82 }
83 conf.Snapshot = snapshot
84 conf.Restore = restore
85 conf.ConnOpened = connOpened
86 conf.ConnClosed = connClosed
87 //conf.CmdRewriteFunc = utils.RedisCmdRewrite
88
89 fmt.Printf("start with Storage Engine: %s\n", storageBackend)
90 rafthub.Main(conf)
91}
92
93// openStorage opens the ledis database for the given data dir and storage
94// backend, returning the config and handles. It returns an error instead of
95// aborting so callers (and tests) can decide how to handle failure.
96func openStorage(dir, backend string) (*lediscfg.Config, *ledis.Ledis, *ledis.DB, error) {
97 cfg := lediscfg.NewConfigDefault()
98 cfg.DataDir = filepath.Join(dir, "main.db")
99 cfg.Databases = 1
100 cfg.DBName = backend
101
102 l, err := ledis.Open(cfg)
103 if err != nil {
104 return nil, nil, nil, err
105 }
106 d, err := l.Select(0)
107 if err != nil {

Callers

nothing calls this directly

Calls 5

confInitFunction · 0.85
RegisterExtInfoMethod · 0.80
OpenMethod · 0.45
GetStorageEngineMethod · 0.45
GetLevelDBMethod · 0.45

Tested by

no test coverage detected