Ruby on Rails с IBM_DB2 Gem - PullRequest
       13

Ruby on Rails с IBM_DB2 Gem

0 голосов
/ 07 мая 2019

В настоящее время я пытаюсь перенести большой набор данных из базы данных IBM DB2.Я нашел быстрый способ выполнения запросов с использованием гема imb_db2 (версия 4.0.0).

Основная цель - создать скрипт, который работает параллельно и импортирует независимые данные.

Мой скрипт импорта работает нормально последовательно, но при попытке выполнить скрипт в нескольких фоновых процессах он завершается сбоем.

Я пробовал Sidekiq с несколькими процессами, каждый процесс со своей собственной очередью.

Например, я пробую следующий подход

DemoWorker.set(queue: :que_1).perform_async(1, 10)

Затем я делаю

DemoWorker.set(queue: :que_2).perform_async(11, 20)

Каждая очередь имеет свой независимый процесс Sidekiq с параллелизмом 1. Например,

bundle exec sidekiq -e development -C config/sidekiq.yml -q que_1

И я выполняю следующий код с запросом в качестве параметра

  def get_by_sql(sql)
    data = []
    stmt = IBM_DB.exec(self.conn, sql.squish)

    while row = IBM_DB.fetch_assoc(stmt)
      data << row
    end

    data
  end

И извремя от времени я получаю следующую ошибку сбоя.

[BUG] выделение объекта на этапе сборки мусора

Я понятия не имею, почему это не удается, вы могли бы посоветовать?Большое спасибо!

А вот отчет о сбое: https://ufile.io/fqmfh0y8

РЕДАКТИРОВАТЬ: отчет о сбое загружен в GIST: https://gist.github.com/RaresSalcudean/db8467bc4cd3ea2164bcaab5da86780e

Отчет о сбое 2: https://gist.github.com/RaresSalcudean/6f7bb7f74e34a537b687c776d806bf04

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...