Ran into something odd today: When you have a 'holds per record' setting of 999 in your circulation conditions and try to place a hold in the staff client, you will get an 'internal server error' under Plack after looking up the patron to place the hold for. To test: - Set circulation conditions - holds per record = 999 - Search for record with items - Go to the holds tab - Search for a patron - Verify that when you send your search, the 'internal server error' is shown The plack error logs show: Template process failed: undef error - WHILE loop terminated (> 1000 iterations) This has been verified on 2 different 16.11.x and on master.
From http://www.template-toolkit.org/docs/manual/Directives.html#section_WHILE """ The Template Toolkit uses a failsafe counter to prevent runaway WHILE loops which would otherwise never terminate. If the loop exceeds 1000 iterations then an undef exception will be thrown, reporting the error: WHILE loop terminated (> 1000 iterations) The $Template::Directive::WHILE_MAX variable controls this behaviour and can be set to a higher value if necessary. """ I do not think we want to increase this value, and I do not think we want to display a dropdown list with 1000 entries. I'd suggest to replace it with an input box (type=number).
+1 for the input box.
Created attachment 60021 [details] [review] Bug 18076: Replace holds_to_place_count with an input type=text From http://www.template-toolkit.org/docs/manual/Directives.html#section_WHILE """ The Template Toolkit uses a failsafe counter to prevent runaway WHILE loops which would otherwise never terminate. If the loop exceeds 1000 iterations then an undef exception will be thrown, reporting the error: WHILE loop terminated (> 1000 iterations) The $Template::Directive::WHILE_MAX variable controls this behaviour and can be set to a higher value if necessary. """ I do not think we want to increase this value, and I do not think we want to display a dropdown list with 1000 entries. This patch replaces the dropdown list with an input text. Test plan: - Set circulation conditions - holds per record = 999 - Search for record with items - Go to the holds tab - Search for a patron - Verify that when you send your search, the 'internal server error' is not shown and you see the input text. You should be able to enter a value > than 999 and < 1
Created attachment 60041 [details] [review] [SIGNED OFF] Bug 18076: Replace holds_to_place_count with an input type=text From http://www.template-toolkit.org/docs/manual/Directives.html#section_WHILE """ The Template Toolkit uses a failsafe counter to prevent runaway WHILE loops which would otherwise never terminate. If the loop exceeds 1000 iterations then an undef exception will be thrown, reporting the error: WHILE loop terminated (> 1000 iterations) The $Template::Directive::WHILE_MAX variable controls this behaviour and can be set to a higher value if necessary. """ I do not think we want to increase this value, and I do not think we want to display a dropdown list with 1000 entries. This patch replaces the dropdown list with an input text. Test plan: - Set circulation conditions - holds per record = 999 - Search for record with items - Go to the holds tab - Search for a patron - Verify that when you send your search, the 'internal server error' is not shown and you see the input text. You should be able to enter a value > than 999 and < 1 Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>
Created attachment 60201 [details] [review] Bug 18076: Replace holds_to_place_count with an input type=text From http://www.template-toolkit.org/docs/manual/Directives.html#section_WHILE """ The Template Toolkit uses a failsafe counter to prevent runaway WHILE loops which would otherwise never terminate. If the loop exceeds 1000 iterations then an undef exception will be thrown, reporting the error: WHILE loop terminated (> 1000 iterations) The $Template::Directive::WHILE_MAX variable controls this behaviour and can be set to a higher value if necessary. """ I do not think we want to increase this value, and I do not think we want to display a dropdown list with 1000 entries. This patch replaces the dropdown list with an input text. Test plan: - Set circulation conditions - holds per record = 999 - Search for record with items - Go to the holds tab - Search for a patron - Verify that when you send your search, the 'internal server error' is not shown and you see the input text. You should be able to enter a value > than 999 and < 1 Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Pushed to master for 17.05, thanks Jonathan!
This patch has been pushed to 16.11.x and will be in 16.11.04.