Skip to content

Commit 3e8973d

Browse files
thinkAfCodGrapeBaBa
authored andcommitted
fix: sqlite memory leak
1 parent 02b87d9 commit 3e8973d

File tree

1 file changed

+17
-14
lines changed

1 file changed

+17
-14
lines changed

portalnetwork/history/storage.go

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -204,17 +204,16 @@ func (p *ContentStorage) Close() error {
204204
}
205205

206206
func (p *ContentStorage) createTable() error {
207-
stat, err := p.sqliteDB.Prepare(createSql)
207+
stmt, err := p.sqliteDB.Prepare(createSql)
208208
if err != nil {
209209
return err
210210
}
211211
defer func(stat *sql.Stmt) {
212-
err = stat.Close()
213-
if err != nil {
212+
if err = stat.Close(); err != nil {
214213
p.log.Error("failed to close statement", "err", err)
215214
}
216-
}(stat)
217-
_, err = stat.Exec()
215+
}(stmt)
216+
_, err = stmt.Exec()
218217
return err
219218
}
220219

@@ -243,13 +242,7 @@ func (p *ContentStorage) initStmts() error {
243242
// Size get database size, content size and similar
244243
func (p *ContentStorage) Size() (uint64, error) {
245244
sql := "SELECT page_count * page_size as size FROM pragma_page_count(), pragma_page_size();"
246-
stmt, err := p.sqliteDB.Prepare(sql)
247-
if err != nil {
248-
return 0, err
249-
}
250-
var res uint64
251-
err = stmt.QueryRow().Scan(&res)
252-
return res, err
245+
return p.queryRowUint64(sql)
253246
}
254247

255248
func (p *ContentStorage) UnusedSize() (uint64, error) {
@@ -281,12 +274,17 @@ func (p *ContentStorage) ContentSize() (uint64, error) {
281274
return p.queryRowUint64(sql)
282275
}
283276

284-
func (p *ContentStorage) queryRowUint64(sql string) (uint64, error) {
277+
func (p *ContentStorage) queryRowUint64(sqlStr string) (uint64, error) {
285278
// sql := "SELECT SUM(length(value)) FROM kvstore"
286-
stmt, err := p.sqliteDB.Prepare(sql)
279+
stmt, err := p.sqliteDB.Prepare(sqlStr)
287280
if err != nil {
288281
return 0, err
289282
}
283+
defer func(stat *sql.Stmt) {
284+
if err = stat.Close(); err != nil {
285+
p.log.Error("failed to close statement", "err", err)
286+
}
287+
}(stmt)
290288
var res uint64
291289
err = stmt.QueryRow().Scan(&res)
292290
return res, err
@@ -298,6 +296,11 @@ func (p *ContentStorage) GetLargestDistance() (*uint256.Int, error) {
298296
if err != nil {
299297
return nil, err
300298
}
299+
defer func(stat *sql.Stmt) {
300+
if err = stat.Close(); err != nil {
301+
p.log.Error("failed to close statement", "err", err)
302+
}
303+
}(stmt)
301304
var distance []byte
302305

303306
err = stmt.QueryRow(p.nodeId[:]).Scan(&distance)

0 commit comments

Comments
 (0)