NCBI C++ ToolKit
ns_queue.hpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 #ifndef NETSCHEDULE_NS_QUEUE__HPP
2 #define NETSCHEDULE_NS_QUEUE__HPP
3 
4 /* $Id: ns_queue.hpp 88992 2020-02-10 18:59:01Z satskyse $
5  * ===========================================================================
6  *
7  * PUBLIC DOMAIN NOTICE
8  * National Center for Biotechnology Information
9  *
10  * This software/database is a "United States Government Work" under the
11  * terms of the United States Copyright Act. It was written as part of
12  * the author's official duties as a United States Government employee and
13  * thus cannot be copyrighted. This software/database is freely available
14  * to the public for use. The National Library of Medicine and the U.S.
15  * Government have not placed any restriction on its use or reproduction.
16  *
17  * Although all reasonable efforts have been taken to ensure the accuracy
18  * and reliability of the software and data, the NLM and the U.S.
19  * Government do not and cannot warrant the performance or results that
20  * may be obtained by using this software or data. The NLM and the U.S.
21  * Government disclaim all warranties, express or implied, including
22  * warranties of performance, merchantability or fitness for any particular
23  * purpose.
24  *
25  * Please cite the author in any work or product based on this material.
26  *
27  * ===========================================================================
28  *
29  * Authors: Victor Joukov
30  *
31  * File Description:
32  * NetSchedule queue structure and parameters
33  *
34  */
35 
36 #include <corelib/ncbistl.hpp>
37 #include <corelib/ncbireg.hpp>
38 
39 #include <util/thread_nonstop.hpp>
40 #include <util/time_line.hpp>
41 
43 
44 #include "ns_types.hpp"
45 #include "ns_util.hpp"
46 #include "background_host.hpp"
47 #include "job.hpp"
48 #include "job_status.hpp"
49 #include "queue_vc.hpp"
50 #include "access_list.hpp"
51 #include "ns_affinity.hpp"
52 #include "ns_queue_parameters.hpp"
53 #include "ns_clients_registry.hpp"
54 #include "ns_notifications.hpp"
55 #include "queue_clean_thread.hpp"
57 #include "ns_group.hpp"
58 #include "ns_gc_registry.hpp"
59 #include "ns_precise_time.hpp"
60 #include "ns_scope.hpp"
61 #include "ns_server_params.hpp"
62 
63 #include <map>
64 
66 
67 class CNetScheduleServer;
69 class CQueue;
70 
71 // slight violation of naming convention for porting to util/time_line
73 
74 // Mutex protected Queue database with job status FSM
75 //
76 // Class holds the queue database (open files and indexes),
77 // thread sync mutexes and classes auxiliary queue management concepts
78 // (like affinity and job status bit-matrix)
79 class CQueue : public CObjectEx
80 {
81 public:
82  enum EQueueKind {
84  eKindDynamic = 1
85  };
86  typedef int TQueueKind;
87 
88 public:
89  enum EPauseStatus {
90  eNoPause = 0,
93  };
94  typedef int TPauseStatus;
95 
96 public:
100  eRollback = 2
101  };
102  typedef int TJobReturnOption;
103 
104 public:
105  // Constructor/destructor
106  CQueue(const string& queue_name,
107  TQueueKind queue_kind,
108  CNetScheduleServer * server,
109  CQueueDataBase & qdb);
110  ~CQueue();
111 
112  void Attach(void);
113  TQueueKind GetQueueKind(void) const { return m_Kind; }
114 
115  // Thread-safe parameter access
116  typedef list<pair<string, string> > TParameterList;
117  void SetParameters(const SQueueParameters& params);
119  CNSPreciseTime GetTimeout() const;
124  unsigned GetFailedRetries() const;
125  bool IsSubmitAllowed(unsigned host) const;
126  bool IsWorkerAllowed(unsigned host) const;
127  bool IsReaderAllowed(unsigned host) const;
128  bool IsProgramAllowed(const string & program_name) const;
130  unsigned int & max_input_size,
131  unsigned int & max_output_size,
132  map< string, map<string, string> > & linked_sections) const;
133  void GetLinkedSections(map< string,
134  map<string, string> > & linked_sections) const;
135 
136  bool GetRefuseSubmits(void) const { return m_RefuseSubmits; }
138  size_t GetAffSlotsUsed(void) const { return m_AffinityRegistry.size(); }
139  size_t GetGroupSlotsUsed(void) const { return m_GroupRegistry.size(); }
140  size_t GetScopeSlotsUsed(void) const { return m_ScopeRegistry.size(); }
141  size_t GetClientsCount(void) const { return m_ClientsRegistry.size(); }
142  size_t GetGroupsCount(void) const { return m_GroupRegistry.size(); }
143  size_t GetNotifCount(void) const { return m_NotificationsList.size(); }
144  size_t GetGCBacklogCount(void) const
145  {
147  return m_JobsToDelete.count();
148  }
149 
150  const string& GetQueueName() const {
151  return m_QueueName;
152  }
153 
154  string DecorateJob(unsigned int job_id) const
155  { return m_QueueName + "/" + MakeJobKey(job_id); }
156 
157  // Submit job, return numeric job id
158  unsigned int Submit(const CNSClientId & client,
159  CJob & job,
160  const string & aff_token,
161  const string & group,
162  bool logging,
163  CNSRollbackInterface * & rollback_action);
164 
165  // Submit job batch
166  // Returns ID of the first job, second is first_id+1 etc.
167  unsigned SubmitBatch(const CNSClientId & client,
168  vector< pair<CJob, string> > & batch,
169  const string & group,
170  bool logging,
171  CNSRollbackInterface * & rollback_action);
172 
174  const CNSPreciseTime & curr,
175  unsigned int job_id,
176  const string & job_key,
177  CJob & job,
178  const string & auth_token,
179  int ret_code,
180  const string & output);
181 
182  bool GetJobOrWait(const CNSClientId & client,
183  unsigned short port, // Port the client
184  // will wait on
185  unsigned int timeout,
186  const CNSPreciseTime & curr,
187  const list<string> * aff_list,
188  bool wnode_affinity,
189  bool any_affinity,
190  bool exclusive_new_affinity,
191  bool prioritized_aff,
192  bool new_format,
193  const list<string> * group_list,
194  CJob * new_job,
195  CNSRollbackInterface * & rollback_action,
196  string & added_pref_aff);
197 
198  void CancelWaitGet(const CNSClientId & client);
199  void CancelWaitRead(const CNSClientId & client);
200 
201  list<string> ChangeAffinity(const CNSClientId & client,
202  const list<string> & aff_to_add,
203  const list<string> & aff_to_del,
204  ECommandGroup cmd_group);
205  void SetAffinity(const CNSClientId & client,
206  const list<string> & aff,
207  ECommandGroup cmd_group);
208  int SetClientData(const CNSClientId & client,
209  const string & data, int data_version);
210 
211  TJobStatus JobDelayExpiration(unsigned int job_id,
212  CJob & job,
213  const CNSPreciseTime & tm);
214  TJobStatus JobDelayReadExpiration(unsigned int job_id,
215  CJob & job,
216  const CNSPreciseTime & tm);
217 
218  TJobStatus GetStatusAndLifetime(unsigned int job_id,
219  string & client_ip,
220  string & client_sid,
221  string & client_phid,
222  string & progress_msg,
223  CNSPreciseTime * lifetime);
224  TJobStatus GetStatusAndLifetimeAndTouch(unsigned int job_id,
225  CJob & job,
226  CNSPreciseTime * lifetime);
227 
228  TJobStatus SetJobListener(unsigned int job_id,
229  CJob & job,
230  unsigned int address,
231  unsigned short port,
232  const CNSPreciseTime & timeout,
233  bool need_stolen,
234  bool need_progress_msg,
235  size_t * last_event_index);
236 
237  // Worker node-specific methods
238  bool PutProgressMessage(unsigned int job_id,
239  CJob & job,
240  const string & msg);
241 
243  unsigned int job_id,
244  const string & job_key,
245  CJob & job,
246  const string & auth_token,
247  string & warning,
248  TJobReturnOption how);
250  unsigned int job_id,
251  const string & job_key,
252  const string & auth_token,
253  const string & aff_token,
254  const string & group,
255  bool & auth_token_ok,
256  CJob & job);
258  unsigned int job_id,
259  const string & job_key,
260  CJob & job);
261  TJobStatus ReadAndTouchJob(unsigned int job_id,
262  CJob & job,
263  CNSPreciseTime * lifetime);
264 
265  // Cancel job execution (job stays in special Canceled state)
266  // Returns the previous job status
268  unsigned int job_id,
269  const string & job_key,
270  CJob & job,
271  bool is_ns_rollback = false);
272 
273  unsigned int CancelAllJobs(const CNSClientId & client,
274  bool logging);
275  unsigned int CancelSelectedJobs(const CNSClientId & client,
276  const string & group,
277  const string & aff_token,
278  const vector<TJobStatus> & statuses,
279  bool logging,
280  vector<string> & warnings);
281 
282  TJobStatus GetJobStatus(unsigned job_id) const;
283 
284  bool IsEmpty() const;
285 
286  // get next job id (counter increment)
287  unsigned int GetNextId();
288  // Returns first id for the batch
289  unsigned int GetNextJobIdForBatch(unsigned count);
290 
291  // Read-Confirm stage
292  // Request done jobs for reading with timeout
294  unsigned int port,
295  unsigned int timeout,
296  const list<string> * aff_list,
297  bool reader_affinity,
298  bool any_affinity,
299  bool exclusive_new_affinity,
300  bool prioritized_aff,
301  const list<string> * group_list,
302  bool affinity_may_change,
303  bool group_may_change,
304  CJob * job,
305  bool * no_more_jobs,
306  CNSRollbackInterface * & rollback_action,
307  string & added_pref_aff);
308  // Confirm reading of these jobs
310  unsigned int job_id,
311  const string & job_key,
312  CJob & job,
313  const string & auth_token);
314  // Fail (negative acknowledge) reading of these jobs
316  unsigned int job_id,
317  const string & job_key,
318  CJob & job,
319  const string & auth_token,
320  const string & err_msg,
321  bool no_retries);
322  // Return jobs to unread state without reservation
324  unsigned int job_id,
325  const string & job_key,
326  CJob & job,
327  const string & auth_token,
328  bool is_ns_rollback,
329  bool blacklist,
330  TJobStatus target_status);
331 
333  unsigned int job_id,
334  const string & job_key,
335  CJob & job,
336  bool & no_op);
337 
338  // Erase job from all structures, request delayed db deletion
339  void EraseJob(unsigned job_id, TJobStatus status);
340 
341  // Optimize bitvectors
342  void OptimizeMem();
343 
345  unsigned int job_id,
346  const string & job_key,
347  CJob & job,
348  const string & auth_token,
349  const string & err_msg,
350  const string & output,
351  int ret_code,
352  bool no_retries,
353  string warning);
354 
355  string GetAffinityTokenByID(unsigned int aff_id) const;
356 
357  void ClearWorkerNode(const CNSClientId & client,
358  bool & client_was_found,
359  string & old_session,
360  bool & had_wn_pref_affs,
361  bool & had_reader_pref_affs);
362 
363  void NotifyListenersPeriodically(const CNSPreciseTime & current_time);
365  string PrintClientsList(bool verbose) const;
366  string PrintNotificationsList(bool verbose) const;
367  string PrintAffinitiesList(const CNSClientId & client,
368  bool verbose) const;
369  string PrintGroupsList(const CNSClientId & client, bool verbose) const;
370  string PrintScopesList(bool verbose) const;
371 
372  // Check execution timeout. Now checks reading timeout as well.
373  // All jobs failed to execute, go back to pending
374  void CheckExecutionTimeout(bool logging);
375 
376  // Checks up to given # of jobs at the given status for expiration and
377  // marks up to given # of jobs for deletion. Check no further than the
378  // given last_job id
379  // Returns the # of performed scans, the # of jobs marked for deletion and
380  // the last scanned job id.
381  SPurgeAttributes CheckJobsExpiry(const CNSPreciseTime & current_time,
383  unsigned int last_job,
384  TJobStatus status);
385 
386  void TimeLineMove(unsigned int job_id,
387  const CNSPreciseTime & old_time,
388  const CNSPreciseTime & new_time);
389  void TimeLineAdd(unsigned int job_id,
390  const CNSPreciseTime & job_time);
391  void TimeLineRemove(unsigned int job_id);
392  void TimeLineExchange(unsigned int remove_job_id,
393  unsigned int add_job_id,
394  const CNSPreciseTime & new_time);
395 
396  unsigned int DeleteBatch(unsigned int max_deleted);
397  unsigned int PurgeAffinities(void);
398  unsigned int PurgeGroups(void);
399  void StaleNodes(const CNSPreciseTime & current_time);
400  void PurgeBlacklistedJobs(void);
401  void PurgeClientRegistry(const CNSPreciseTime & current_time);
402 
403  // Dump a single job
404  string PrintJobDbStat(const CNSClientId & client,
405  unsigned int job_id,
406  TDumpFields dump_fields);
407  // Dump all job records
408  string PrintAllJobDbStat(const CNSClientId & client,
409  const string & group,
410  const string & aff_token,
411  const vector<TJobStatus> & job_statuses,
412  unsigned int start_after_job_id,
413  unsigned int count,
414  bool order_first,
415  TDumpFields dump_fields,
416  bool logging);
417 
418  unsigned CountStatus(TJobStatus) const;
419  void StatusStatistics(TJobStatus status,
420  TNSBitVector::statistics * st) const;
421 
422  string MakeJobKey(unsigned int job_id) const;
423 
425  bool & client_was_found,
426  bool & session_was_reset,
427  string & old_session,
428  bool & had_wn_pref_affs,
429  bool & had_reader_pref_affs);
430  void MarkClientAsAdmin(const CNSClientId & client);
432  void SetClientScope(const CNSClientId & client);
433 
434  void PrintStatistics(size_t & aff_count) const;
435  void PrintJobCounters(void) const;
436  unsigned int GetJobsToDeleteCount(void) const;
437  string PrintTransitionCounters(void) const;
438  string PrintJobsStat(const CNSClientId & client,
439  const string & group_token,
440  const string & aff_token,
441  vector<string> & warnings) const;
442  void GetJobsPerState(const CNSClientId & client,
443  const string & group_token,
444  const string & aff_token,
445  size_t * jobs,
446  vector<string> & warnings) const;
450  unsigned int CountActiveJobs(void) const;
451  unsigned int CountAllJobs(void) const
452  { return m_StatusTracker.Count(); }
453  bool AnyJobs(void) const
454  { return m_StatusTracker.AnyJobs(); }
455 
457  { return m_PauseStatus; }
458  void SetPauseStatus(const CNSClientId & client, TPauseStatus status);
459 
460  // Used by NS to restore a stored status after restart
462  { m_PauseStatus = status; }
463 
464  void RegisterQueueResumeNotification(unsigned int address,
465  unsigned short port,
466  bool new_format);
467 
468  void Dump(const string & dump_dir_name);
469  void RemoveDump(const string & dump_dir_name);
470  unsigned int LoadFromDump(const string & dump_dir_name);
471  bool ShouldPerfLogTransitions(void) const
472  { return m_ShouldPerfLogTransitions; }
473  void UpdatePerfLoggingSettings(const string & qclass);
474 
475 private:
477  unsigned int job_id,
478  const string & job_key,
479  CJob & job,
480  const string & auth_token,
481  const string & err_msg,
482  TJobStatus target_status,
483  bool is_ns_rollback,
484  bool no_retries);
485 
486  struct x_SJobPick
487  {
488  unsigned int job_id;
489  bool exclusive;
490  unsigned int aff_id;
491 
493  job_id(0), exclusive(false), aff_id(0)
494  {}
495  x_SJobPick(unsigned int jid, bool excl, unsigned int aid) :
496  job_id(jid), exclusive(excl), aff_id(aid)
497  {}
498  };
499 
500  x_SJobPick
502  const TNSBitVector & explicit_affs,
503  const vector<unsigned int> & aff_ids,
504  bool use_pref_affinity,
505  bool any_affinity,
506  bool exclusive_new_affinity,
507  bool prioritized_aff,
508  const TNSBitVector & group_ids,
509  bool has_groups,
510  ECommandGroup cmd_group);
511  x_SJobPick
513  const TNSBitVector & explicit_affs,
514  const vector<unsigned int> & aff_ids,
515  bool use_pref_affinity,
516  bool any_affinity,
517  bool exclusive_new_affinity,
518  bool prioritized_aff,
519  const TNSBitVector & group_ids,
520  bool has_groups,
521  ECommandGroup cmd_group,
522  const string & scope);
524  bool x_ValidateMaxJobsPerClientIP(unsigned int job_id,
525  const map<string, size_t> & jobs_per_client_ip) const;
526 
527  x_SJobPick
529  unsigned int picked_earlier,
530  const TNSBitVector & group_ids);
531  x_SJobPick
533  unsigned int picked_earlier,
534  const TNSBitVector & group_ids,
535  const string & scope);
536  x_SJobPick
538  unsigned int picked_earlier,
539  const TNSBitVector & group_ids);
540  x_SJobPick
542  unsigned int picked_earlier,
543  const TNSBitVector & group_ids,
544  const string & scope);
545 
546  void x_UpdateDB_PutResultNoLock(unsigned job_id,
547  const string & auth_token,
548  const CNSPreciseTime & curr,
549  int ret_code,
550  const string & output,
551  CJob & job,
552  const CNSClientId & client);
553 
555  const CNSPreciseTime & curr,
556  unsigned int job_id,
557  ECommandGroup cmd_group,
558  CJob & job);
559 
560  void x_CheckExecutionTimeout(const CNSPreciseTime & queue_run_timeout,
561  const CNSPreciseTime & queue_read_timeout,
562  unsigned job_id,
563  const CNSPreciseTime & curr_time,
564  bool logging);
565 
566  void x_LogSubmit(const CJob & job);
568  const TNSBitVector & jobs);
570  const TNSBitVector & jobs);
572  const TNSBitVector & jobs);
574  const TNSBitVector & jobs);
576  unsigned int job_id,
577  const CNSPreciseTime & current_time,
578  TJobStatus status_from,
579  CJobEvent::EJobEvent event_type);
580 
582  unsigned short port,
583  unsigned int timeout,
584  const TNSBitVector & aff_ids,
585  bool wnode_aff,
586  bool any_aff,
587  bool exclusive_new_affinity,
588  bool new_format,
589  const TNSBitVector & group_ids);
591  unsigned short port,
592  unsigned int timeout,
593  const TNSBitVector & aff_ids,
594  bool reader_aff,
595  bool any_aff,
596  bool exclusive_new_affinity,
597  const TNSBitVector & group_ids);
599  unsigned short port);
600 
601  /// Erase jobs from all structures, request delayed db deletion
602  void x_Erase(const TNSBitVector & job_ids,
603  TJobStatus status);
604 
605  string x_DumpJobs(const TNSBitVector & jobs_to_dump,
606  unsigned int start_after_job_id,
607  unsigned int count,
608  TDumpFields dump_fields,
609  bool order_first);
610  unsigned int x_CancelJobs(const CNSClientId & client,
611  const TNSBitVector & jobs_to_cancel,
612  bool logging);
613  CNSPreciseTime x_GetEstimatedJobLifetime(unsigned int job_id,
614  TJobStatus status) const;
615  bool x_NoMoreReadJobs(const CNSClientId & client,
616  const TNSBitVector & aff_list,
617  bool reader_affinity,
618  bool any_affinity,
619  bool exclusive_new_affinity,
620  const TNSBitVector & group_list,
621  bool affinity_may_change,
622  bool group_may_change);
623 
624  string x_GetJobsDumpFileName(const string & dump_dname) const;
625  void x_ClearQueue(void);
626  void x_NotifyJobChanges(const CJob & job,
627  const string & job_key,
628  ENotificationReason reason,
629  const CNSPreciseTime & current_time);
630 
631 private:
632  friend class CJob;
633  friend class CQueueParamAccessor;
634 
638 
639  map<unsigned int, CJob> m_Jobs; // in-memory jobs
640 
641  // Timeline object to control job execution timeout
644 
645  string m_QueueName;
646  TQueueKind m_Kind; // 0 - static, 1 - dynamic
647 
648  // Lock for a queue operations
650 
651  // Registry of all the clients for the queue
653 
654  // Registry of all the job affinities
656 
657  // Last valid id for queue
658  unsigned int m_LastId; // Last used job ID
659  unsigned int m_SavedId; // The ID we will start next time
660  // the netschedule is loaded
662 
663  // Lock for deleted jobs vectors
665  // Vector of jobs to be deleted from db unconditionally
666  // keeps jobs still to be deleted from main DB
668  unsigned int m_JobsToDeleteOps;
669 
670  // Vector of jobs which are in a process of reading or had been already
671  // read.
673  unsigned int m_ReadJobsOps;
674 
675  // Configurable queue parameters
677  CNSPreciseTime m_Timeout; // Result exp. timeout
678  CNSPreciseTime m_RunTimeout; // Execution timeout
680  // How many attempts to make on different nodes before failure
681  unsigned m_FailedRetries;
686  unsigned m_MaxInputSize;
687  unsigned m_MaxOutputSize;
693  // Client program version control
695  // Host access list for job submission
697  // Host access list for job execution (workers)
699  // Host access list for job reading (readers)
701 
703 
704  const bool & m_Log;
705  const bool & m_LogBatchEachJob;
706 
708 
712 
713  // Notifications support
717  unsigned int m_NotifLofreqMult;
719 
720  unsigned int m_DumpBufferSize;
722  unsigned int m_DumpAffBufferSize;
723  unsigned int m_DumpGroupBufferSize;
726 
727  // Group registry
729 
730  // Garbage collector registry
732 
734 
735  // Client registry garbage collector settings
746 
748 
750 
751  // States from which the jobs could be taken for the READ[2] commands
752  vector<CNetScheduleAPI::EJobStatus>
754 };
755 
756 
757 // Thread-safe parameter access. The majority of parameters are single word,
758 // so if you need a single parameter, it is safe to use these methods, which
759 // do not lock anything. In such cases, where the parameter is not single-word,
760 // we lock m_ParamLock for reading.
762 {
763  return m_Timeout;
764 }
766 {
767  return m_RunTimeout;
768 }
770 {
771  return m_ReadTimeout;
772 }
774 {
775  return m_PendingTimeout;
776 }
778 {
780 }
781 inline unsigned CQueue::GetFailedRetries() const
782 {
783  return m_FailedRetries;
784 }
785 inline bool CQueue::IsSubmitAllowed(unsigned host) const
786 {
787  // The m_SubmHosts has internal lock anyway
788  return host == 0 || m_SubmHosts.IsAllowed(host);
789 }
790 inline bool CQueue::IsWorkerAllowed(unsigned host) const
791 {
792  // The m_WnodeHosts has internal lock anyway
793  return host == 0 || m_WnodeHosts.IsAllowed(host);
794 }
795 inline bool CQueue::IsReaderAllowed(unsigned host) const
796 {
797  // The m_ReaderHosts has internal lock anyway
798  return host == 0 || m_ReaderHosts.IsAllowed(host);
799 }
800 inline bool CQueue::IsProgramAllowed(const string & program_name) const
801 {
803  return true; // No need to check
804 
805  if (program_name.empty())
806  return false;
807 
808  try {
809  CQueueClientInfo auth_prog_info;
810 
811  ParseVersionString(program_name,
812  &auth_prog_info.client_name,
813  &auth_prog_info.version_info);
814  return m_ProgramVersionList.IsMatchingClient(auth_prog_info);
815  }
816  catch (...) {
817  // There could be parsing errors
818  return false;
819  }
820 }
821 
822 
824 
825 #endif /* NETSCHEDULE_NS_QUEUE__HPP */
826 
CFastMutex –.
Definition: ncbimtx.hpp:667
EJobEvent
Definition: job.hpp:60
bool AnyJobs(void) const
Definition: job_status.cpp:150
unsigned int Count(void) const
Definition: job_status.cpp:116
Definition: job.hpp:183
size_t size(void) const
size_t size(void) const
size_t size(void) const
Definition: ns_group.cpp:87
size_t size(void) const
size_t size(void) const
Definition: ns_scope.cpp:53
bool IsAllowed(unsigned int ha) const
Definition: access_list.cpp:42
NetScheduler threaded server.
Definition: ns_server.hpp:57
CObjectEx –.
Definition: ncbiobj.hpp:2531
All clients registered to connect.
Definition: queue_vc.hpp:69
bool IsMatchingClient(const CQueueClientInfo &cinfo) const
Definition: queue_vc.hpp:106
bool IsConfigured() const
Definition: queue_vc.hpp:125
int TJobReturnOption
Definition: ns_queue.hpp:102
CFastMutex m_OperationLock
Definition: ns_queue.hpp:649
void x_ResetReadingDueToClear(const CNSClientId &client, const TNSBitVector &jobs)
Definition: ns_queue.cpp:4219
TPauseStatus GetPauseStatus(void) const
Definition: ns_queue.hpp:456
void SetPauseStatus(const CNSClientId &client, TPauseStatus status)
Definition: ns_queue.cpp:4513
CFastMutex m_JobsToDeleteLock
Definition: ns_queue.hpp:664
unsigned int CountActiveJobs(void) const
Definition: ns_queue.cpp:4503
EPauseStatus
Definition: ns_queue.hpp:89
@ ePauseWithoutPullback
Definition: ns_queue.hpp:92
@ eNoPause
Definition: ns_queue.hpp:90
@ ePauseWithPullback
Definition: ns_queue.hpp:91
bool m_ScrambleJobKeys
Definition: ns_queue.hpp:724
map< string, size_t > x_GetRunningJobsPerClientIP(void)
Definition: ns_queue.cpp:2812
CNSScopeRegistry m_ScopeRegistry
Definition: ns_queue.hpp:747
bool IsSubmitAllowed(unsigned host) const
Definition: ns_queue.hpp:785
void x_ResetRunningDueToNewSession(const CNSClientId &client, const TNSBitVector &jobs)
Definition: ns_queue.cpp:4235
CNSPreciseTime m_ClientRegistryTimeoutSubmitter
Definition: ns_queue.hpp:740
TJobStatus ConfirmReadingJob(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job, const string &auth_token)
Definition: ns_queue.cpp:2192
string DecorateJob(unsigned int job_id) const
Definition: ns_queue.hpp:154
void TimeLineRemove(unsigned int job_id)
Definition: ns_queue.cpp:3605
void PurgeClientRegistry(const CNSPreciseTime &current_time)
Definition: ns_queue.cpp:3784
map< unsigned int, CJob > m_Jobs
Definition: ns_queue.hpp:639
void TimeLineMove(unsigned int job_id, const CNSPreciseTime &old_time, const CNSPreciseTime &new_time)
Definition: ns_queue.cpp:3582
unsigned int m_DumpAffBufferSize
Definition: ns_queue.hpp:722
int SetClientData(const CNSClientId &client, const string &data, int data_version)
Definition: ns_queue.cpp:1114
EQueueKind
Definition: ns_queue.hpp:82
@ eKindDynamic
Definition: ns_queue.hpp:84
@ eKindStatic
Definition: ns_queue.hpp:83
unsigned m_ReadFailedRetries
Definition: ns_queue.hpp:682
TPauseStatus m_PauseStatus
Definition: ns_queue.hpp:733
unsigned int GetNextId()
Definition: ns_queue.cpp:1954
string m_QueueName
Definition: ns_queue.hpp:645
CNetScheduleServer * m_Server
Definition: ns_queue.hpp:635
TNSBitVector m_ReadJobs
Definition: ns_queue.hpp:672
TJobStatus x_ChangeReadingStatus(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job, const string &auth_token, const string &err_msg, TJobStatus target_status, bool is_ns_rollback, bool no_retries)
Definition: ns_queue.cpp:2332
unsigned CountStatus(TJobStatus) const
Definition: ns_queue.cpp:4033
bool IsProgramAllowed(const string &program_name) const
Definition: ns_queue.hpp:800
CQueueDataBase & m_QueueDB
Definition: ns_queue.hpp:637
CNSPreciseTime m_PendingTimeout
Definition: ns_queue.hpp:690
CJobStatusTracker m_StatusTracker
Definition: ns_queue.hpp:636
size_t GetClientsCount(void) const
Definition: ns_queue.hpp:141
unsigned m_MaxJobsPerClient
Definition: ns_queue.hpp:683
void x_RegisterGetListener(const CNSClientId &client, unsigned short port, unsigned int timeout, const TNSBitVector &aff_ids, bool wnode_aff, bool any_aff, bool exclusive_new_affinity, bool new_format, const TNSBitVector &group_ids)
Definition: ns_queue.cpp:4267
void x_CheckExecutionTimeout(const CNSPreciseTime &queue_run_timeout, const CNSPreciseTime &queue_read_timeout, unsigned job_id, const CNSPreciseTime &curr_time, bool logging)
Definition: ns_queue.cpp:3323
unsigned int CancelAllJobs(const CNSClientId &client, bool logging)
Definition: ns_queue.cpp:1756
string PrintNotificationsList(bool verbose) const
Definition: ns_queue.cpp:3251
bool m_RefuseSubmits
Definition: ns_queue.hpp:707
unsigned int m_ClientRegistryMinWorkerNodes
Definition: ns_queue.hpp:737
void SetAffinity(const CNSClientId &client, const list< string > &aff, ECommandGroup cmd_group)
Definition: ns_queue.cpp:1064
const string & GetQueueName() const
Definition: ns_queue.hpp:150
void SetRefuseSubmits(bool val)
Definition: ns_queue.hpp:137
void PrintStatistics(size_t &aff_count) const
Definition: ns_queue.cpp:4322
void StatusStatistics(TJobStatus status, TNSBitVector::statistics *st) const
Definition: ns_queue.cpp:4039
unsigned int LoadFromDump(const string &dump_dir_name)
Definition: ns_queue.cpp:4720
string PrintClientsList(bool verbose) const
Definition: ns_queue.cpp:3243
x_SJobPick x_FindOutdatedPendingJob(const CNSClientId &client, unsigned int picked_earlier, const TNSBitVector &group_ids)
Definition: ns_queue.cpp:2856
void NotifyListenersPeriodically(const CNSPreciseTime &current_time)
Definition: ns_queue.cpp:3177
CNSPreciseTime m_ReadTimeout
Definition: ns_queue.hpp:679
CStatisticsCounters m_StatisticsCountersLastPrinted
Definition: ns_queue.hpp:710
bool PutProgressMessage(unsigned int job_id, CJob &job, const string &msg)
Definition: ns_queue.cpp:1331
unsigned int CancelSelectedJobs(const CNSClientId &client, const string &group, const string &aff_token, const vector< TJobStatus > &statuses, bool logging, vector< string > &warnings)
Definition: ns_queue.cpp:1874
bool ShouldPerfLogTransitions(void) const
Definition: ns_queue.hpp:471
void CheckExecutionTimeout(bool logging)
Definition: ns_queue.cpp:3301
unsigned SubmitBatch(const CNSClientId &client, vector< pair< CJob, string > > &batch, const string &group, bool logging, CNSRollbackInterface *&rollback_action)
Definition: ns_queue.cpp:520
TJobStatus ReadAndTouchJob(unsigned int job_id, CJob &job, CNSPreciseTime *lifetime)
Definition: ns_queue.cpp:1645
void RestorePauseStatus(TPauseStatus status)
Definition: ns_queue.hpp:461
CNSPreciseTime m_ClientRegistryTimeoutReader
Definition: ns_queue.hpp:742
unsigned int m_ClientRegistryMinUnknowns
Definition: ns_queue.hpp:745
void TimeLineAdd(unsigned int job_id, const CNSPreciseTime &job_time)
Definition: ns_queue.cpp:3594
unsigned int GetJobsToDeleteCount(void) const
Definition: ns_queue.cpp:4395
CNSPreciseTime m_ReadBlacklistTime
Definition: ns_queue.hpp:685
unsigned m_FailedRetries
Definition: ns_queue.hpp:681
TJobStatus FailReadingJob(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job, const string &auth_token, const string &err_msg, bool no_retries)
Definition: ns_queue.cpp:2208
TJobStatus SetJobListener(unsigned int job_id, CJob &job, unsigned int address, unsigned short port, const CNSPreciseTime &timeout, bool need_stolen, bool need_progress_msg, size_t *last_event_index)
Definition: ns_queue.cpp:1276
void ClearWorkerNode(const CNSClientId &client, bool &client_was_found, string &old_session, bool &had_wn_pref_affs, bool &had_reader_pref_affs)
Definition: ns_queue.cpp:3148
CNSPreciseTime m_ReaderTimeout
Definition: ns_queue.hpp:689
void RegisterQueueResumeNotification(unsigned int address, unsigned short port, bool new_format)
Definition: ns_queue.cpp:4528
string GetAffinityTokenByID(unsigned int aff_id) const
Definition: ns_queue.cpp:3142
CJobTimeLine * m_RunTimeLine
Definition: ns_queue.hpp:642
void Dump(const string &dump_dir_name)
Definition: ns_queue.cpp:4629
bool GetJobForReadingOrWait(const CNSClientId &client, unsigned int port, unsigned int timeout, const list< string > *aff_list, bool reader_affinity, bool any_affinity, bool exclusive_new_affinity, bool prioritized_aff, const list< string > *group_list, bool affinity_may_change, bool group_may_change, CJob *job, bool *no_more_jobs, CNSRollbackInterface *&rollback_action, string &added_pref_aff)
Definition: ns_queue.cpp:2006
unsigned m_MaxOutputSize
Definition: ns_queue.hpp:687
unsigned int PurgeAffinities(void)
Definition: ns_queue.cpp:3697
void UpdatePerfLoggingSettings(const string &qclass)
Definition: ns_queue.cpp:227
CNSPreciseTime m_Timeout
Definition: ns_queue.hpp:677
void SetParameters(const SQueueParameters &params)
Definition: ns_queue.cpp:159
CNetScheduleKeyGenerator m_KeyGenerator
Definition: ns_queue.hpp:702
TJobStatus JobDelayExpiration(unsigned int job_id, CJob &job, const CNSPreciseTime &tm)
Definition: ns_queue.cpp:1121
void SetClientScope(const CNSClientId &client)
Definition: ns_queue.cpp:4101
CQueueClientInfoList m_ProgramVersionList
Definition: ns_queue.hpp:694
unsigned int x_CancelJobs(const CNSClientId &client, const TNSBitVector &jobs_to_cancel, bool logging)
Definition: ns_queue.cpp:1777
string PrintTransitionCounters(void) const
Definition: ns_queue.cpp:4402
string PrintScopesList(bool verbose) const
Definition: ns_queue.cpp:3294
CNSPreciseTime m_BlacklistTime
Definition: ns_queue.hpp:684
CNSPreciseTime NotifyExactListeners(void)
Definition: ns_queue.cpp:3237
void CancelWaitRead(const CNSClientId &client)
Definition: ns_queue.cpp:918
CNetScheduleAccessList m_SubmHosts
Definition: ns_queue.hpp:696
TJobStatus FailJob(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job, const string &auth_token, const string &err_msg, const string &output, int ret_code, bool no_retries, string warning)
Definition: ns_queue.cpp:2978
TJobStatus ReturnReadingJob(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job, const string &auth_token, bool is_ns_rollback, bool blacklist, TJobStatus target_status)
Definition: ns_queue.cpp:2226
unsigned int GetNextJobIdForBatch(unsigned count)
Definition: ns_queue.cpp:1975
TParameterList GetParameters() const
Definition: ns_queue.cpp:234
void MarkClientAsAdmin(const CNSClientId &client)
Definition: ns_queue.cpp:4088
bool x_UnregisterGetListener(const CNSClientId &client, unsigned short port)
Definition: ns_queue.cpp:4308
TQueueKind GetQueueKind(void) const
Definition: ns_queue.hpp:113
CNSClientsRegistry m_ClientsRegistry
Definition: ns_queue.hpp:652
size_t GetNotifCount(void) const
Definition: ns_queue.hpp:143
unsigned GetFailedRetries() const
Definition: ns_queue.hpp:781
string x_GetJobsDumpFileName(const string &dump_dname) const
Definition: ns_queue.cpp:4712
~CQueue()
Definition: ns_queue.cpp:139
TJobStatus JobDelayReadExpiration(unsigned int job_id, CJob &job, const CNSPreciseTime &tm)
Definition: ns_queue.cpp:1168
string MakeJobKey(unsigned int job_id) const
Definition: ns_queue.cpp:4046
string PrintJobDbStat(const CNSClientId &client, unsigned int job_id, TDumpFields dump_fields)
Definition: ns_queue.cpp:3801
TJobStatus PutResult(const CNSClientId &client, const CNSPreciseTime &curr, unsigned int job_id, const string &job_key, CJob &job, const string &auth_token, int ret_code, const string &output)
Definition: ns_queue.cpp:650
unsigned int m_JobsToDeleteOps
Definition: ns_queue.hpp:668
bool GetRefuseSubmits(void) const
Definition: ns_queue.hpp:136
size_t GetGroupsCount(void) const
Definition: ns_queue.hpp:142
CFastMutex m_LastIdLock
Definition: ns_queue.hpp:661
unsigned int Submit(const CNSClientId &client, CJob &job, const string &aff_token, const string &group, bool logging, CNSRollbackInterface *&rollback_action)
Definition: ns_queue.cpp:399
bool GetJobOrWait(const CNSClientId &client, unsigned short port, unsigned int timeout, const CNSPreciseTime &curr, const list< string > *aff_list, bool wnode_affinity, bool any_affinity, bool exclusive_new_affinity, bool prioritized_aff, bool new_format, const list< string > *group_list, CJob *new_job, CNSRollbackInterface *&rollback_action, string &added_pref_aff)
Definition: ns_queue.cpp:717
TJobStatus GetStatusAndLifetime(unsigned int job_id, string &client_ip, string &client_sid, string &client_phid, string &progress_msg, CNSPreciseTime *lifetime)
Definition: ns_queue.cpp:1218
void GetJobsPerState(const CNSClientId &client, const string &group_token, const string &aff_token, size_t *jobs, vector< string > &warnings) const
Definition: ns_queue.cpp:4420
void RemoveDump(const string &dump_dir_name)
Definition: ns_queue.cpp:4700
EJobReturnOption
Definition: ns_queue.hpp:97
@ eRollback
Definition: ns_queue.hpp:100
@ eWithoutBlacklist
Definition: ns_queue.hpp:99
@ eWithBlacklist
Definition: ns_queue.hpp:98
TJobStatus x_ResetDueTo(const CNSClientId &client, unsigned int job_id, const CNSPreciseTime &current_time, TJobStatus status_from, CJobEvent::EJobEvent event_type)
Definition: ns_queue.cpp:4111
CNSPreciseTime m_ClientRegistryTimeoutAdmin
Definition: ns_queue.hpp:738
unsigned int CountAllJobs(void) const
Definition: ns_queue.hpp:451
void Attach(void)
Definition: ns_queue.cpp:145
SPurgeAttributes CheckJobsExpiry(const CNSPreciseTime &current_time, SPurgeAttributes attributes, unsigned int last_job, TJobStatus status)
Definition: ns_queue.cpp:3502
void x_LogSubmit(const CJob &job)
Definition: ns_queue.cpp:390
void x_Erase(const TNSBitVector &job_ids, TJobStatus status)
Erase jobs from all structures, request delayed db deletion.
Definition: ns_queue.cpp:2480
unsigned int m_DumpGroupBufferSize
Definition: ns_queue.hpp:723
int TQueueKind
Definition: ns_queue.hpp:86
bool AnyJobs(void) const
Definition: ns_queue.hpp:453
x_SJobPick x_FindOutdatedJobForReading(const CNSClientId &client, unsigned int picked_earlier, const TNSBitVector &group_ids)
Definition: ns_queue.cpp:2918
CNSPreciseTime m_WNodeTimeout
Definition: ns_queue.hpp:688
list< pair< string, string > > TParameterList
Definition: ns_queue.hpp:116
CNetScheduleAccessList m_WnodeHosts
Definition: ns_queue.hpp:698
TJobStatus ReturnJob(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job, const string &auth_token, string &warning, TJobReturnOption how)
Definition: ns_queue.cpp:1357
unsigned int m_ClientRegistryMinSubmitters
Definition: ns_queue.hpp:741
bool IsReaderAllowed(unsigned host) const
Definition: ns_queue.hpp:795
int TPauseStatus
Definition: ns_queue.hpp:94
void TimeLineExchange(unsigned int remove_job_id, unsigned int add_job_id, const CNSPreciseTime &new_time)
Definition: ns_queue.cpp:3615
void x_ResetReadingDueToNewSession(const CNSClientId &client, const TNSBitVector &jobs)
Definition: ns_queue.cpp:4251
CNSPreciseTime m_ClientRegistryTimeoutWorkerNode
Definition: ns_queue.hpp:736
string PrintGroupsList(const CNSClientId &client, bool verbose) const
Definition: ns_queue.cpp:3277
TJobStatus GetJobStatus(unsigned job_id) const
Definition: ns_queue.cpp:1941
CNSPreciseTime GetMaxPendingWaitTimeout() const
Definition: ns_queue.hpp:777
void x_ClearQueue(void)
Definition: ns_queue.cpp:4822
void GetLinkedSections(map< string, map< string, string > > &linked_sections) const
Definition: ns_queue.cpp:262
unsigned int m_ReadJobsOps
Definition: ns_queue.hpp:673
TNSBitVector m_JobsToDelete
Definition: ns_queue.hpp:667
string PrintAllJobDbStat(const CNSClientId &client, const string &group, const string &aff_token, const vector< TJobStatus > &job_statuses, unsigned int start_after_job_id, unsigned int count, bool order_first, TDumpFields dump_fields, bool logging)
Definition: ns_queue.cpp:3858
bool IsEmpty() const
Definition: ns_queue.cpp:1947
TJobStatus RescheduleJob(const CNSClientId &client, unsigned int job_id, const string &job_key, const string &auth_token, const string &aff_token, const string &group, bool &auth_token_ok, CJob &job)
Definition: ns_queue.cpp:1465
CNSPreciseTime GetTimeout() const
Definition: ns_queue.hpp:761
CNSPreciseTime GetReadTimeout() const
Definition: ns_queue.hpp:769
TQueueKind m_Kind
Definition: ns_queue.hpp:646
string PrintAffinitiesList(const CNSClientId &client, bool verbose) const
Definition: ns_queue.cpp:3259
string x_DumpJobs(const TNSBitVector &jobs_to_dump, unsigned int start_after_job_id, unsigned int count, TDumpFields dump_fields, bool order_first)
Definition: ns_queue.cpp:3934
unsigned int m_ClientRegistryMinReaders
Definition: ns_queue.hpp:743
CNSNotificationList m_NotificationsList
Definition: ns_queue.hpp:714
CQueue(const string &queue_name, TQueueKind queue_kind, CNetScheduleServer *server, CQueueDataBase &qdb)
Definition: ns_queue.cpp:66
size_t GetGroupSlotsUsed(void) const
Definition: ns_queue.hpp:139
void RegisterSocketWriteError(const CNSClientId &client)
Definition: ns_queue.cpp:4094
size_t GetAffSlotsUsed(void) const
Definition: ns_queue.hpp:138
unsigned int m_ClientRegistryMinAdmins
Definition: ns_queue.hpp:739
void x_UpdateDB_ProvideJobNoLock(const CNSClientId &client, const CNSPreciseTime &curr, unsigned int job_id, ECommandGroup cmd_group, CJob &job)
Definition: ns_queue.cpp:4589
CNSPreciseTime m_MaxPendingReadWaitTimeout
Definition: ns_queue.hpp:692
CNSPreciseTime m_ClientRegistryTimeoutUnknown
Definition: ns_queue.hpp:744
unsigned int PurgeGroups(void)
Definition: ns_queue.cpp:3733
size_t GetScopeSlotsUsed(void) const
Definition: ns_queue.hpp:140
CStatisticsCounters m_StatisticsCounters
Definition: ns_queue.hpp:709
bool x_NoMoreReadJobs(const CNSClientId &client, const TNSBitVector &aff_list, bool reader_affinity, bool any_affinity, bool exclusive_new_affinity, const TNSBitVector &group_list, bool affinity_may_change, bool group_may_change)
Definition: ns_queue.cpp:276
unsigned m_MaxInputSize
Definition: ns_queue.hpp:686
bool IsWorkerAllowed(unsigned host) const
Definition: ns_queue.hpp:790
CNSAffinityRegistry m_AffinityRegistry
Definition: ns_queue.hpp:655
unsigned int m_DumpBufferSize
Definition: ns_queue.hpp:720
const bool & m_LogBatchEachJob
Definition: ns_queue.hpp:705
x_SJobPick x_FindVacantJob(const CNSClientId &client, const TNSBitVector &explicit_affs, const vector< unsigned int > &aff_ids, bool use_pref_affinity, bool any_affinity, bool exclusive_new_affinity, bool prioritized_aff, const TNSBitVector &group_ids, bool has_groups, ECommandGroup cmd_group)
Definition: ns_queue.cpp:2501
CNetScheduleAccessList m_ReaderHosts
Definition: ns_queue.hpp:700
CNSPreciseTime GetPendingTimeout() const
Definition: ns_queue.hpp:773
CNSPreciseTime x_GetEstimatedJobLifetime(unsigned int job_id, TJobStatus status) const
Definition: ns_queue.cpp:1863
const bool & m_Log
Definition: ns_queue.hpp:704
map< string, string > m_LinkedSections
Definition: ns_queue.hpp:725
void PrintJobCounters(void) const
Definition: ns_queue.cpp:4378
unsigned int m_SavedId
Definition: ns_queue.hpp:659
size_t GetGCBacklogCount(void) const
Definition: ns_queue.hpp:144
TJobStatus RedoJob(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job)
Definition: ns_queue.cpp:1585
TJobStatus RereadJob(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job, bool &no_op)
Definition: ns_queue.cpp:2249
CNSGroupsRegistry m_GroupRegistry
Definition: ns_queue.hpp:728
void x_NotifyJobChanges(const CJob &job, const string &job_key, ENotificationReason reason, const CNSPreciseTime &current_time)
Definition: ns_queue.cpp:4838
CNSPreciseTime GetRunTimeout() const
Definition: ns_queue.hpp:765
CNSPreciseTime m_NotifHifreqPeriod
Definition: ns_queue.hpp:716
string PrintJobsStat(const CNSClientId &client, const string &group_token, const string &aff_token, vector< string > &warnings) const
Definition: ns_queue.cpp:4477
void GetMaxIOSizesAndLinkedSections(unsigned int &max_input_size, unsigned int &max_output_size, map< string, map< string, string > > &linked_sections) const
Definition: ns_queue.cpp:248
unsigned int m_DumpClientBufferSize
Definition: ns_queue.hpp:721
void StaleNodes(const CNSPreciseTime &current_time)
Definition: ns_queue.cpp:3767
CFastMutex m_ParamLock
Definition: ns_queue.hpp:676
void x_ResetRunningDueToClear(const CNSClientId &client, const TNSBitVector &jobs)
Definition: ns_queue.cpp:4203
CJobGCRegistry m_GCRegistry
Definition: ns_queue.hpp:731
void OptimizeMem()
Definition: ns_queue.cpp:2494
void PurgeBlacklistedJobs(void)
Definition: ns_queue.cpp:3777
bool x_ValidateMaxJobsPerClientIP(unsigned int job_id, const map< string, size_t > &jobs_per_client_ip) const
Definition: ns_queue.cpp:2836
void CountTransition(CNetScheduleAPI::EJobStatus from, CNetScheduleAPI::EJobStatus to)
Definition: ns_queue.hpp:447
TJobStatus GetStatusAndLifetimeAndTouch(unsigned int job_id, CJob &job, CNSPreciseTime *lifetime)
Definition: ns_queue.cpp:1247
void TouchClientsRegistry(CNSClientId &client, bool &client_was_found, bool &session_was_reset, string &old_session, bool &had_wn_pref_affs, bool &had_reader_pref_affs)
Definition: ns_queue.cpp:4055
void EraseJob(unsigned job_id, TJobStatus status)
Definition: ns_queue.cpp:2463
void CancelWaitGet(const CNSClientId &client)
Definition: ns_queue.cpp:900
CNSPreciseTime m_MaxPendingWaitTimeout
Definition: ns_queue.hpp:691
list< string > ChangeAffinity(const CNSClientId &client, const list< string > &aff_to_add, const list< string > &aff_to_del, ECommandGroup cmd_group)
Definition: ns_queue.cpp:937
void x_UpdateDB_PutResultNoLock(unsigned job_id, const string &auth_token, const CNSPreciseTime &curr, int ret_code, const string &output, CJob &job, const CNSClientId &client)
Definition: ns_queue.cpp:4537
bool m_ShouldPerfLogTransitions
Definition: ns_queue.hpp:749
CNSPreciseTime m_RunTimeout
Definition: ns_queue.hpp:678
void x_RegisterReadListener(const CNSClientId &client, unsigned short port, unsigned int timeout, const TNSBitVector &aff_ids, bool reader_aff, bool any_aff, bool exclusive_new_affinity, const TNSBitVector &group_ids)
Definition: ns_queue.cpp:4290
unsigned int m_NotifLofreqMult
Definition: ns_queue.hpp:717
unsigned int DeleteBatch(unsigned int max_deleted)
Definition: ns_queue.cpp:3630
CNSPreciseTime m_StatisticsCountersLastPrintedTimestamp
Definition: ns_queue.hpp:711
CNSPreciseTime m_HandicapTimeout
Definition: ns_queue.hpp:718
CRWLock m_RunTimeLineLock
Definition: ns_queue.hpp:643
vector< CNetScheduleAPI::EJobStatus > m_StatesForRead
Definition: ns_queue.hpp:753
unsigned int m_LastId
Definition: ns_queue.hpp:658
TJobStatus Cancel(const CNSClientId &client, unsigned int job_id, const string &job_key, CJob &job, bool is_ns_rollback=false)
Definition: ns_queue.cpp:1673
CNSPreciseTime m_NotifHifreqInterval
Definition: ns_queue.hpp:715
CRWLock –.
Definition: ncbimtx.hpp:953
void CountTransition(CNetScheduleAPI::EJobStatus from, CNetScheduleAPI::EJobStatus to, ETransitionPathOption path_option=eNone)
Timeline class for fast approximate time tracking.
Definition: time_line.hpp:71
Bitvector Bit-vector container with runtime compression of bits.
Definition: bm.h:115
size_type count() const noexcept
population count (count of ON bits)
Definition: bm.h:2401
Definition: map.hpp:338
#define false
Definition: bool.h:36
static const struct attribute attributes[]
Definition: attributes.c:165
static SQLCHAR output[256]
Definition: print.c:5
char data[12]
Definition: iconv.c:80
EJobStatus
Job status codes.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
void ParseVersionString(const string &vstr, string *program_name, CVersionInfo *ver)
Parse string, extract version info and program name (case insensitive)
Definition: version.cpp:271
NetSchedule job status tracker.
Process information in the NCBI Registry, including working with configuration files.
The NCBI C++/STL use hints.
long TDumpFields
NetSchedule garbage collection registry.
NetSchedule job groups.
CTimeLine< TNSBitVector > CJobTimeLine
Definition: ns_queue.hpp:69
ENotificationReason
Definition: ns_types.hpp:62
ECommandGroup
Definition: ns_types.hpp:54
true_type verbose
Definition: processing.cpp:890
NetSchedule queue client version control.
static CNamedPipeClient * client
Netschedule queue client info.
Definition: queue_vc.hpp:51
string client_name
Definition: queue_vc.hpp:52
CVersionInfo version_info
Definition: queue_vc.hpp:53
x_SJobPick(unsigned int jid, bool excl, unsigned int aid)
Definition: ns_queue.hpp:495
unsigned int job_id
Definition: ns_queue.hpp:488
unsigned int aff_id
Definition: ns_queue.hpp:490
Statistical information about bitset's memory allocation details.
Definition: bm.h:125
Modified on Tue May 14 16:17:45 2024 by modify_doxy.py rev. 669887