КодОБОС: Первые 10 000 Заметка
The Daily WTF на русском

КодОБОС: Первые 10 000

Алисия унаследовала набор домашних приложений, требующих пакетной обработки, но столкнулась с загадочным исключением IllegalStateException, вызванным запросом. Запрос, вызвавший проблему, был "select * from data_import where id > 10000", что было проблематично, поскольку он проверял наличие строк и выбрасывал исключение, если какие-либо строки были найдены. Запрос должен был быть запросом COUNT(*) вместо возвращения строк. Проблема возникла из-за того, что код использовал ID для представления информации о состоянии записи.Программа обновляла ID, добавляя 10000, вставляла новые данные, начиная с ID 1, а затем удаляла записи с ID больше 10000. Этот процесс выполнялся в рамках одного метода без транзакций или обработки ошибок, полагаясь на последовательные ID для отслеживания сбоев обработки. Процесс начал выходить из строя, когда входные данные превышали 10 000 строк, что приводило к сбою INSERT. Алисия хотела исправить процесс, но ее босс выбрал быстрое решение, изменив порог ID с 10000 на 100000. Это изменение позволило процессу продолжать работать в его поврежденном состоянии. Основная проблема оставалась нерешенной, и процесс все еще полагался на ошибочный дизайн. Решение изменить порог ID, вероятно, было принято из-за зависимостей от существующего процесса.