当应用程序从lost_and_found队列移动到其他队列时,应用程序不能继续执行
问题
当删除一个有部分应用程序正在运行的队列,这些应用程序会被移动到“lost_and_found”队列上。当这些应用程序移回运行正常的队列时,某些任务会被挂起,不能正常运行。
回答
如果应用程序没有设置标签表达式,那么该应用程序上新增的container/resource将使用其所在队列默认的标签表达式。如果队列没有默认的标签表达式,则将其标签表达设置为“default label”。
当应用程序(app1)提交到队列(Q1)上时,应用程序上新增的container/resource使用队列默认的标签表达式(“label1”)。如果app1正在运行时Q1被删除,则app1被移动到“lost_and_found”队列上。由于“lost_and_found”队列没有标签表达式,其标签表达式设置为“default label”,此时app1上新增的container/resource也将其标签表达式设置为“default label”。当app1被移回正常运行的队列(例如,Q2)时,如果Q2支持调用app1中的所有标签表达式(包含“label1”和“default label”),则app1能正常运行直到结束;如果Q2仅支持调用app1中的部分标签表达式(例如,仅支持调用“default label”),那么app1在运行时,拥有“label1”标签表达式的部分任务的资源请求将无法获得资源,从而被挂起,不能正常运行。
因此当把应用程序从“lost_and_found”队列移动到其他运行正常的队列上时,需要保证目标队列能够调用该应用程序的所有标签表达式。
建议不要删除正在运行应用程序的队列。