Fixing stupid memory leak caused by excessive pointer dereference.
This commit is contained in:
parent
64bd20e0bf
commit
3e601ea2cb
|
@ -11,13 +11,12 @@ import (
|
|||
"go.uber.org/zap"
|
||||
"gopkg.in/alecthomas/kingpin.v2"
|
||||
"net/url"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
goDatabaseUrl = kingpin.Flag("go-database", "magneticod Go version database URL.").Short('g').String()
|
||||
pyDatabaseUrl = kingpin.Flag("py-database", "Python version database URL.").Short('p').Required().String()
|
||||
chunkSize = kingpin.Flag("chunk-size", "How many torrents to retrieve from old DB at once").Short('c').Default("50").Uint64()
|
||||
chunkSize = kingpin.Flag("chunk-size", "How many torrents to retrieve from old DB at once").Short('c').Default("200").Uint64()
|
||||
|
||||
progress pb.ProgressBar
|
||||
)
|
||||
|
@ -46,16 +45,15 @@ func main() {
|
|||
}
|
||||
defer pyDatabase.Close()
|
||||
|
||||
torrentsTotal, err := old.GetNumberOfTorrents(*pyDatabase)
|
||||
torrentsTotal, err := old.GetNumberOfTorrents(pyDatabase)
|
||||
if err != nil {
|
||||
zap.L().Panic("Couldn't count torrents", zap.Error(err))
|
||||
}
|
||||
|
||||
progress = *pb.Full.New(int(torrentsTotal))
|
||||
progress.SetRefreshRate(time.Second)
|
||||
progress.Start()
|
||||
|
||||
err = mergeDatabases(*pyDatabase, goDatabase)
|
||||
err = mergeDatabases(pyDatabase, goDatabase)
|
||||
if err != nil {
|
||||
logger.Error("Error while processing data", zap.Error(err))
|
||||
}
|
||||
|
@ -63,7 +61,7 @@ func main() {
|
|||
progress.Finish()
|
||||
}
|
||||
|
||||
func mergeDatabases(pyDb sql.DB, goDb persistence.Database) error {
|
||||
func mergeDatabases(pyDb *sql.DB, goDb persistence.Database) error {
|
||||
maxId, err := old.GetLastTorrentId(pyDb)
|
||||
if err != nil {
|
||||
zap.L().Fatal("Error while getting last torrent ID from old database")
|
||||
|
|
|
@ -16,10 +16,11 @@ type TorrentData struct {
|
|||
|
||||
func OpenSqliteDb(url_ url.URL) (*sql.DB, error) {
|
||||
url_.Scheme = ""
|
||||
|
||||
return sql.Open("sqlite3", url_.String())
|
||||
}
|
||||
|
||||
func GetNumberOfTorrents(db sql.DB) (uint, error) {
|
||||
func GetNumberOfTorrents(db *sql.DB) (uint, error) {
|
||||
rows, err := db.Query("SELECT COUNT(id) FROM torrents;")
|
||||
if err != nil {
|
||||
return 0, err
|
||||
|
@ -43,7 +44,7 @@ func GetNumberOfTorrents(db sql.DB) (uint, error) {
|
|||
}
|
||||
}
|
||||
|
||||
func GetLastTorrentId(db sql.DB) (uint64, error) {
|
||||
func GetLastTorrentId(db *sql.DB) (uint64, error) {
|
||||
rows, err := db.Query("SELECT MAX(id) FROM torrents;")
|
||||
if err != nil {
|
||||
return 0, err
|
||||
|
@ -67,8 +68,8 @@ func GetLastTorrentId(db sql.DB) (uint64, error) {
|
|||
}
|
||||
}
|
||||
|
||||
func GetTorrentsChunk(db sql.DB, fromId uint64, size uint64) ([]TorrentData, error) {
|
||||
chunk := make([]TorrentData, 0)
|
||||
func GetTorrentsChunk(db *sql.DB, fromId uint64, size uint64) ([]TorrentData, error) {
|
||||
chunk := make([]TorrentData, 0, size)
|
||||
|
||||
// Selecting torrents
|
||||
tRows, err := db.Query(`
|
||||
|
@ -106,7 +107,7 @@ func GetTorrentsChunk(db sql.DB, fromId uint64, size uint64) ([]TorrentData, err
|
|||
return chunk, nil
|
||||
}
|
||||
|
||||
func GetFilesForTorrent(pyDb sql.DB, torrent persistence.TorrentMetadata) ([]persistence.File, error) {
|
||||
func GetFilesForTorrent(pyDb *sql.DB, torrent persistence.TorrentMetadata) ([]persistence.File, error) {
|
||||
files := make([]persistence.File, 0)
|
||||
|
||||
// Selecting files for torrent
|
||||
|
|
Reference in a new issue