core/txpool/locals: nil journal writer before checking close error (#35300)
Some checks are pending
/ Linux Build (push) Waiting to run
/ Linux Build (arm) (push) Waiting to run
/ Keeper Build (push) Waiting to run
/ Windows Build (push) Waiting to run
/ Docker Image (push) Waiting to run

This PR clears `journal.writer` immediately after `Close()` in `rotate` and `setupWriter`,
before checking the error. This prevents leaving a stale file handle that could be reused
if close fails.

---------

Co-authored-by: Bosul Mun <bsbs8645@snu.ac.kr>
This commit is contained in:
cui 2026-07-06 22:10:25 +08:00 committed by GitHub
parent a8a7116395
commit e5c5e1897d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -119,10 +119,11 @@ func (journal *journal) load(add func([]*types.Transaction) []error) error {
func (journal *journal) setupWriter() error {
if journal.writer != nil {
if err := journal.writer.Close(); err != nil {
err := journal.writer.Close()
journal.writer = nil
if err != nil {
return err
}
journal.writer = nil
}
// Re-open the journal file for appending
@ -152,10 +153,11 @@ func (journal *journal) insert(tx *types.Transaction) error {
func (journal *journal) rotate(all map[common.Address]types.Transactions) error {
// Close the current journal (if any is open)
if journal.writer != nil {
if err := journal.writer.Close(); err != nil {
err := journal.writer.Close()
journal.writer = nil
if err != nil {
return err
}
journal.writer = nil
}
// Generate a new journal with the contents of the current pool
replacement, err := os.OpenFile(journal.path+".new", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)