Система Salesforce застряла в заблокированном состоянии администрирования организации после выполнения теста Apex - PullRequest
6 голосов
/ 29 февраля 2012

Я использовал экран Выполнение теста Apex , чтобы запустить все тестовые случаи в изолированной программной организации.

Несколько тестовых примеров пройдены, а затем прогресс завис на одном тестовом примере, которыйранее работал.

Затем я использовал кнопку «Прервать», чтобы попытаться отменить выполнение теста, которое, казалось, работало.

Теперь все последующие попытки запустить тесты никогда не будут проходить после состояния очереди.

ApexTestQueueItem stuck in Queued State

Выбор отдельного класса апекса и использование синхронной кнопки Run Test приводит к появлению следующего сообщения об ошибке:

Администрация организации заблокирована

Запрошенные вами изменения требуют, чтобы salesforce.com временно заблокировал настройки администрирования вашей организации.Однако настройка администрирования уже заблокирована другим изменением.Пожалуйста, дождитесь завершения предыдущего действия, затем повторите попытку позже.

При попытке сохранить изменения в классе Apex из Eclipse выдается ошибка:

  • Сохранитьошибка: невозможно сохранить все файлы: запрошенные изменения требуют> salesforce.com для временной блокировки настроек администрирования вашей организации.Однако настройка администрирования уже заблокирована другим изменением.Пожалуйста, подождите> предыдущего действия, чтобы закончить, затем повторите попытку позже.(ALREADY_IN_PROCESS)

Если я запрашиваю таблицу ApexTestQueueItem, кажется, что есть 3 теста, застрявшие со статусом обработки.

ApexTestQueueItem stuck in Processing

Как я могу удалить эти ApexTestQueueItems из состояния Обработка? Я предполагаю, что это поможет мне преодолеть блокировку администрирования организации.

Я проверил журнал аудита установки и единственные недавние изменениябыли от моего пользователя на Apex Classes.

Ответы [ 4 ]

5 голосов
/ 29 февраля 2012

Обновлено

Мой запрос в службу поддержки передан в "Старший отдел поддержки".Они сделали что-то с моей песочницей и посоветовали, что это известная проблема, и запускать тестовые примеры только для одного класса за раз через интерфейс класса Apex (например, https://xyz.salesforce.com/01pL00000000001).

Я должен , а не запускать тестовые примеры с помощью:

  • пользовательского интерфейса выполнения теста Apex
  • создание записей ApexTestQueueItem вручную
  • классов Apex - [Run All Tests]

Я предполагаю, что Eclipse в настоящее время в порядке для отдельных тестовых случаев, поскольку он не асинхронный по своей природе.

Я бы хотел рассказать вам, что именно они сделали с моимпроблема с песочницей, но я не уверен на данный момент. Надеюсь, что параллельный вопрос на форуме developerforce даст несколько ответов - Использование Apex Test Execution приводит к «Администрации организации заблокирован», которая не очищается

Немного интересной информации из Твиттера:

"... работаю над этим весь день. Надеюсь, что исправление получится на следующей неделе." - Рич Унгер

"@ rich_unger приятно слышать, чемKS для обновления, любой краткосрочный обходной путь?если нет, я перенесу свой код в другую организацию до тех пор "- Майкл Галлахер." Обходной путь @ mjgallag24 - не использовать асинхронное тестирование "- Рич Унгер

Поэтому, чтобы ответить на мой собственный вопрос «Как я могу удалить эти ApexTestQueueItems из состояния обработки?»

Ответ: Вы не можете в данный момент, если у вас возникла «известная проблема». Единственный вариант - вызвать поддержкуи дождитесь, пока Salesforce очистит его.


Я попробовал следующую анонимную вершину, чтобы очистить контрольные примеры апекса из очереди обработки:

List<ApexTestQueueItem> items = [Select Id,ApexClassId,Status,ExtendedStatus,ParentJobId from ApexTestQueueItem where Status != 'Completed'];
for(ApexTestQueueItem atqi : items) {
    atqi.Status = 'ABORTED';
}
update items;

Это не 'Кажется, что он не дает желаемого результата, так как в последующем запросе SOQL к ApexTestQueueItem столбец Status остается неизменным.

Я искал задание Apex в [Настройка администратора> Мониторинг> Задания Apex], но ни одна из записей, гдеJobType = TestRequest появился.

Затем я попытался прервать задание, используя анонимный апекс:

System.abortJob('707L0000000FgZIIA0');

AsyncApexJob изменил статус на «Aborted».

1 голос
/ 01 марта 2012

В одной из моих организаций она была разблокирована примерно через 16 часов, и я смог избежать ее повторной блокировки, выполняя свои тестовые классы по одному, но не через страницу выполнения текста Apex.страница класса IDE или Apex в пользовательском интерфейсе

0 голосов
/ 29 февраля 2012

Служба поддержки SF сообщила нам, что это известная проблема, исправление находится в стадии разработки, и они надеются выпустить ее в следующую среду

0 голосов
/ 29 февраля 2012

Вы должны действительно подать на это дело.Не зная больше информации, такой как ваш идентификатор организации, мы не можем сказать, что на самом деле происходит.Краткосрочное решение, вероятно, будет заключаться в том, что мы уничтожим тесты на обработку зомби с нашей стороны.

Rich Unger Apex Code Team

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