Il diario di sincronizzazione, e una corsa terminale che realmente è congelato

Featurekamo-shared-library
Spegnimento
27 agosto 2026 alle ore 19:15 UTC
Autore
Kamo
Impegno
1608785

BL1 Task 5, metà bibliotecario condiviso. Cinque numeri di giornale, tre entità e tre Repositori sotto i piedi. Nessun stereotipo: BillingWormGuard è una classe finale semplice con un costruttore privato, e CondividiLibBeanSafety Il test e' verde. Due miglioramenti deliberati sulla fonte del libro paga: 1. LA GUARDA TERMINALE-RUN DOCUMENTI DI PAYROLL E NON HA (difetto 5). PayrollSyncRun's javadoc afferma "una corsa terminale non è mai riscritta" con Niente dietro. BillingSyncRun lo fa rispettare. Il piano specifica la guardia come nudo letto del campo corrente: se (state!= null && state!= BillingSyncRunState.RUNNING) { lanciare ... } Quella versione è WRONG e avrebbe rotto la produzione. @Preaggiornamento incendi Dopo che il chiamante ha mutato l'entità, così vede lo stato terminale BillingSyncJournal.complete() ha appena assegnato e rifiuta quello scrivere riga esiste per ricevere — completo() getterebbe su ogni corsa e vicinoStaleRuns() su ogni spazzata. La guardia quindi si confronta con la stato come LOADED, catturato da un @PostLoad snapshot in un campo @Transient. A riga mai caricata (un fresco `new`) viene giudicato sul suo stato attuale, che mantiene Il test del piano e' significativo. 2. dbNow() (il gap flagged di Self-Review). Payroll legge l'orologio del database TimecardPunchRepository; InvoicingService non ha un tavolo da pugno. Aggiunto E' una cosa da fare. @Query (valore = "SELECT CAST(now() AS timestamp)", nativoQuery = true) — con il CAST standard SQL, perché un `:` cast è silenziosamente schiacciato: Hibernate legge `: ` come prefisso denominato-parametro e si trasforma ora():: timestamp in : timestamp. BillingSyncJournal è il suo unico chiamante e l'unico vero scrittore si è verificatoAt; le entità' @PrePersist LocalDateTime.now() i fallback sono mantenuti come guardie di ultima scelta e documentate come tali (difetto 6). Entrambe le entità WORM sono servite da repository NARROW che estendono Repository, non JpaRepository, quindi non c'è alcuna eliminazione batch per camminare oltre @PreRemove. Prova TDD — RED primo (compilazione, prima che esistesse una delle classi): [ERROR] E' il momento giusto. non può trovare il simbolo [ERROR] simbolo: classe BillingSyncIssue Posizione: classe... ... 20 ulteriori errori "non possono trovare il simbolo" GREEN dopo l'attuazione: Test eseguiti: 7, guasti: 0, errori: 0, saltato: 0 Mutazioni, ogni corsa da un `git archivio isolato HEAD` copia con la propria target/ e il proprio -Dmaven.repo.local (questo checkout è condiviso con altri sessioni e una suite rossa qui di solito è la fase rossa di qualcun altro): MUTAZIONE D — esecuzioneTerminal L'immortabilità è stata sostituita con `return` (la mutazione dei nomi Step 6 del piano): I test vengono eseguiti: 7, fallimenti: 2, errori: 0, saltati: 0 < < ̧ E' il momento giusto. Traduzione: Java.lang. AssertionError: Aspettatevi il codice per alzare un lanciabile. E' il momento giusto. E' il momento giusto. Traduzione: Java.lang. AssertionError: Aspettatevi il codice per alzare un lanciabile. E' il momento giusto. MUTAZIONE E — la guardia riscritta EXACTLY come il piano lo specifica, cioè un nudo lettura di `state` senza @PostLoad snapshot. Questa è la prova che la versione del piano è rotta: I test vengono eseguiti: 7, fallimenti: 1, errori: 0, saltati: 0 < < ̧ E' il momento giusto. Traduzione: Java.lang. AssertionError: Aspettatevi il codice per non alzare un buttabile ma catturato Non e' vero. BillingSyncRun null è SUCCEEDED ed è prova di una corsa completa; non può essere riscritta. E' il momento giusto. E' il momento giusto. MUTATION F — BillingWormGuard.reject ha fatto un no-op: I test vengono eseguiti: 7, fallimenti: 4, errori: 0, saltato: 0 < < ̧ Non e' vero. -- Aspettatevi il codice per alzare un lanciabile. Non e' vero. -- Aspettatevi il codice per alzare un lanciabile. Non e' vero. -- Aspettatevi il codice per alzare un lanciabile. Non e' vero. -- Aspettatevi il codice per alzare un lanciabile. Tutti e tre tornati. Suite completa biblioteca dopo: Test eseguiti: 2288, guasti: 0, errori: 0, saltato: 0 COSTRUZIONE <versione> non toccato a 1.6.0. Non spinto — Task 9 atterra DDL prima.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo