При двусторонней связи в JIRA Mobile Connect для ios происходит сбой приложения из-за блокировки sqlite
Я использую последний тег с именем "tip" и использую JIRA по требованию.
Я только что включил мобильное соединение JIRA в свое приложение ios, и оно ведет себя немного странно, то есть идет бесконечный цикл и зависает мое приложение. После включения режима отладки и более глубокого изучения я обнаружил, что источником этой проблемы является то, что таблица базы данных sqlite заблокирована.
Последовательность событий выглядит следующим образом:
- Я запустил свое приложение в первый раз
- Я успешно создал проблему, используя мобильное соединение JIRA
- Я закрыл свое приложение
- Я обновил проблему, добавив комментарии в JIRA онлайн через веб-интерфейс (для имитации сценария двусторонней связи)
- Я перезапустил свое приложение IOS
- JMC получает обновления от остальных API JIRA, используя https://xxxx.atlassian.net/rest/jconnect/1.0/issue/updates?sinceMillis=1408380024967&uuid=9371F70F-12CD-47EC-AB3E-4B0398FF453E&apikey=YYY&project=AAA- смог найти обновления, которые я сделал на шаге 4
- Поскольку он находит изменения,
JMCIssueStore.m
звонкиupdateWithData
метод, который имеет логику в нем, т.е.[self createSchema:YES]
который пытается отбросить существующие 2 таблицы и воссоздать схему. - На 1-м столе попытка сброса, т.е.
[db executeUpdate:@"DROP table if exists ISSUE"]
таблица базы данных оказывается заблокированной, и JMC выполняет бесконечный цикл, повторяя попытку выполнить этот оператор.
Я не могу найти какие-либо ответы на этот вопрос на портале вопросов и ответов Atlassian или в Интернете, и я нахожу это удивительным, так как наверняка у других людей, использующих это, должна быть та же проблема, или я сделал что-то явно неправильное в попытке интегрировать ее.
Кто-нибудь сталкивался с этим или с чем-то похожим? Поскольку это одна из ключевых функций, для которых я использую JIRA Mobile Connect, мне действительно нужно выяснить, стоит ли отлаживать Jira Mobile Connect для этого или просто бросить и делать это с нуля.
1 ответ
Вся проблема возникла из-за ошибки документации в процессе интеграции JIRA Mobile Connect, в частности, на шаге 9, где они попросили исключить все файлы JMC из ARC, что я и сделал. Это коренная причина проблемы.
После просмотра файлов с образцами Angry Nerds и сравнения их с моими, я понял, что они точно такие же, но образец Angry Nerds работал, а у меня - нет.
Я пересмотрел все свои этапы интеграции, и по достижении шага 9 меня поразило, что когда я проходил через код, не было никаких признаков каких-либо операторов ручного освобождения - что было бы странно, если код действительно не использовал ARC.
Я удалил все свои -fno-objc-arc
флаги из всех файлов JMC. И эй престо! проблема сбоя больше не существует.