1 | VDEFKIDS ;BPOIFO/JG - VDEF Patch Pre & Post Install ; 19 Dec 2005 3:06 PM
|
---|
2 | ;;1.0;VDEF;**3**;Dec 28, 2004
|
---|
3 | ;Per VHA Directive 2004-038, this routine should not be modified.
|
---|
4 | ;
|
---|
5 | ; IA: 10063 - $$ASKSTOP^%ZTLOAD
|
---|
6 | ; 10063 - RTN^%ZTLOAD
|
---|
7 | ; 10103 - $$FMADD^XLFDT
|
---|
8 | ;
|
---|
9 | PREIN ; This program will suspend all VDEF Request Queues and stop
|
---|
10 | ; the VDEF Monitor tasks for the install of this patch.
|
---|
11 | ; It is run as the KIDS Environment Check Routine because
|
---|
12 | ; if it is run as a Pre-Install routine, all the programs
|
---|
13 | ; in the build are already loaded which may cause
|
---|
14 | ; EDITED error trap errors.
|
---|
15 | ;
|
---|
16 | I $G(XPDNM)'?1"VDEF*".E W !,"Must be run as a KIDS Environment Check." S XPDABORT=1 Q
|
---|
17 | ;
|
---|
18 | ; Check for XU*8.0*339 patch
|
---|
19 | I '$L($T(JOB^%ZTLOAD)) W !,"XU*8.0*339 required for installation of this patch." S XPDABORT=1 Q
|
---|
20 | ;
|
---|
21 | ; Quit if loading a distribution, continue if installing.
|
---|
22 | Q:$G(XPDENV)'=1
|
---|
23 | W !!,"Suspending Request Queues and stopping associated TaskMan jobs"
|
---|
24 | NEW QUEUE,STAT,TMTASKC,TMTASKF,VDEFIDT,X,VDEFUP
|
---|
25 | S VDEFIDT=$$FMADD^XLFDT(DT,2)
|
---|
26 | K ^XTMP("VDEFP1") S ^XTMP("VDEFP1",0)=VDEFIDT_"^"_DT
|
---|
27 | ;
|
---|
28 | ; Suspend running Request Queues
|
---|
29 | S QUEUE=0 F S QUEUE=$O(^VDEFHL7(579.3,QUEUE)) Q:'QUEUE D
|
---|
30 | . S STAT=$$GET1^DIQ(579.3,QUEUE_",",.09,"I") I STAT="R" D
|
---|
31 | .. ; Suspend the request queue
|
---|
32 | .. S VDEFUP(579.3,QUEUE_",",.09)="S" D FILE^DIE("","VDEFUP")
|
---|
33 | .. ;
|
---|
34 | .. ; Stop the current & future TaskMan tasks
|
---|
35 | .. ; Wait up to 5 seconds for tasks to stop then delete them
|
---|
36 | .. ; anyway since that means the process probably died.
|
---|
37 | .. S TMTASKF=$$GET1^DIQ(579.3,QUEUE_",",.08,"I") ; Future
|
---|
38 | .. I TMTASKF'="" D
|
---|
39 | ... N ZTSK S ZTSK=TMTASKF S X=$$ASKSTOP^%ZTLOAD(ZTSK)
|
---|
40 | ... N I F I=1:1:5 D STAT^%ZTLOAD Q:ZTSK(1)=0!(ZTSK(1)>2) H 1
|
---|
41 | ... K I D KILL^%ZTLOAD
|
---|
42 | .. S TMTASKC=$$GET1^DIQ(579.3,QUEUE_",",.11,"I") ; Current
|
---|
43 | .. I TMTASKC'=""&(TMTASKC'=TMTASKF) D
|
---|
44 | ... N ZTSK S ZTSK=TMTASKC S X=$$ASKSTOP^%ZTLOAD(ZTSK)
|
---|
45 | ... N I F I=1:1:5 D STAT^%ZTLOAD Q:ZTSK(1)=0!(ZTSK(1)>2) H 1
|
---|
46 | ... K I D KILL^%ZTLOAD
|
---|
47 | .. S ^XTMP("VDEFP1",QUEUE)=""
|
---|
48 | ;
|
---|
49 | ; Stop the checked out request monitor
|
---|
50 | W !!,"Stopping the MONITOR^VDEFCONT task"
|
---|
51 | S ZTSK=$$GET1^DIQ(579.5,"1,",.06)
|
---|
52 | I ZTSK'="" D
|
---|
53 | . S X=$$ASKSTOP^%ZTLOAD(ZTSK)
|
---|
54 | . N I F I=1:1:5 D STAT^%ZTLOAD Q:ZTSK(1)=0!(ZTSK(1)>2) H 1
|
---|
55 | . K I D KILL^%ZTLOAD
|
---|
56 | ;
|
---|
57 | ; Stop the Request Queue process monitor
|
---|
58 | W !!,"Stopping the MONITOR^VDEFMON task"
|
---|
59 | N TASK D RTN^%ZTLOAD("VDEFMON","TASK")
|
---|
60 | S ZTSK=$O(TASK(0)) I ZTSK D
|
---|
61 | . S X=$$ASKSTOP^%ZTLOAD(ZTSK)
|
---|
62 | . N I F I=1:1:5 D STAT^%ZTLOAD Q:ZTSK(1)=0!(ZTSK(1)>2) H 1
|
---|
63 | . K I D KILL^%ZTLOAD
|
---|
64 | ;
|
---|
65 | ; Allow enough time for the VMS processes to quit.
|
---|
66 | W !!,"Waiting for processes to quit " N I F I=1:1:5 W ". " H 1
|
---|
67 | K I
|
---|
68 | Q
|
---|
69 | ;
|
---|
70 | ;
|
---|
71 | POSTIN ; This program will restart suspended Request Queues start the VDEF
|
---|
72 | ; monitor processes after the KIDS install.
|
---|
73 | ;
|
---|
74 | I $G(XPDNM)'?1"VDEF*".E W !,"Must be run as a KIDS Environment Check." S XPDABORT=1 Q
|
---|
75 | ;
|
---|
76 | ; Don't start VDEF processes on test and Legacy systems
|
---|
77 | I '$$PROD^XUPROD(1) D BMES^XPDUTL("VDEF is not started on test systems.") Q
|
---|
78 | D BMES^XPDUTL("Starting the Request Queues and associated Tasks")
|
---|
79 | ;
|
---|
80 | ; For each Request Queue defined, change the status to
|
---|
81 | ; 'Running' and start the Request Queue process for the queue.
|
---|
82 | NEW QUEUE,STAT,VDEFUP,I,QUENAM
|
---|
83 | S QUEUE=0 F S QUEUE=$O(^XTMP("VDEFP1",QUEUE)) Q:'QUEUE D
|
---|
84 | . S QUENAM=$P(^VDEFHL7(579.3,QUEUE,0),U)
|
---|
85 | . S STAT=$$GET1^DIQ(579.3,QUEUE_",",.09,"I") I STAT="S" D
|
---|
86 | .. S VDEFUP(579.3,QUEUE_",",.09)="R" D FILE^DIE("","VDEFUP")
|
---|
87 | .. F I=1:1:5 S STAT=$$GET1^DIQ(579.3,QUEUE_",",.09,"I") Q:STAT="R" H 1
|
---|
88 | .. I STAT="R" D REQ^VDEFCONT(QUEUE)
|
---|
89 | .. E D BMES^XPDUTL("**** VDEF '"_QUENAM_"' QUEUE DID NOT START. START IT FROM VDEF CONFIG MENU.")
|
---|
90 | K ^XTMP("VDEFP1")
|
---|
91 | ;
|
---|
92 | ; Restart the Checked Out monitor process.
|
---|
93 | D BMES^XPDUTL("Starting the MONITOR^VDEFCONT task")
|
---|
94 | D MONCHKO^VDEFCONT
|
---|
95 | ;
|
---|
96 | ; Restart the Request Queue process monitor.
|
---|
97 | D BMES^XPDUTL("Starting the MONITOR^VDEFMON task")
|
---|
98 | D START1^VDEFMON
|
---|
99 | Q
|
---|