mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-12 06:30:35 +00:00
Lower memory usage for aptly db cleanup
This is not a complete fix, but the easiest first step. During `db cleanup`, aptly is loading every repo/mirror/... into memory, and even though each object is processed only once, collection holds a reference to all the loaded objects, so they won't be GC'd until process exits. CollectionFactory.Flush() releases pointers to collection objects, making objects egligble for GC. This is not a complete fix, as during iteration we could have tried to release a link to every object being GCed and that would have helped much more.
This commit is contained in:
@@ -59,6 +59,8 @@ func aptlyDbCleanup(cmd *commander.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.CollectionFactory().Flush()
|
||||||
|
|
||||||
if verbose {
|
if verbose {
|
||||||
context.Progress().ColoredPrintf("@{y}Loading local repos:@|")
|
context.Progress().ColoredPrintf("@{y}Loading local repos:@|")
|
||||||
}
|
}
|
||||||
@@ -90,6 +92,8 @@ func aptlyDbCleanup(cmd *commander.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.CollectionFactory().Flush()
|
||||||
|
|
||||||
if verbose {
|
if verbose {
|
||||||
context.Progress().ColoredPrintf("@{y}Loading snapshots:@|")
|
context.Progress().ColoredPrintf("@{y}Loading snapshots:@|")
|
||||||
}
|
}
|
||||||
@@ -118,6 +122,8 @@ func aptlyDbCleanup(cmd *commander.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.CollectionFactory().Flush()
|
||||||
|
|
||||||
if verbose {
|
if verbose {
|
||||||
context.Progress().ColoredPrintf("@{y}Loading published repositories:@|")
|
context.Progress().ColoredPrintf("@{y}Loading published repositories:@|")
|
||||||
}
|
}
|
||||||
@@ -150,6 +156,8 @@ func aptlyDbCleanup(cmd *commander.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.CollectionFactory().Flush()
|
||||||
|
|
||||||
// ... and compare it to the list of all packages
|
// ... and compare it to the list of all packages
|
||||||
context.Progress().ColoredPrintf("@{w!}Loading list of all packages...@|")
|
context.Progress().ColoredPrintf("@{w!}Loading list of all packages...@|")
|
||||||
allPackageRefs := context.CollectionFactory().PackageCollection().AllPackageRefs()
|
allPackageRefs := context.CollectionFactory().PackageCollection().AllPackageRefs()
|
||||||
@@ -192,6 +200,8 @@ func aptlyDbCleanup(cmd *commander.Command, args []string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
context.CollectionFactory().Flush()
|
||||||
|
|
||||||
// now, build a list of files that should be present in Repository (package pool)
|
// now, build a list of files that should be present in Repository (package pool)
|
||||||
context.Progress().ColoredPrintf("@{w!}Building list of files referenced by packages...@|")
|
context.Progress().ColoredPrintf("@{w!}Building list of files referenced by packages...@|")
|
||||||
referencedFiles := make([]string, 0, existingPackageRefs.Len())
|
referencedFiles := make([]string, 0, existingPackageRefs.Len())
|
||||||
|
|||||||
Reference in New Issue
Block a user