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,8 +160,7 @@ 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",
ERROR("persist: WAL path %s is on NFS — unsafe for fsync durability",
p->wal_path);
return -EREMOTE;
}
@ -171,9 +170,8 @@ 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",
WARN("WAL/snapshot stored unencrypted in %s — "
"ensure filesystem is encrypted if job payloads contain sensitive data",
p->wal_path);
return 0;
}
@ -560,8 +558,7 @@ 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",
ERROR("apply_wal_entry: payload_len %u exceeds MAX_WAL_PAYLOAD_BYTES %u",
hdr->payload_len, MAX_WAL_PAYLOAD_BYTES);
return -EMSGSIZE;
}
@ -575,9 +572,8 @@ 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",
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,8 +662,7 @@ 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",
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",
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,17 +694,15 @@ 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",
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",
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,8 +721,7 @@ 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",
WARN("persist_recover: short payload read in %s at offset %u",
seg_path, seg_off);
free(payload);
break;
@ -740,9 +730,8 @@ 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",
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,8 +759,7 @@ 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",
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);
@ -834,8 +822,7 @@ 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",
ERROR("persist_recover: failed to load snapshot %s: %s",
snap_file, strerror(-rc));
return rc;
}
@ -883,8 +870,7 @@ 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",
TRACE("WAL entry: type=%u lsn=%lu term=%lu payload_len=%u crc=%08x",
hdr->type,
(unsigned long)hdr->lsn,
(unsigned long)hdr->term,