fix(channelserver): add error logging to silently ignored repo calls

19 repository calls across 8 handler files were silently discarding
errors with `_ =`, making database failures invisible. Add structured
logging at appropriate levels: Error for write operations where data
loss may occur (guild saves, member updates), Warn for read operations
where handlers continue with zero-value defaults (application checks,
warehouse loads, item box queries). No control flow changes.
This commit is contained in:
Houmgaor
2026-02-21 17:37:29 +01:00
parent 6fbd294575
commit 8fe6f60813
8 changed files with 72 additions and 23 deletions

View File

@@ -51,13 +51,19 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
guild.LeaderCharID = guildMembers[i].CharID
guildMembers[0].OrderIndex = guildMembers[i].OrderIndex
guildMembers[i].OrderIndex = 1
_ = s.server.guildRepo.SaveMember(guildMembers[0])
_ = s.server.guildRepo.SaveMember(guildMembers[i])
if err := s.server.guildRepo.SaveMember(guildMembers[0]); err != nil {
s.logger.Error("Failed to save former leader member data", zap.Error(err))
}
if err := s.server.guildRepo.SaveMember(guildMembers[i]); err != nil {
s.logger.Error("Failed to save new leader member data", zap.Error(err))
}
bf.WriteUint32(guildMembers[i].CharID)
break
}
}
_ = s.server.guildRepo.Save(guild)
if err := s.server.guildRepo.Save(guild); err != nil {
s.logger.Error("Failed to save guild after leadership resign", zap.Error(err))
}
}
case mhfpacket.OperateGuildApply:
err = s.server.guildRepo.CreateApplication(guild.ID, s.charID, s.charID, GuildApplicationTypeApplied)
@@ -76,9 +82,11 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
if err != nil {
response = 0
} else {
_ = s.server.mailRepo.SendMail(0, s.charID, "Withdrawal",
if err := s.server.mailRepo.SendMail(0, s.charID, "Withdrawal",
fmt.Sprintf("You have withdrawn from 「%s」.", guild.Name),
0, 0, false, true)
0, 0, false, true); err != nil {
s.logger.Warn("Failed to send guild withdrawal notification", zap.Error(err))
}
}
bf.WriteUint32(uint32(response))
case mhfpacket.OperateGuildDonateRank:
@@ -101,7 +109,9 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
return
}
guild.Comment, _ = stringsupport.SJISToUTF8(pkt.Data2.ReadNullTerminatedBytes())
_ = s.server.guildRepo.Save(guild)
if err := s.server.guildRepo.Save(guild); err != nil {
s.logger.Error("Failed to save guild comment", zap.Error(err))
}
case mhfpacket.OperateGuildUpdateMotto:
if !characterGuildInfo.IsLeader && !characterGuildInfo.IsSubLeader() {
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
@@ -110,7 +120,9 @@ func handleMsgMhfOperateGuild(s *Session, p mhfpacket.MHFPacket) {
_ = pkt.Data1.ReadUint16()
guild.SubMotto = pkt.Data1.ReadUint8()
guild.MainMotto = pkt.Data1.ReadUint8()
_ = s.server.guildRepo.Save(guild)
if err := s.server.guildRepo.Save(guild); err != nil {
s.logger.Error("Failed to save guild motto", zap.Error(err))
}
case mhfpacket.OperateGuildRenamePugi1:
handleRenamePugi(s, pkt.Data2, guild, 1)
case mhfpacket.OperateGuildRenamePugi2:
@@ -165,7 +177,9 @@ func handleRenamePugi(s *Session, bf *byteframe.ByteFrame, guild *Guild, num int
default:
guild.PugiName3 = name
}
_ = s.server.guildRepo.Save(guild)
if err := s.server.guildRepo.Save(guild); err != nil {
s.logger.Error("Failed to save guild pugi name", zap.Error(err))
}
}
func handleChangePugi(s *Session, outfit uint8, guild *Guild, num int) {
@@ -177,7 +191,9 @@ func handleChangePugi(s *Session, outfit uint8, guild *Guild, num int) {
case 3:
guild.PugiOutfit3 = outfit
}
_ = s.server.guildRepo.Save(guild)
if err := s.server.guildRepo.Save(guild); err != nil {
s.logger.Error("Failed to save guild pugi outfit", zap.Error(err))
}
}
func handleDonateRP(s *Session, amount uint16, guild *Guild, _type int) []byte {
@@ -299,7 +315,9 @@ func handleMsgMhfOperateGuildMember(s *Session, p mhfpacket.MHFPacket) {
if err != nil {
doAckSimpleFail(s, pkt.AckHandle, make([]byte, 4))
} else {
_ = s.server.mailRepo.SendMail(mail.SenderID, mail.RecipientID, mail.Subject, mail.Body, 0, 0, false, true)
if err := s.server.mailRepo.SendMail(mail.SenderID, mail.RecipientID, mail.Subject, mail.Body, 0, 0, false, true); err != nil {
s.logger.Warn("Failed to send guild member operation mail", zap.Error(err))
}
if s.server.Registry != nil {
s.server.Registry.NotifyMailToCharID(pkt.CharID, s, &mail)
} else {