使用Apex Test Execution后,Salesforce处于组织管理锁定状态

时间:2012-02-28 23:08:03

标签: salesforce

我使用 Apex Test Execution 屏幕在沙盒组织中运行所有测试用例。

几个测试用例通过然后进展似乎挂在一个以前工作的测试用例上。

然后我使用Abort按钮尝试取消似乎有效的测试执行。

现在,任何后续运行测试的尝试都不会超过“已排队”状态。

ApexTestQueueItem stuck in Queued State

选择单个顶点类并使用同步运行测试按钮会导致以下错误消息:

  

组织管理已锁定

     

您要求的更改需要   salesforce.com暂时锁定您组织的管理   建立。但是,管理设置已被锁定   另一个变化。请等待上一个操作完成   稍后再试。

尝试从Eclipse保存对Apex类的更改会产生错误:

  
      
  • 保存错误:无法对所有文件执行保存:您请求的更改需要> salesforce.com暂时锁定您组织的管理设置。然而    管理设置已被另一个更改锁定。请等待>之前的操作完成,然后再试一次。 (ALREADY_IN_PROCESS)
  •   

如果我查询ApexTestQueueItem表,似乎有3个测试用例处于处理状态。

ApexTestQueueItem stuck in Processing

如何从处理状态清除这些ApexTestQueueItems?我假设这会让我超过组织管理锁。

我确实检查了设置审核跟踪,最近的唯一更改是从我的用户到Apex Classes。

4 个答案:

答案 0 :(得分:5)

已更新

我的支持案例已升级为“高级支持团队”。他们对我的沙箱做了一些事情,并建议这是一个已知的问题,并且只能通过Apex类UI(例如https://xyz.salesforce.com/01pL00000000001)一次运行一个类的测试用例。

我应该通过以下方式运行测试用例:

  • Apex Test Execution UI
  • 手动创建ApexTestQueueItem记录
  • Apex课程 - [运行所有测试]

我认为Eclipse目前对单个测试用例来说还不错,因为它本质上不是异步。

我希望能够告诉你他们对我的问题沙盒组织做了什么,但我现在还不确定。希望developerforce论坛上的一个平行问题会产生一些答案 - Using Apex Test Execution results in a "Organization Administration Locked" that doesn't clear

来自Twitter的一些有趣信息:

"...been working on it all day. Hope to have the fix out next wk." - Rich Unger

"@rich_unger great to hear, thanks for update, any short term workaround? if not, I'll move my code to another org until then" - Michael Gallagher. "@mjgallag24 workaround is to not use async testing" - Rich Unger

所以回答我自己的问题“如何从处理状态中清除这些ApexTestQueueItems?”

答案:如果您遇到“已知问题”,目前无法使用。唯一的选择是提出支持案例并等待Salesforce清除它。


我尝试了以下匿名apex来清除处理队列中的顶点测试用例:

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

对于ApexTestQueueItem的后续SOQL查询,这似乎没有所需的结果,“状态”列保持不变。

我在[管理设置&gt;]下寻找Apex工作。监控&gt; Apex Jobs]但没有出现JobType = TestRequest的记录。

接下来,我尝试使用匿名顶点中止作业:

System.abortJob('707L0000000FgZIIA0');

AsyncApexJob将状态更改为“已中止”。

答案 1 :(得分:1)

在我的一个组织中,它在大约16个小时后解锁,我能够通过一次运行一个测试类来避免再次锁定它,但不是通过Apex Text Execution页面,我要么通过UI中的IDE或Apex类页面

答案 2 :(得分:0)

你应该为此提起诉讼。在不了解更多信息的情况下,比如您的组织,我们无法分辨出真正发生的事情。短期解决方案可能会让我们在最后杀死僵尸处理测试。

Rich Unger Apex代码团队

答案 3 :(得分:0)

SF支持告诉我们这是一个已知的问题,修复工作正在进行中,他们希望能在下周三推出它。