fix: removing repacks from worker threads to fix race condition

This commit is contained in:
Chubby Granny Chaser
2024-06-03 23:09:47 +01:00
parent 4559e23610
commit ea923d5082
13 changed files with 71 additions and 105 deletions

View File

@@ -2,8 +2,7 @@ import { getSteamAppAsset } from "@main/helpers";
import type { CatalogueEntry, GameShop } from "@types";
import { registerEvent } from "../register-event";
import { requestSteam250 } from "@main/services";
import { repacksWorker } from "@main/workers";
import { RepacksManager, requestSteam250 } from "@main/services";
import { formatName } from "@shared";
const resultSize = 12;
@@ -19,10 +18,7 @@ const getCatalogue = async (_event: Electron.IpcMainInvokeEvent) => {
}
const { title, objectID } = trendingGames[i]!;
const repacks = await repacksWorker.run(
{ query: formatName(title) },
{ name: "search" }
);
const repacks = RepacksManager.search({ query: formatName(title) });
const catalogueEntry = {
objectID,

View File

@@ -1,8 +1,9 @@
import type { CatalogueEntry } from "@types";
import { registerEvent } from "../register-event";
import { repacksWorker, steamGamesWorker } from "@main/workers";
import { steamGamesWorker } from "@main/workers";
import { convertSteamGameToCatalogueEntry } from "../helpers/search-games";
import { RepacksManager } from "@main/services";
const getGames = async (
_event: Electron.IpcMainInvokeEvent,
@@ -14,11 +15,8 @@ const getGames = async (
{ name: "list" }
);
const entries = await repacksWorker.run(
steamGames.map((game) => convertSteamGameToCatalogueEntry(game)),
{
name: "findRepacksForCatalogueEntries",
}
const entries = RepacksManager.findRepacksForCatalogueEntries(
steamGames.map((game) => convertSteamGameToCatalogueEntry(game))
);
return {

View File

@@ -1,9 +1,9 @@
import { RepacksManager } from "@main/services";
import { registerEvent } from "../register-event";
import { repacksWorker } from "@main/workers";
const searchGameRepacks = (
_event: Electron.IpcMainInvokeEvent,
query: string
) => repacksWorker.run({ query }, { name: "search" });
) => RepacksManager.search({ query });
registerEvent("searchGameRepacks", searchGameRepacks);

View File

@@ -3,9 +3,8 @@ import { dataSource } from "@main/data-source";
import { DownloadSource } from "@main/entity";
import axios from "axios";
import { downloadSourceSchema } from "../helpers/validators";
import { repackRepository } from "@main/repository";
import { repacksWorker } from "@main/workers";
import { insertDownloadsFromSource } from "@main/helpers";
import { RepacksManager } from "@main/services";
const addDownloadSource = async (
_event: Electron.IpcMainInvokeEvent,
@@ -31,15 +30,7 @@ const addDownloadSource = async (
}
);
repackRepository
.find({
order: {
createdAt: "DESC",
},
})
.then((repacks) => {
repacksWorker.run(repacks, { name: "setRepacks" });
});
await RepacksManager.updateRepacks();
return downloadSource;
};

View File

@@ -1,22 +1,13 @@
import { downloadSourceRepository, repackRepository } from "@main/repository";
import { downloadSourceRepository } from "@main/repository";
import { registerEvent } from "../register-event";
import { repacksWorker } from "@main/workers";
import { RepacksManager } from "@main/services";
const removeDownloadSource = async (
_event: Electron.IpcMainInvokeEvent,
id: number
) => {
await downloadSourceRepository.delete(id);
repackRepository
.find({
order: {
createdAt: "DESC",
},
})
.then((repacks) => {
repacksWorker.run(repacks, { name: "setRepacks" });
});
await RepacksManager.updateRepacks();
};
registerEvent("removeDownloadSource", removeDownloadSource);

View File

@@ -2,8 +2,7 @@ import { registerEvent } from "../register-event";
import axios from "axios";
import { downloadSourceRepository } from "@main/repository";
import { downloadSourceSchema } from "../helpers/validators";
import { repacksWorker } from "@main/workers";
import { GameRepack } from "@types";
import { RepacksManager } from "@main/services";
const validateDownloadSource = async (
_event: Electron.IpcMainInvokeEvent,
@@ -20,9 +19,7 @@ const validateDownloadSource = async (
if (existingSource)
throw new Error("Source with the same url already exists");
const repacks = (await repacksWorker.run(undefined, {
name: "list",
})) as GameRepack[];
const repacks = RepacksManager.repacks;
const existingUris = source.downloads
.flatMap((download) => download.uris)

View File

@@ -4,7 +4,8 @@ import flexSearch from "flexsearch";
import type { GameShop, CatalogueEntry, SteamGame } from "@types";
import { getSteamAppAsset } from "@main/helpers";
import { repacksWorker, steamGamesWorker } from "@main/workers";
import { steamGamesWorker } from "@main/workers";
import { RepacksManager } from "@main/services";
export interface SearchGamesArgs {
query?: string;
@@ -29,11 +30,8 @@ export const searchSteamGames = async (
name: "search",
})) as SteamGame[];
const result = await repacksWorker.run(
steamGames.map((game) => convertSteamGameToCatalogueEntry(game)),
{
name: "findRepacksForCatalogueEntries",
}
const result = RepacksManager.findRepacksForCatalogueEntries(
steamGames.map((game) => convertSteamGameToCatalogueEntry(game))
);
return orderBy(