fix: use tlog macros consistently in persist.c

Replace all fprintf(stderr,...) calls with INFO/WARN/ERROR/TRACE so
persist.c output appears in the controller's structured log rather than
mixing plain text on stderr with tlog-formatted output.
This commit is contained in:
Rongsong Shen 2026-05-08 07:17:35 +00:00
parent 7e4528a0b9
commit b80ca3deaa

View file

@ -160,9 +160,8 @@ int persist_init(persist_t* p, persist_config_t* cfg, cluster_t* c)
struct statfs sfs;
if (statfs(p->wal_path, &sfs) == 0 &&
(unsigned long)sfs.f_type == (unsigned long)NFS_SUPER_MAGIC) {
fprintf(stderr,
"persist: WAL path %s is on NFS — unsafe for fsync durability\n",
p->wal_path);
ERROR("persist: WAL path %s is on NFS — unsafe for fsync durability",
p->wal_path);
return -EREMOTE;
}
@ -171,10 +170,9 @@ int persist_init(persist_t* p, persist_config_t* cfg, cluster_t* c)
pthread_cond_init(&p->checkpoint_done, NULL);
repl_init(&p->repl); /* P2-4: fan-out replicator lifecycle */
fprintf(stderr,
"INFO: WAL/snapshot stored unencrypted in %s — "
"ensure filesystem is encrypted if job payloads contain sensitive data\n",
p->wal_path);
WARN("WAL/snapshot stored unencrypted in %s — "
"ensure filesystem is encrypted if job payloads contain sensitive data",
p->wal_path);
return 0;
}
@ -560,9 +558,8 @@ int apply_wal_entry(persist_t* p, const wal_entry_hdr_t* hdr, const void* payloa
/* Reject oversized payloads BEFORE any allocation */
if (hdr->payload_len > MAX_WAL_PAYLOAD_BYTES) {
fprintf(stderr,
"apply_wal_entry: payload_len %u exceeds MAX_WAL_PAYLOAD_BYTES %u\n",
hdr->payload_len, MAX_WAL_PAYLOAD_BYTES);
ERROR("apply_wal_entry: payload_len %u exceeds MAX_WAL_PAYLOAD_BYTES %u",
hdr->payload_len, MAX_WAL_PAYLOAD_BYTES);
return -EMSGSIZE;
}
@ -575,10 +572,9 @@ int apply_wal_entry(persist_t* p, const wal_entry_hdr_t* hdr, const void* payloa
* compatibility — an older controller can boot on WAL written by a newer
* one without hard-failing on unrecognised entry types. */
if (hdr->type > WAL_ENTRY_TYPE_MAX) {
fprintf(stderr,
"WARN apply_wal_entry: unknown type %u > WAL_ENTRY_TYPE_MAX %u"
" (lsn=%" PRIu64 ") — skipping for forward compatibility\n",
hdr->type, WAL_ENTRY_TYPE_MAX, hdr->lsn);
WARN("apply_wal_entry: unknown type %u > WAL_ENTRY_TYPE_MAX %u"
" (lsn=%" PRIu64 ") — skipping for forward compatibility",
hdr->type, WAL_ENTRY_TYPE_MAX, hdr->lsn);
return 0;
}
@ -666,9 +662,8 @@ static int replay_wal(persist_t* p, uint64_t from_lsn)
int fd = open(seg_path, O_RDONLY);
if (fd < 0) {
fprintf(stderr,
"persist_recover: WARNING: cannot open segment %s: %s\n",
seg_path, strerror(errno));
WARN("persist_recover: cannot open segment %s: %s",
seg_path, strerror(errno));
continue;
}
@ -681,11 +676,9 @@ static int replay_wal(persist_t* p, uint64_t from_lsn)
if (hn == 0)
break; /* clean end of segment */
if (hn < (ssize_t)sizeof(hdr)) {
if (hn < 0) {
fprintf(stderr,
"persist_recover: WARNING: read error in %s at offset %u: %s\n",
seg_path, seg_off, strerror(errno));
}
if (hn < 0)
WARN("persist_recover: read error in %s at offset %u: %s",
seg_path, seg_off, strerror(errno));
break; /* truncated or pre-allocated zeros */
}
@ -701,18 +694,16 @@ static int replay_wal(persist_t* p, uint64_t from_lsn)
* e.g. across a segment boundary after checkpoint trim). */
if (hdr.prev_crc != WAL_CRC_NONE && last_crc != WAL_CRC_NONE &&
hdr.prev_crc != last_crc) {
fprintf(stderr,
"persist_recover: WARNING: CRC chain break at start of %s "
"(prev_crc=%08x expected=%08x); stopping replay\n",
seg_path, hdr.prev_crc, last_crc);
WARN("persist_recover: CRC chain break at start of %s "
"(prev_crc=%08x expected=%08x); stopping replay",
seg_path, hdr.prev_crc, last_crc);
break;
}
} else {
if (hdr.prev_crc != last_crc) {
fprintf(stderr,
"persist_recover: WARNING: CRC chain break in %s at offset %u "
"(prev_crc=%08x expected=%08x); stopping replay at last good entry\n",
seg_path, seg_off, hdr.prev_crc, last_crc);
WARN("persist_recover: CRC chain break in %s at offset %u "
"(prev_crc=%08x expected=%08x); stopping replay at last good entry",
seg_path, seg_off, hdr.prev_crc, last_crc);
break;
}
}
@ -730,9 +721,8 @@ static int replay_wal(persist_t* p, uint64_t from_lsn)
ssize_t pn = pread(fd, payload, hdr.payload_len,
(off_t)(seg_off + sizeof(hdr)));
if (pn != (ssize_t)hdr.payload_len) {
fprintf(stderr,
"persist_recover: WARNING: short payload read in %s at offset %u\n",
seg_path, seg_off);
WARN("persist_recover: short payload read in %s at offset %u",
seg_path, seg_off);
free(payload);
break;
}
@ -740,10 +730,9 @@ static int replay_wal(persist_t* p, uint64_t from_lsn)
}
if (hdr.crc != expected_crc) {
fprintf(stderr,
"persist_recover: WARNING: CRC mismatch in %s at offset %u "
"(got=%08x expected=%08x); stopping replay\n",
seg_path, seg_off, hdr.crc, expected_crc);
WARN("persist_recover: CRC mismatch in %s at offset %u "
"(got=%08x expected=%08x); stopping replay",
seg_path, seg_off, hdr.crc, expected_crc);
free(payload);
break;
}
@ -770,9 +759,8 @@ static int replay_wal(persist_t* p, uint64_t from_lsn)
/* Unknown future entry types: log and skip */
if (hdr.type > WAL_CHECKPOINT) {
fprintf(stderr,
"persist_recover: WARNING: unknown WAL entry type %u at LSN %lu; skipping\n",
hdr.type, (unsigned long)hdr.lsn);
WARN("persist_recover: unknown WAL entry type %u at LSN %lu; skipping",
hdr.type, (unsigned long)hdr.lsn);
free(payload);
seg_off += (uint32_t)(sizeof(hdr) + hdr.payload_len);
continue;
@ -834,9 +822,8 @@ int persist_recover(persist_t* p)
if (snap_lsn > 0 && snap_file[0] != '\0') {
int rc = load_snapshot(p, snap_file, snap_lsn);
if (rc != 0) {
fprintf(stderr,
"persist_recover: failed to load snapshot %s: %s\n",
snap_file, strerror(-rc));
ERROR("persist_recover: failed to load snapshot %s: %s",
snap_file, strerror(-rc));
return rc;
}
/* checkpoint_lsn and current_lsn set by load_snapshot */
@ -883,13 +870,12 @@ int persist_wal_sync_append(persist_t* p, uint32_t type,
void persist_log_entry_metadata(const wal_entry_hdr_t* hdr)
{
fprintf(stderr,
"WAL entry: type=%u lsn=%lu term=%lu payload_len=%u crc=%08x\n",
hdr->type,
(unsigned long)hdr->lsn,
(unsigned long)hdr->term,
hdr->payload_len,
hdr->crc);
TRACE("WAL entry: type=%u lsn=%lu term=%lu payload_len=%u crc=%08x",
hdr->type,
(unsigned long)hdr->lsn,
(unsigned long)hdr->term,
hdr->payload_len,
hdr->crc);
}
/* ------------------------------------------------------------------ */