From ea8c1fe6e254c31d99841702c53a42ce7d4e0164 Mon Sep 17 00:00:00 2001
From: Travis Ralston <travpc@gmail.com>
Date: Sun, 16 Jul 2023 17:22:26 -0600
Subject: [PATCH] Clean up assets a bit better

---
 cmd/export_synapse_for_import/main.go |  7 +++----
 cmd/gdpr_export/main.go               |  2 ++
 cmd/gdpr_import/main.go               |  2 ++
 cmd/import_synapse/main.go            |  5 ++---
 cmd/media_repo/main.go                | 12 +++++-------
 cmd/s3_consistency_check/main.go      |  2 ++
 common/assets/process.go              |  7 ++++++-
 tasks/purge_remote_media.go           |  3 ++-
 8 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/cmd/export_synapse_for_import/main.go b/cmd/export_synapse_for_import/main.go
index 83397b3c..d0685bcf 100644
--- a/cmd/export_synapse_for_import/main.go
+++ b/cmd/export_synapse_for_import/main.go
@@ -39,6 +39,8 @@ func main() {
 	config.Runtime.IsImportProcess = true
 	version.SetDefaults()
 	version.Print(true)
+
+	defer assets.Cleanup()
 	assets.SetupTemplates(*templatesPath)
 
 	var realPsqlPassword string
@@ -143,10 +145,7 @@ func main() {
 		ctx.Log.Fatal(err)
 	}
 
-	ctx.Log.Info("Done export - cleaning up...")
-
-	// Clean up
-	assets.Cleanup()
+	ctx.Log.Info("Done export")
 
 	// Report missing files
 	if len(missing) > 0 {
diff --git a/cmd/gdpr_export/main.go b/cmd/gdpr_export/main.go
index f5baa6b3..1039c7ce 100644
--- a/cmd/gdpr_export/main.go
+++ b/cmd/gdpr_export/main.go
@@ -35,6 +35,8 @@ func main() {
 
 	config.Runtime.IsImportProcess = true // prevents us from creating media by accident
 	config.Path = *configPath
+
+	defer assets.Cleanup()
 	assets.SetupMigrations(*migrationsPath)
 	assets.SetupTemplates(*templatesPath)
 
diff --git a/cmd/gdpr_import/main.go b/cmd/gdpr_import/main.go
index 3cc91c08..9ac4f720 100644
--- a/cmd/gdpr_import/main.go
+++ b/cmd/gdpr_import/main.go
@@ -32,6 +32,8 @@ func main() {
 
 	config.Runtime.IsImportProcess = true // prevents us from creating media by accident
 	config.Path = *configPath
+
+	defer assets.Cleanup()
 	assets.SetupMigrations(*migrationsPath)
 
 	if ids.GetMachineId() == 0 {
diff --git a/cmd/import_synapse/main.go b/cmd/import_synapse/main.go
index 3d9430ef..e3eee834 100644
--- a/cmd/import_synapse/main.go
+++ b/cmd/import_synapse/main.go
@@ -47,6 +47,8 @@ func main() {
 
 	config.Runtime.IsImportProcess = true // prevents us from creating media by accident
 	config.Path = *configPath
+
+	defer assets.Cleanup()
 	assets.SetupMigrations(*migrationsPath)
 
 	if ids.GetMachineId() == 0 {
@@ -145,9 +147,6 @@ func main() {
 		time.Sleep(1 * time.Second)
 	}
 
-	// Clean up
-	assets.Cleanup()
-
 	logrus.Info("Import completed")
 }
 
diff --git a/cmd/media_repo/main.go b/cmd/media_repo/main.go
index 970b1f82..88c1509f 100644
--- a/cmd/media_repo/main.go
+++ b/cmd/media_repo/main.go
@@ -7,6 +7,7 @@ import (
 	"os/signal"
 	"time"
 
+	"github.com/fsnotify/fsnotify"
 	"github.com/getsentry/sentry-go"
 	"github.com/sirupsen/logrus"
 	"github.com/turt2live/matrix-media-repo/api"
@@ -15,7 +16,6 @@ import (
 	"github.com/turt2live/matrix-media-repo/common/logging"
 	"github.com/turt2live/matrix-media-repo/common/runtime"
 	"github.com/turt2live/matrix-media-repo/common/version"
-	"github.com/turt2live/matrix-media-repo/internal_cache"
 	"github.com/turt2live/matrix-media-repo/metrics"
 	"github.com/turt2live/matrix-media-repo/tasks"
 )
@@ -39,7 +39,6 @@ func main() {
 		configPath = &configEnv
 	}
 
-	version.SetDefaults()
 	config.Path = *configPath
 	if config.Get().Sentry.Enabled {
 		logrus.Info("Setting up Sentry for debugging...")
@@ -56,6 +55,7 @@ func main() {
 	defer sentry.Flush(2 * time.Second)
 	defer sentry.Recover()
 
+	defer assets.Cleanup()
 	assets.SetupMigrations(*migrationsPath)
 	assets.SetupTemplates(*templatesPath)
 	assets.SetupAssets(*assetsPath)
@@ -72,7 +72,6 @@ func main() {
 
 	logrus.Info("Starting up...")
 	runtime.RunStartupSequence()
-	internal_cache.ReplaceInstance() // init the cache as we may be using Redis, and it'd be good to get going sooner
 
 	logrus.Info("Checking background tasks...")
 	err = scanAndStartUnfinishedTasks()
@@ -86,7 +85,9 @@ func main() {
 
 	logrus.Info("Starting config watcher...")
 	watcher := config.Watch()
-	defer watcher.Close()
+	defer func(watcher *fsnotify.Watcher) {
+		_ = watcher.Close()
+	}(watcher)
 	setupReloads()
 
 	logrus.Info("Starting media repository...")
@@ -130,9 +131,6 @@ func main() {
 		stopAllButWeb()
 	}
 
-	// Clean up
-	assets.Cleanup()
-
 	// For debugging
 	logrus.Info("Goodbye!")
 }
diff --git a/cmd/s3_consistency_check/main.go b/cmd/s3_consistency_check/main.go
index 50817241..3cf5b4bf 100644
--- a/cmd/s3_consistency_check/main.go
+++ b/cmd/s3_consistency_check/main.go
@@ -32,6 +32,8 @@ func main() {
 
 	config.Runtime.IsImportProcess = true // prevents us from creating media by accident
 	config.Path = *configPath
+
+	defer assets.Cleanup()
 	assets.SetupMigrations(*migrationsPath)
 
 	var err error
diff --git a/common/assets/process.go b/common/assets/process.go
index 947d869e..d32a6ea5 100644
--- a/common/assets/process.go
+++ b/common/assets/process.go
@@ -16,6 +16,7 @@ import (
 
 var tempMigrations string
 var tempTemplates string
+var tempAssets string
 
 func SetupMigrations(givenMigrationsPath string) {
 	_, err := os.Stat(givenMigrationsPath)
@@ -55,7 +56,7 @@ func SetupAssets(givenAssetsPath string) {
 	_, err := os.Stat(givenAssetsPath)
 	exists := err == nil || !os.IsNotExist(err)
 	if !exists {
-		tempAssets, err := os.MkdirTemp(os.TempDir(), "media-repo-assets")
+		tempAssets, err = os.MkdirTemp(os.TempDir(), "media-repo-assets")
 		if err != nil {
 			panic(err)
 		}
@@ -76,6 +77,10 @@ func Cleanup() {
 		logrus.Info("Cleaning up temporary assets directory: ", tempTemplates)
 		os.Remove(tempTemplates)
 	}
+	if tempAssets != "" {
+		logrus.Info("Cleaning up temporary assets directory: ", tempAssets)
+		os.Remove(tempAssets)
+	}
 }
 
 func extractPrefixTo(pathName string, destination string) {
diff --git a/tasks/purge_remote_media.go b/tasks/purge_remote_media.go
index e8bc160b..95da4528 100644
--- a/tasks/purge_remote_media.go
+++ b/tasks/purge_remote_media.go
@@ -1,10 +1,11 @@
 package tasks
 
 import (
-	"github.com/getsentry/sentry-go"
 	"math/rand"
 	"time"
 
+	"github.com/getsentry/sentry-go"
+
 	"github.com/sirupsen/logrus"
 	"github.com/turt2live/matrix-media-repo/common/config"
 	"github.com/turt2live/matrix-media-repo/common/rcontext"
-- 
GitLab