Bump version to 0.2.4 to add regression fixes
This commit is contained in:
6 files changed
+136
-2
No files matched your search
@@ -1,6 +1,7 @@
|
|||||||
import { sdk } from '../sdk'
|
import { sdk } from '../sdk'
|
||||||
import { config } from './config'
|
import { config } from './config'
|
||||||
import { poolStatus } from './poolStatus'
|
import { poolStatus } from './poolStatus'
|
||||||
|
import { rebuildShareStats } from './rebuildShareStats'
|
||||||
import { regenTlsCert } from './regenTlsCert'
|
import { regenTlsCert } from './regenTlsCert'
|
||||||
import { resetLatency } from './resetLatency'
|
import { resetLatency } from './resetLatency'
|
||||||
import { showTlsCert } from './showTlsCert'
|
import { showTlsCert } from './showTlsCert'
|
||||||
@@ -11,3 +12,4 @@ export const actions = sdk.Actions.of()
|
|||||||
.addAction(showTlsCert)
|
.addAction(showTlsCert)
|
||||||
.addAction(regenTlsCert)
|
.addAction(regenTlsCert)
|
||||||
.addAction(resetLatency)
|
.addAction(resetLatency)
|
||||||
|
.addAction(rebuildShareStats)
|
||||||
@@ -0,0 +1,79 @@
|
|||||||
|
import { i18n } from '../i18n'
|
||||||
|
import { sdk } from '../sdk'
|
||||||
|
import { uiPort } from '../utils'
|
||||||
|
|
||||||
|
export const rebuildShareStats = sdk.Action.withoutInput(
|
||||||
|
// id
|
||||||
|
'rebuild-share-stats',
|
||||||
|
|
||||||
|
// metadata
|
||||||
|
async ({ effects }) => ({
|
||||||
|
name: i18n('Rebuild Share Statistics'),
|
||||||
|
description: i18n(
|
||||||
|
'Recounts the all-time share statistics — the difficulty distribution and rejection reasons on the Stats page — by rereading CKPool’s log from the beginning. Use this if those totals look wrong or reset. The stored totals are only replaced when the log accounts for more shares than they do, so this can add history back but never erase it.',
|
||||||
|
),
|
||||||
|
warning: i18n(
|
||||||
|
'On a pool with a long history this reads millions of log lines and can take a while. The pool keeps mining throughout.',
|
||||||
|
),
|
||||||
|
allowedStatuses: 'only-running',
|
||||||
|
group: null,
|
||||||
|
visibility: 'enabled',
|
||||||
|
}),
|
||||||
|
|
||||||
|
// the execution function
|
||||||
|
async ({ effects }) => {
|
||||||
|
// No --max-time: the scan is deliberately unbounded on a large log.
|
||||||
|
const res = await sdk.SubContainer.withTemp(
|
||||||
|
effects,
|
||||||
|
{ imageId: 'main' },
|
||||||
|
null,
|
||||||
|
'rebuild-share-stats',
|
||||||
|
async (sub) =>
|
||||||
|
sub.exec([
|
||||||
|
'curl',
|
||||||
|
'-sf',
|
||||||
|
'-X',
|
||||||
|
'POST',
|
||||||
|
`http://127.0.0.1:${uiPort}/api/admin/rebuild-share-stats`,
|
||||||
|
]),
|
||||||
|
)
|
||||||
|
|
||||||
|
if (res.exitCode !== 0) {
|
||||||
|
return {
|
||||||
|
version: '1',
|
||||||
|
title: i18n('Rebuild Share Statistics'),
|
||||||
|
message: i18n(
|
||||||
|
'Failed to rebuild share statistics — the Kamado API did not respond',
|
||||||
|
),
|
||||||
|
result: null,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let adopted = false
|
||||||
|
let shares = 0
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse((res.stdout || '').toString())
|
||||||
|
adopted = parsed.adopted === true
|
||||||
|
shares = Number(parsed.shares_in_log ?? 0)
|
||||||
|
} catch {
|
||||||
|
// Fall through to the generic message below.
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
version: '1',
|
||||||
|
title: i18n('Rebuild Share Statistics'),
|
||||||
|
message: adopted
|
||||||
|
? i18n('Share statistics rebuilt from the CKPool log')
|
||||||
|
: i18n('Share statistics left unchanged'),
|
||||||
|
result: {
|
||||||
|
type: 'single',
|
||||||
|
value: adopted
|
||||||
|
? `${shares.toLocaleString()} accepted shares were counted in the log and are now reflected in the all-time difficulty distribution and rejection reasons on the Stats page.`
|
||||||
|
: `The log accounts for ${shares.toLocaleString()} accepted shares, which is no more than the stored totals already hold, so nothing was replaced.`,
|
||||||
|
copyable: false,
|
||||||
|
qr: false,
|
||||||
|
masked: false,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
@@ -112,6 +112,12 @@ const dict = {
|
|||||||
'The port you asked for was already in use, so StartOS assigned another one. Point your miners at the assigned port, or pick a free one in Configure.': 108,
|
'The port you asked for was already in use, so StartOS assigned another one. Point your miners at the assigned port, or pick a free one in Configure.': 108,
|
||||||
'Network port to publish public-domain TLS stratum on. A domain attached to the Stratum (TLS, Public Domain) interface is published on THIS port (not the one the OS assigns for IP access), and StartOS issues a Let’s Encrypt certificate for it — miners validate it with nothing pasted in. Reaching it from the internet also requires enabling that interface’s public address, which is off by default. See Pool Status for the ports and domains actually in use.': 109,
|
'Network port to publish public-domain TLS stratum on. A domain attached to the Stratum (TLS, Public Domain) interface is published on THIS port (not the one the OS assigns for IP access), and StartOS issues a Let’s Encrypt certificate for it — miners validate it with nothing pasted in. Reaching it from the internet also requires enabling that interface’s public address, which is off by default. See Pool Status for the ports and domains actually in use.': 109,
|
||||||
'Network port to publish public-domain TLS stratum on. A domain attached to the Stratum (TLS, Public Domain) interface is published on THIS port, which can differ from the one the OS assigns for IP access, and StartOS issues a Let’s Encrypt certificate for it — miners validate it with nothing pasted in. See Pool Status for the ports and domains actually in use.': 110,
|
'Network port to publish public-domain TLS stratum on. A domain attached to the Stratum (TLS, Public Domain) interface is published on THIS port, which can differ from the one the OS assigns for IP access, and StartOS issues a Let’s Encrypt certificate for it — miners validate it with nothing pasted in. See Pool Status for the ports and domains actually in use.': 110,
|
||||||
|
'Rebuild Share Statistics': 111,
|
||||||
|
'Recounts the all-time share statistics — the difficulty distribution and rejection reasons on the Stats page — by rereading CKPool’s log from the beginning. Use this if those totals look wrong or reset. The stored totals are only replaced when the log accounts for more shares than they do, so this can add history back but never erase it.': 112,
|
||||||
|
'On a pool with a long history this reads millions of log lines and can take a while. The pool keeps mining throughout.': 113,
|
||||||
|
'Failed to rebuild share statistics — the Kamado API did not respond': 114,
|
||||||
|
'Share statistics rebuilt from the CKPool log': 115,
|
||||||
|
'Share statistics left unchanged': 116,
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -113,6 +113,12 @@ export default {
|
|||||||
108: 'El puerto que solicitó ya estaba en uso, así que StartOS asignó otro. Apunte sus mineros al puerto asignado, o elija uno libre en Configurar.',
|
108: 'El puerto que solicitó ya estaba en uso, así que StartOS asignó otro. Apunte sus mineros al puerto asignado, o elija uno libre en Configurar.',
|
||||||
109: 'Puerto de red en el que publicar el stratum TLS de dominio público. El dominio adjuntado a la interfaz Stratum (TLS, dominio público) se publica en ESTE puerto (no en el que el sistema asigna para el acceso por IP), y StartOS emite un certificado de Let’s Encrypt para él: los mineros lo validan sin pegar nada. Para alcanzarlo desde internet también hay que habilitar la dirección pública de esa interfaz, que está desactivada por defecto. Consulte Estado del pool para ver los puertos y dominios realmente en uso.',
|
109: 'Puerto de red en el que publicar el stratum TLS de dominio público. El dominio adjuntado a la interfaz Stratum (TLS, dominio público) se publica en ESTE puerto (no en el que el sistema asigna para el acceso por IP), y StartOS emite un certificado de Let’s Encrypt para él: los mineros lo validan sin pegar nada. Para alcanzarlo desde internet también hay que habilitar la dirección pública de esa interfaz, que está desactivada por defecto. Consulte Estado del pool para ver los puertos y dominios realmente en uso.',
|
||||||
110: 'Puerto de red en el que publicar el stratum TLS de dominio público. El dominio adjuntado a la interfaz Stratum (TLS, dominio público) se publica en ESTE puerto, que puede diferir del que el sistema asigna para el acceso por IP, y StartOS emite un certificado de Let’s Encrypt para él: los mineros lo validan sin pegar nada. Consulte Estado del pool para ver los puertos y dominios realmente en uso.',
|
110: 'Puerto de red en el que publicar el stratum TLS de dominio público. El dominio adjuntado a la interfaz Stratum (TLS, dominio público) se publica en ESTE puerto, que puede diferir del que el sistema asigna para el acceso por IP, y StartOS emite un certificado de Let’s Encrypt para él: los mineros lo validan sin pegar nada. Consulte Estado del pool para ver los puertos y dominios realmente en uso.',
|
||||||
|
111: 'Reconstruir estadísticas de participaciones',
|
||||||
|
112: 'Vuelve a contar las estadísticas históricas de participaciones —la distribución de dificultad y los motivos de rechazo de la página Estadísticas— releyendo el registro de CKPool desde el principio. Úselo si esos totales parecen incorrectos o se han reiniciado. Los totales almacenados solo se sustituyen cuando el registro contabiliza más participaciones que ellos, así que esto puede recuperar historial pero nunca borrarlo.',
|
||||||
|
113: 'En un pool con un historial largo, esto lee millones de líneas de registro y puede tardar. El pool sigue minando mientras tanto.',
|
||||||
|
114: 'No se pudieron reconstruir las estadísticas: la API de Kamado no respondió',
|
||||||
|
115: 'Estadísticas de participaciones reconstruidas a partir del registro de CKPool',
|
||||||
|
116: 'Estadísticas de participaciones sin cambios',
|
||||||
},
|
},
|
||||||
de_DE: {
|
de_DE: {
|
||||||
0: '(noch nicht erzeugt — starten Sie den Dienst einmal)',
|
0: '(noch nicht erzeugt — starten Sie den Dienst einmal)',
|
||||||
@@ -226,6 +232,12 @@ export default {
|
|||||||
108: 'Der angeforderte Port war bereits belegt, daher hat StartOS einen anderen zugewiesen. Richten Sie Ihre Miner auf den zugewiesenen Port aus, oder wählen Sie unter „Konfigurieren“ einen freien Port.',
|
108: 'Der angeforderte Port war bereits belegt, daher hat StartOS einen anderen zugewiesen. Richten Sie Ihre Miner auf den zugewiesenen Port aus, oder wählen Sie unter „Konfigurieren“ einen freien Port.',
|
||||||
109: 'Netzwerk-Port, auf dem TLS-Stratum für eine öffentliche Domain veröffentlicht wird. Eine an die Schnittstelle „Stratum (TLS, öffentliche Domain)“ angehängte Domain wird auf DIESEM Port veröffentlicht (nicht auf dem, den das System für den IP-Zugriff zuweist), und StartOS stellt dafür ein Let’s-Encrypt-Zertifikat aus — Miner validieren es ohne eingefügtes Zertifikat. Für die Erreichbarkeit aus dem Internet muss zusätzlich die öffentliche Adresse dieser Schnittstelle aktiviert werden, die standardmäßig deaktiviert ist. Siehe „Pool-Status“ für die tatsächlich verwendeten Ports und Domains.',
|
109: 'Netzwerk-Port, auf dem TLS-Stratum für eine öffentliche Domain veröffentlicht wird. Eine an die Schnittstelle „Stratum (TLS, öffentliche Domain)“ angehängte Domain wird auf DIESEM Port veröffentlicht (nicht auf dem, den das System für den IP-Zugriff zuweist), und StartOS stellt dafür ein Let’s-Encrypt-Zertifikat aus — Miner validieren es ohne eingefügtes Zertifikat. Für die Erreichbarkeit aus dem Internet muss zusätzlich die öffentliche Adresse dieser Schnittstelle aktiviert werden, die standardmäßig deaktiviert ist. Siehe „Pool-Status“ für die tatsächlich verwendeten Ports und Domains.',
|
||||||
110: 'Netzwerk-Port, auf dem TLS-Stratum für eine öffentliche Domain veröffentlicht wird. Eine an die Schnittstelle „Stratum (TLS, öffentliche Domain)“ angehängte Domain wird auf DIESEM Port veröffentlicht, der sich von dem für den IP-Zugriff zugewiesenen unterscheiden kann, und StartOS stellt dafür ein Let’s-Encrypt-Zertifikat aus — Miner validieren es ohne eingefügtes Zertifikat. Siehe „Pool-Status“ für die tatsächlich verwendeten Ports und Domains.',
|
110: 'Netzwerk-Port, auf dem TLS-Stratum für eine öffentliche Domain veröffentlicht wird. Eine an die Schnittstelle „Stratum (TLS, öffentliche Domain)“ angehängte Domain wird auf DIESEM Port veröffentlicht, der sich von dem für den IP-Zugriff zugewiesenen unterscheiden kann, und StartOS stellt dafür ein Let’s-Encrypt-Zertifikat aus — Miner validieren es ohne eingefügtes Zertifikat. Siehe „Pool-Status“ für die tatsächlich verwendeten Ports und Domains.',
|
||||||
|
111: 'Share-Statistiken neu aufbauen',
|
||||||
|
112: 'Zählt die Allzeit-Share-Statistiken — die Schwierigkeitsverteilung und die Ablehnungsgründe auf der Statistikseite — neu, indem das CKPool-Protokoll von Anfang an erneut gelesen wird. Verwenden Sie dies, wenn diese Summen falsch aussehen oder zurückgesetzt wurden. Die gespeicherten Summen werden nur ersetzt, wenn das Protokoll mehr Shares ausweist als sie — es kann also Verlauf zurückholen, aber niemals löschen.',
|
||||||
|
113: 'Bei einem Pool mit langer Historie werden dabei Millionen Protokollzeilen gelesen, was eine Weile dauern kann. Der Pool mint währenddessen weiter.',
|
||||||
|
114: 'Share-Statistiken konnten nicht neu aufgebaut werden — die Kamado-API antwortete nicht',
|
||||||
|
115: 'Share-Statistiken aus dem CKPool-Protokoll neu aufgebaut',
|
||||||
|
116: 'Share-Statistiken unverändert',
|
||||||
},
|
},
|
||||||
pl_PL: {
|
pl_PL: {
|
||||||
0: '(jeszcze nie wygenerowano — uruchom usługę raz)',
|
0: '(jeszcze nie wygenerowano — uruchom usługę raz)',
|
||||||
@@ -339,6 +351,12 @@ export default {
|
|||||||
108: 'Żądany port był już zajęty, więc StartOS przydzielił inny. Skieruj górników na przydzielony port lub wybierz wolny w akcji Konfiguruj.',
|
108: 'Żądany port był już zajęty, więc StartOS przydzielił inny. Skieruj górników na przydzielony port lub wybierz wolny w akcji Konfiguruj.',
|
||||||
109: 'Port sieciowy, na którym publikowane jest stratum TLS domeny publicznej. Domena podłączona do interfejsu Stratum (TLS, domena publiczna) jest publikowana na TYM porcie (nie na tym, który system przydziela dla dostępu po IP), a StartOS wystawia dla niej certyfikat Let’s Encrypt — górnicy weryfikują go bez wklejania czegokolwiek. Aby był osiągalny z internetu, trzeba też włączyć publiczny adres tego interfejsu, domyślnie wyłączony. Zobacz Stan puli, aby poznać faktycznie używane porty i domeny.',
|
109: 'Port sieciowy, na którym publikowane jest stratum TLS domeny publicznej. Domena podłączona do interfejsu Stratum (TLS, domena publiczna) jest publikowana na TYM porcie (nie na tym, który system przydziela dla dostępu po IP), a StartOS wystawia dla niej certyfikat Let’s Encrypt — górnicy weryfikują go bez wklejania czegokolwiek. Aby był osiągalny z internetu, trzeba też włączyć publiczny adres tego interfejsu, domyślnie wyłączony. Zobacz Stan puli, aby poznać faktycznie używane porty i domeny.',
|
||||||
110: 'Port sieciowy, na którym publikowane jest stratum TLS domeny publicznej. Domena podłączona do interfejsu Stratum (TLS, domena publiczna) jest publikowana na TYM porcie, który może różnić się od przydzielonego dla dostępu po IP, a StartOS wystawia dla niej certyfikat Let’s Encrypt — górnicy weryfikują go bez wklejania czegokolwiek. Zobacz Stan puli, aby poznać faktycznie używane porty i domeny.',
|
110: 'Port sieciowy, na którym publikowane jest stratum TLS domeny publicznej. Domena podłączona do interfejsu Stratum (TLS, domena publiczna) jest publikowana na TYM porcie, który może różnić się od przydzielonego dla dostępu po IP, a StartOS wystawia dla niej certyfikat Let’s Encrypt — górnicy weryfikują go bez wklejania czegokolwiek. Zobacz Stan puli, aby poznać faktycznie używane porty i domeny.',
|
||||||
|
111: 'Odbuduj statystyki udziałów',
|
||||||
|
112: 'Ponownie zlicza statystyki udziałów od początku istnienia puli — rozkład trudności i powody odrzuceń na stronie Statystyki — czytając dziennik CKPool od początku. Użyj tego, jeśli te sumy wyglądają błędnie lub zostały wyzerowane. Zapisane sumy są zastępowane tylko wtedy, gdy dziennik obejmuje więcej udziałów niż one, więc ta operacja może przywrócić historię, ale nigdy jej nie usunie.',
|
||||||
|
113: 'W puli z długą historią oznacza to odczyt milionów wierszy dziennika i może chwilę potrwać. Pula przez cały czas kopie dalej.',
|
||||||
|
114: 'Nie udało się odbudować statystyk udziałów — API Kamado nie odpowiedziało',
|
||||||
|
115: 'Statystyki udziałów odbudowane z dziennika CKPool',
|
||||||
|
116: 'Statystyki udziałów bez zmian',
|
||||||
},
|
},
|
||||||
fr_FR: {
|
fr_FR: {
|
||||||
0: '(pas encore généré — démarrez le service une fois)',
|
0: '(pas encore généré — démarrez le service une fois)',
|
||||||
@@ -452,5 +470,11 @@ export default {
|
|||||||
108: 'Le port demandé était déjà utilisé, StartOS en a donc attribué un autre. Pointez vos mineurs vers le port attribué, ou choisissez-en un libre dans Configurer.',
|
108: 'Le port demandé était déjà utilisé, StartOS en a donc attribué un autre. Pointez vos mineurs vers le port attribué, ou choisissez-en un libre dans Configurer.',
|
||||||
109: 'Port réseau sur lequel publier le stratum TLS pour domaine public. Un domaine rattaché à l’interface Stratum (TLS, domaine public) est publié sur CE port (et non sur celui que le système attribue pour l’accès par IP), et StartOS émet un certificat Let’s Encrypt — les mineurs le valident sans rien coller. Pour y accéder depuis internet, il faut également activer l’adresse publique de cette interface, désactivée par défaut. Voir État du pool pour les ports et domaines réellement utilisés.',
|
109: 'Port réseau sur lequel publier le stratum TLS pour domaine public. Un domaine rattaché à l’interface Stratum (TLS, domaine public) est publié sur CE port (et non sur celui que le système attribue pour l’accès par IP), et StartOS émet un certificat Let’s Encrypt — les mineurs le valident sans rien coller. Pour y accéder depuis internet, il faut également activer l’adresse publique de cette interface, désactivée par défaut. Voir État du pool pour les ports et domaines réellement utilisés.',
|
||||||
110: 'Port réseau sur lequel publier le stratum TLS pour domaine public. Un domaine rattaché à l’interface Stratum (TLS, domaine public) est publié sur CE port, qui peut différer de celui attribué par le système pour l’accès par IP, et StartOS émet un certificat Let’s Encrypt — les mineurs le valident sans rien coller. Voir État du pool pour les ports et domaines réellement utilisés.',
|
110: 'Port réseau sur lequel publier le stratum TLS pour domaine public. Un domaine rattaché à l’interface Stratum (TLS, domaine public) est publié sur CE port, qui peut différer de celui attribué par le système pour l’accès par IP, et StartOS émet un certificat Let’s Encrypt — les mineurs le valident sans rien coller. Voir État du pool pour les ports et domaines réellement utilisés.',
|
||||||
|
111: 'Reconstruire les statistiques de parts',
|
||||||
|
112: 'Recompte les statistiques de parts depuis toujours — la répartition des difficultés et les motifs de rejet de la page Statistiques — en relisant le journal de CKPool depuis le début. À utiliser si ces totaux semblent erronés ou remis à zéro. Les totaux enregistrés ne sont remplacés que si le journal comptabilise davantage de parts qu’eux : cette action peut donc restaurer de l’historique, jamais l’effacer.',
|
||||||
|
113: 'Sur un pool à longue histoire, cela lit des millions de lignes de journal et peut prendre un certain temps. Le pool continue de miner pendant ce temps.',
|
||||||
|
114: 'Échec de la reconstruction des statistiques de parts — l’API Kamado n’a pas répondu',
|
||||||
|
115: 'Statistiques de parts reconstruites à partir du journal de CKPool',
|
||||||
|
116: 'Statistiques de parts inchangées',
|
||||||
},
|
},
|
||||||
} satisfies Record<string, LangDict>
|
} satisfies Record<string, LangDict>
|
||||||
@@ -3,11 +3,12 @@ import { v0_2_0 } from './v0_2_0'
|
|||||||
import { v0_2_1 } from './v0_2_1'
|
import { v0_2_1 } from './v0_2_1'
|
||||||
import { v0_2_2 } from './v0_2_2'
|
import { v0_2_2 } from './v0_2_2'
|
||||||
import { v0_2_3 } from './v0_2_3'
|
import { v0_2_3 } from './v0_2_3'
|
||||||
|
import { v0_2_4 } from './v0_2_4'
|
||||||
|
|
||||||
// The current version must be listed first; `other` carries the rest of the
|
// The current version must be listed first; `other` carries the rest of the
|
||||||
// graph so StartOS can find a migration path from whatever version an existing
|
// graph so StartOS can find a migration path from whatever version an existing
|
||||||
// install is currently on.
|
// install is currently on.
|
||||||
export const versionGraph = VersionGraph.of({
|
export const versionGraph = VersionGraph.of({
|
||||||
current: v0_2_3,
|
current: v0_2_4,
|
||||||
other: [v0_2_0, v0_2_1, v0_2_2],
|
other: [v0_2_0, v0_2_1, v0_2_2, v0_2_3],
|
||||||
})
|
})
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import { VersionInfo } from '@start9labs/start-sdk'
|
||||||
|
|
||||||
|
export const v0_2_4 = VersionInfo.of({
|
||||||
|
version: '0.2.4:0',
|
||||||
|
releaseNotes: {
|
||||||
|
en_US:
|
||||||
|
'Fixes a bug that could wipe the all-time share statistics — the difficulty distribution and rejection reasons on the Stats page. Those counters are restored from the database when the service starts, but the log reader that updates them was starting at the same moment, and the first share it saw could save a nearly empty set of counters over the accumulated history, which was then read back as the new total. The restore now finishes before the log reader starts, and the counters can no longer be written before they have been read. Found blocks, best-share records and the proof-of-work page were never affected. If your statistics were already lost, the new "Rebuild Share Statistics" action recounts them from CKPool’s log, which still holds every share; it only replaces the stored totals when the log accounts for more shares than they do, so it can restore history but never erase it.',
|
||||||
|
es_ES:
|
||||||
|
'Corrige un fallo que podía borrar las estadísticas históricas de participaciones: la distribución de dificultad y los motivos de rechazo de la página Estadísticas. Esos contadores se restauran desde la base de datos al iniciar el servicio, pero el lector del registro que los actualiza arrancaba en ese mismo momento, y la primera participación que veía podía guardar unos contadores casi vacíos encima del historial acumulado, que luego se releía como el nuevo total. Ahora la restauración termina antes de que arranque el lector del registro, y los contadores ya no pueden escribirse antes de haberse leído. Los bloques encontrados, los registros de mejores participaciones y la página de prueba de trabajo nunca se vieron afectados. Si sus estadísticas ya se perdieron, la nueva acción «Reconstruir estadísticas de participaciones» las vuelve a contar a partir del registro de CKPool, que conserva todas las participaciones; solo sustituye los totales almacenados cuando el registro contabiliza más participaciones que ellos, así que puede recuperar historial pero nunca borrarlo.',
|
||||||
|
de_DE:
|
||||||
|
'Behebt einen Fehler, der die Allzeit-Share-Statistiken löschen konnte — die Schwierigkeitsverteilung und die Ablehnungsgründe auf der Statistikseite. Diese Zähler werden beim Start des Dienstes aus der Datenbank wiederhergestellt, doch der Protokolleser, der sie aktualisiert, startete im selben Moment, und der erste Share, den er sah, konnte einen nahezu leeren Zählerstand über den angesammelten Verlauf speichern, der anschließend als neuer Gesamtstand zurückgelesen wurde. Die Wiederherstellung wird nun abgeschlossen, bevor der Protokolleser startet, und die Zähler können nicht mehr geschrieben werden, bevor sie gelesen wurden. Gefundene Blöcke, Bestwert-Aufzeichnungen und die Arbeitsnachweis-Seite waren nie betroffen. Falls Ihre Statistiken bereits verloren gegangen sind, zählt die neue Aktion „Share-Statistiken neu aufbauen“ sie aus dem CKPool-Protokoll neu, das weiterhin jeden Share enthält; sie ersetzt die gespeicherten Summen nur, wenn das Protokoll mehr Shares ausweist, kann also Verlauf zurückholen, aber niemals löschen.',
|
||||||
|
pl_PL:
|
||||||
|
'Naprawia błąd, który mógł skasować statystyki udziałów od początku istnienia puli — rozkład trudności i powody odrzuceń na stronie Statystyki. Te liczniki są odtwarzane z bazy danych przy starcie usługi, ale czytnik dziennika, który je aktualizuje, uruchamiał się w tej samej chwili, a pierwszy zobaczony udział mógł zapisać niemal puste liczniki na zgromadzonej historii, którą następnie odczytywano jako nową sumę. Odtwarzanie kończy się teraz przed uruchomieniem czytnika dziennika, a liczniki nie mogą już zostać zapisane, zanim nie zostaną wczytane. Znalezione bloki, rekordy najlepszych udziałów i strona dowodu pracy nigdy nie były tym dotknięte. Jeśli Twoje statystyki już przepadły, nowa akcja „Odbuduj statystyki udziałów” przelicza je na nowo z dziennika CKPool, który wciąż zawiera każdy udział; zastępuje zapisane sumy tylko wtedy, gdy dziennik obejmuje więcej udziałów, więc może przywrócić historię, ale nigdy jej nie usunie.',
|
||||||
|
fr_FR:
|
||||||
|
'Corrige un bogue qui pouvait effacer les statistiques de parts depuis toujours — la répartition des difficultés et les motifs de rejet de la page Statistiques. Ces compteurs sont restaurés depuis la base de données au démarrage du service, mais le lecteur de journal qui les met à jour démarrait au même instant, et la première part qu’il voyait pouvait enregistrer des compteurs presque vides par-dessus l’historique accumulé, ensuite relu comme le nouveau total. La restauration se termine désormais avant le démarrage du lecteur de journal, et les compteurs ne peuvent plus être écrits avant d’avoir été lus. Les blocs trouvés, les records de meilleures parts et la page de preuve de travail n’ont jamais été affectés. Si vos statistiques ont déjà été perdues, la nouvelle action « Reconstruire les statistiques de parts » les recompte à partir du journal de CKPool, qui contient encore chaque part ; elle ne remplace les totaux enregistrés que si le journal comptabilise davantage de parts, elle peut donc restaurer de l’historique, jamais l’effacer.',
|
||||||
|
},
|
||||||
|
// No data migration in either direction. The fix lives entirely in the
|
||||||
|
// service binary — the restore now completes before ingestion starts — and
|
||||||
|
// the recovery action only rewrites rows the service already owns. Nothing
|
||||||
|
// stored changes shape, so a downgrade has nothing to undo.
|
||||||
|
migrations: {},
|
||||||
|
})
|
||||||
Reference in new issue
Block a user