예제 #1
0
파일: renderaf.cpp 프로젝트: RISEFX/cgru
void RenderAf::offline( JobContainer * jobs, uint32_t updateTaskState, MonitorContainer * monitoring, bool toZombie )
{
	setOffline();
	setBusy( false);
	if( isWOLFalling())
	{
		setWOLFalling( false);
		setWOLSleeping( true);
	}

	if( jobs && updateTaskState)
		ejectTasks( jobs, monitoring, updateTaskState);

	// There is need to send pending tasks to offline render.
	m_re.clearTaskExecs();

	appendLog( m_hres.v_generateInfoString());

	if( toZombie )
	{
		AFCommon::QueueLog("Render Deleting: " + v_generateInfoString( false));
		appendLog("Waiting for deletion.");
		setZombie();
//		AFCommon::saveLog( getLog(), af::Environment::getRendersDir(), m_name);
		if( monitoring ) monitoring->addEvent( af::Monitor::EVT_renders_del, m_id);
	}
	else
	{
		AFCommon::QueueLog("Render Offline: " + v_generateInfoString( false));
		appendLog("Offline.");
		m_time_launch = 0;
		if( monitoring ) monitoring->addEvent( af::Monitor::EVT_renders_change, m_id);
		store();
	}
}
예제 #2
0
파일: useraf.cpp 프로젝트: sachinpore/cgru
void UserAf::v_setZombie( MonitorContainer * i_monitoring)
{
    AFCommon::QueueLog("Deleting user: "******"Became a zombie.");
    AFCommon::saveLog( getLog(), af::Environment::getUsersLogsDir(), m_name, af::Environment::getAfNodeLogsRotate());
}
예제 #3
0
파일: useraf.cpp 프로젝트: g-LuL/cgru
void UserAf::deleteNode( MonitorContainer * i_monitoring)
{
	AFCommon::QueueLog("Deleting user: "******"Became a zombie.");

	setZombie();

	if( i_monitoring ) i_monitoring->addEvent( af::Monitor::EVT_users_del, m_id);
}
예제 #4
0
void JobAf::deleteNode( RenderContainer * renders, MonitorContainer * monitoring)
{
	if( m_id == AFJOB::SYSJOB_ID )
	{
		AFCommon::QueueLogError("System job can't be zombie");
		return;
	}
	
	if( m_deletion == false )
	{
		m_state = AFJOB::STATE_OFFLINE_MASK;
		lock();
		m_deletion = true;
		
		if( m_custom_data.size() || m_user->getCustomData().size())
		{
			std::vector<std::string> events;
			events.push_back("JOB_DELETED");
			emitEvents(events);
		}
		
		if( getRunningTasksNumber() && (renders != NULL) && (monitoring != NULL))
		{
			restartAllTasks("Job deletion.", renders, monitoring, AFJOB::STATE_RUNNING_MASK);
			if( monitoring ) monitoring->addJobEvent( af::Monitor::EVT_jobs_change, getId(), getUid());
			return;
		}
	}
	if( getRunningTasksNumber() )
	{
		AF_ERR << "runningtaskscounter = " << getRunningTasksNumber();
		return;
	}
	
	if( false == m_command_post.empty())
	{
		SysJob::AddPostCommand( m_command_post, m_blocks_num > 0 ? m_blocks_data[0]->getWDir(): "", m_user_name, m_name);
		appendLog( std::string("Executing job post command:\n") + m_command_post);
	}
	for( int b = 0; b < m_blocks_num; b++)
	{
		if( m_blocks_data[b]->hasCmdPost())
		{
			SysJob::AddPostCommand( m_blocks_data[b]->getCmdPost(), m_blocks_data[b]->getWDir(), m_user_name, m_name);
			appendLog( std::string("Executing block[") + m_blocks_data[b]->getName() + "] post command:\n" + m_blocks_data[b]->getCmdPost());
		}
	}
	
	setZombie();
	
	AFCommon::DBAddJob( this);
	
	if( monitoring ) monitoring->addJobEvent( af::Monitor::EVT_jobs_del, getId(), getUid());
	AFCommon::QueueLog("Deleting a job: " + v_generateInfoString());
	unLock();
}