Мы пытаемся отладить прерывистую, непоследовательную и (пока что) ненадежно повторяемую ошибку при получении базы данных.
Мы загружаем и обрабатываем сотни миллионов строк данных.
Мы запрашиваем Oracle 11g через Jython и извлекаем 100 строк за раз из запроса с помощью этой команды:
rows = cur.fetchmany(100)
Запрос указывает имя каждого столбца, который мы хотим получить, как в этом шаблоне:
SELECT person_id, encounter_id, last_name, first_name, age
Как правило, в файле, который мы получаем, есть все нужные строки. Как это:
12341 | 432341 | Smith | Jack | 75
Но иногда мы получаем ошибку, и в некоторых строках пропускаются несколько значений, подобных этому:
12341 | 432341 | Smith
Наиболее необычно, если мы повторно запустим наш точно такой же код , ошибка извлечения базы данных исчезнет, и все пропущенные значения будут записаны.
Это начинает становиться проблемой для нас из-за размера загружаемых нами наборов данных и частоты отбрасывания данных.
Что может привести к таким пропущенным значениям? Это известное поведение, если база данных перегружена - или известная ошибка в перегруженных соединениях JDBC?
Как мы можем отладить причину этого?