diff --git a/src/ORM/address-settings/address-settings.service.ts b/src/ORM/address-settings/address-settings.service.ts index 9df9273..460a208 100644 --- a/src/ORM/address-settings/address-settings.service.ts +++ b/src/ORM/address-settings/address-settings.service.ts @@ -17,7 +17,12 @@ export class AddressSettingsService { public async getSettings(address: string, createIfNotFound: boolean) { const settings = await this.addressSettingsRepository.findOne({ where: { address } }); if (createIfNotFound == true && settings == null) { - return await this.createNew(address); + // It's possible to have a race condition here so if we get a PK violation, fetch it + try { + return await this.createNew(address); + } catch (e) { + return await this.addressSettingsRepository.findOne({ where: { address } }); + } } return settings; } diff --git a/src/models/StratumV1ClientStatistics.ts b/src/models/StratumV1ClientStatistics.ts index 31704c3..7f3eb2e 100644 --- a/src/models/StratumV1ClientStatistics.ts +++ b/src/models/StratumV1ClientStatistics.ts @@ -63,6 +63,7 @@ export class StratumV1ClientStatistics { this.shares = 0; this.acceptedCount = 0; this.currentTimeSlot = timeSlot; + this.lastSave = new Date().getTime(); } else if ((date.getTime() - 60 * 1000) > this.lastSave) { await this.clientStatisticsService.update({ time: this.currentTimeSlot,