1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-08-23 13:46:45 +02:00

fix: last seen deadlocks (#5264) (#5266)

Patch unleash last seen at logic
This commit is contained in:
Fredrik Strand Oseberg 2023-11-03 14:33:19 +01:00 committed by GitHub
parent 9ee3be88c2
commit d0b820b7bc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -14,6 +14,26 @@ export interface FeaturesTable {
environment: string;
}
const prepareLastSeenInput = (data: LastSeenInput[]) => {
const now = new Date();
const sortedData = data.sort(
(a, b) =>
a.featureName.localeCompare(b.featureName) ||
a.environment.localeCompare(b.environment),
);
const inserts = sortedData.map((item) => {
return {
feature_name: item.featureName,
environment: item.environment,
last_seen_at: now,
};
});
return inserts;
};
export default class LastSeenStore implements ILastSeenStore {
private db: Db;
@ -32,18 +52,10 @@ export default class LastSeenStore implements ILastSeenStore {
}
async setLastSeen(data: LastSeenInput[]): Promise<void> {
const now = new Date();
try {
const inserts = data.map((item) => {
return {
feature_name: item.featureName,
environment: item.environment,
last_seen_at: now,
};
});
const inserts = prepareLastSeenInput(data);
const batchSize = 1000;
const batchSize = 500;
for (let i = 0; i < inserts.length; i += batchSize) {
const batch = inserts.slice(i, i + batchSize);