Bug 40915: Add enhanced debug logging for empty critical fields in SIP message parsing

This patch adds debug logging to C4::SIP::Sip::MsgType::_initialize() to help
identify when critical fields (patron_id, item_id) are parsed as empty values.

Empty critical fields in SIP messages can later cause DBIx::Class constraint
errors when passed to Koha::Objects->find() operations, generating confusing
'Odd number of elements in anonymous hash' errors in SIP server logs.

The enhanced logging helps administrators identify the root cause by logging
when empty patron_id or item_id fields are detected during message parsing.

To test:
1. Apply regression tests patch first
2. Run:
   $ ktd --shell
  k$ prove t/db_dependent/SIP/MsgType.t
=> FAIL: Debug logging tests fail (no enhanced logging present)
3. Apply this patch
4. Run:
   $ ktd --shell
  k$ prove t/db_dependent/SIP/MsgType.t
=> SUCCESS: All tests pass, debug logging works correctly
5. Sign off :-D

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
Tomás Cohen Arazi 2025-09-30 16:33:19 -03:00 committed by Lucas Gass
parent 499b23d63c
commit 220fdce180
No known key found for this signature in database
GPG Key ID: 60B447398B0D36CA
1 changed files with 17 additions and 1 deletions

View File

@ -352,7 +352,23 @@ sub _initialize {
$self->{fields}->{$fn}, $self->{name}, $msg
);
} else {
$self->{fields}->{$fn} = substr( $field, 2 );
my $field_value = substr( $field, 2 );
$self->{fields}->{$fn} = $field_value;
# Enhanced debug logging for empty critical fields that could cause constraint errors
if ( defined $field_value && $field_value eq '' ) {
if ( $fn eq FID_PATRON_ID ) {
siplog(
"LOG_DEBUG", "Empty patron_id detected in %s message - could cause constraint errors",
$self->{name}
);
} elsif ( $fn eq FID_ITEM_ID ) {
siplog(
"LOG_DEBUG", "Empty item_id detected in %s message - could cause constraint errors",
$self->{name}
);
}
}
}
}