Noticed in production, when C4::SIP::ILS::Patron->new is passed a $patron_id that is not defined or empty -or any processing makes it like that- (e.g. faulty plugins, malformed SIP requests) logs get flooded with DBIx::Class errors and Perl warnings when it should never reach the ORM with a query because there's nothing to search for. Similar to bug 40910 for Item->new(), the Patron constructor should validate input early and return gracefully without generating warnings for undefined/empty patron identifiers. Expected behavior: Silent return for invalid input, proper debug logging for troubleshooting Actual behavior: Warning spam in SIP server logs, potential DBIx::Class constraint errors This affects SIP server stability and makes log analysis difficult due to noise from invalid requests.
Created attachment 187109 [details] [review] Bug 40911: Regression tests
Created attachment 187110 [details] [review] Bug 40911: Fix SIP Patron->new() warnings with undefined/empty patron_id This patch prevents warnings when C4::SIP::ILS::Patron->new() receives undefined, empty, or whitespace-only patron_id values that could occur from faulty plugins or malformed SIP requests. Changes: - Add early validation for undefined/empty patron_id before processing - Add validation for hashref keys to ensure they contain valid values - Add better debug logging for empty hashref scenarios - Prevent potential siplog formatting issues with hashref patron_id - No functional changes - behavior preserved for valid patron identifiers Test plan: 1. Apply the regression tests 2. Run: $ ktd --shell k$ prove t/db_dependent/SIP/Patron.t => FAIL: Tests fail! Warning validation expects no warnings but warnings occur 3. Apply this patch 4. Repeat step 2 => SUCCESS: Tests pass! No warnings generated for invalid input 5. Verify no warnings in SIP logs for malformed requests 6. Sign off :-D