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(); } }
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()); }
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); }
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(); }