Chapter 10. Upgrading HTTPD
This chapter moves a system that runs an older HTTPD to HTTPD 4.5.1. It is written for a system that HTTPD 4.0.x, 4.1.x, 4.2.x, 4.3.x, 4.4.x or 4.5.0 installed by SMP, and it has a section for a system that still runs HTTPD 3.x. The release that 4.5.1 replaces in one step is 4.5.0. A system at an older release goes to 4.5.0 first (“One Release at a Time”). A system without HTTPD needs Chapter 2, “Installing HTTPD”, and a system that should lose HTTPD needs Chapter 11, “Removing HTTPD”.
The upgrade is the same install job as in Chapter 2, “Installing HTTPD”, with a different effect. Each release names its predecessor in the SYSMOD. When SMP applies the new release, it deletes the load modules of the old one from HTTPD.LINKLIB and copies the new ones in. This is what an upgrade does:
- It replaces the five load modules in place. The names of the data sets carry no version, so the
STEPLIBof the procedure and the APF entry stay as they are. - It does not run the allocation job. The libraries exist already.
- It does not touch the document root disk.
- It does not touch your procedure, your Parmlib member or your RAKF definitions. SMP never writes to
PARMLIBor to a procedure library. What changed in the sample members is yours to compare and to carry over (“After the Upgrade: Review Your Own Files”). - It leaves no way back. The install job accepts the new level, and the old FMID is deleted. SMP cannot restore the old modules.
The captures in this chapter come from the upgrade from 4.5.0 to 4.5.1 on a TK5 system. Every step of the install job ended with return code 0000 except the APPLY, which ended with return code 0004 and HMA2461 SYSMOD THTP450 NOT FOUND ON SMPSCDS LIBRARY. The package of 4.5.1 was built from the source of the release branch, with the version in the project file changed from 4.5.1-dev to 4.5.1. The build stamp in the start-up banner is therefore not the one of the published package (“Verifying the Upgrade”). The file names in your package carry the number of your release.
One Release at a Time
Go from release to release. Do not skip one. The reason is in the way SMP decides who owns a module.
The FMID of a release is THTP and the three digits of its version. For a minor release, the package build derives the FMID and the predecessor from the version number. 4.5.1 is a patch release, which the derivation has no id for, so the project file of 4.5.1 names both: THTP451, deleting THTP450. A release deletes only the FMID of the release before it.
| Release | FMID | Deletes |
| 4.1.0 | THTP410 | THTP400 |
| 4.2.0 | THTP420 | THTP410 |
| 4.3.0 | THTP430 | THTP420 |
| 4.4.0 | THTP440 | THTP430 |
| 4.5.0 | THTP450 | THTP440 |
| 4.5.1 | THTP451 | THTP450 |
Table 34. Releases, FMIDs and what each one deletes
SMP keys the ownership of a module on its name. The SYSMOD of 4.5.1 can take over HTTPD from THTP450 because it deletes THTP450. It cannot take it over from THTP440 or from an older FMID. By the same rule, if the system is at 4.4.0 and you install 4.5.1, the SYSMOD does not own the module, and the install copies nothing. Every step still ends with return code 0. The inventory then says that 4.5.1 is installed, and the library holds the modules of 4.4.0. This rule is SMP’s and holds for every pair of releases. The case of 4.4.0 and 4.5.1 was run on a TK5 system at 4.4.0: every step of the install job of 4.5.1 ended with return code 0000, the APPLY had no HMA2380 line, and the banner of the started server still showed 4.4.0. The library kept the modules of 4.4.0.
A skipped release has a sign in the output. The APPLY step has no HMA2240 lines (a deleted load module) and no HMA2380 lines (a copied load module). A good upgrade has five of each. Look for them in every upgrade (“Reading the Result”). The lines NOT SEL are no sign: a good upgrade has them too.
Each id is spent once. The inventory of the skipped install is not a state you can repeat. This book does not show a measured repair for it. Check the level first (“Before You Start”), so that the case does not arise.
The accepted copy has its own zone, the ACDS, and the ACCEPT step deletes there on its own. An upgrade is complete when both zones have moved (“Verifying the Upgrade”).
A system at 4.0.x needs the packages of 4.1.0, 4.2.0, 4.3.0, 4.4.0 and 4.5.0 before the package of 4.5.1. The hop from 4.0.x to 4.1.0 is different from the others, and “Upgrading from HTTPD 4.0.x” describes it.
Before You Start
Goal: you know the present level, you have the packages you need, and you have kept what the upgrade replaces.
The present level. Ask SMP for the level of the load module HTTPD and for the two SYSMODs. The job is the procedure SMPAPP with these control statements. Name the FMID of your present level and the FMID of the release you install:
//LISTCDS EXEC SMPAPP //SMPCNTL DD * RESETRC . LIST CDS SYSMOD(THTP450) . LIST CDS LMOD(HTTPD) . LIST CDS SYSMOD(THTP451) . /*
The output of this job, on the system before the upgrade:
DATE 26.303 TIME 23:27:14 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0001
HMA4240 HMASMP EXEC PARM = 'DATE=U'
RESETRC .
HMA2050 RESETRC PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
LIST CDS SYSMOD(THTP450) .
DATE 26.303 TIME 23:27:14 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0002
SMPCDS SYSMOD ENTRIES
NAME
THTP450 TYPE = FUNCTION
STATUS = REC APP ACC
FMID = THTP450
JCLIN = YES
DATE/TIME REC = 26.303 23:13:01
APP = 26.303 23:13:37
ACC = 26.303 23:13:55
DELETE VER(001) = THTP440
MOD = ABEND0C1 HTTPD HTTPDM HTTPDMTT HTTPDSRV
DATE 26.303 TIME 23:27:14 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0003
HMA2050 LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
LIST CDS LMOD(HTTPD) .
DATE 26.303 TIME 23:27:14 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0004
SMPCDS LOAD MODULE ENTRIES
NAME
HTTPD LASTUPD = THTP450 TYPE=ADD
SYSTEM LIBRARY = LINKLIB
LKED ATTRIBUTES = COPY
DATE 26.303 TIME 23:27:14 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0005
HMA2050 LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
LIST CDS SYSMOD(THTP451) .
DATE 26.303 TIME 23:27:14 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0006
LIST SELECT SUMMARY REPORT FOR SMPCDS
THE FOLLOWING SELECTED ENTRIES WERE NOT FOUND OR WERE NOT ELIGIBLE FOR PROCESSING
TYPE NAME
SYSMOD THTP451
DATE 26.303 TIME 23:27:14 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0007
HMA2050 LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 04
HMA2050 HMASMP PROCESSING COMPLETED - HIGHEST RETURN CODE IS 04
Read three facts. The line LASTUPD = THTP450 under the load module HTTPD is the present level: the module in the library comes from that FMID. The SYSMOD THTP450 has the status REC APP ACC and the line DELETE VER(001) = THTP440, the one it replaced. And the new SYSMOD THTP451 is not known: the answer is the list of selected entries that were not found or not eligible, and the step ends with return code 04. That is the answer you want before the upgrade.
If LASTUPD does not name the predecessor of the release you are about to install (“One Release at a Time”), install the missing releases first.
The library members. The library before the upgrade, listed with the utility IEHLIST. The list is the reference for the comparison after the upgrade:
SYSTEMS SUPPORT UTILITIES---IEHLIST PAGE 1
DIRECTORY INFO FOR SPECIFIED PDS ON VOL TSO001
HTTPD.LINKLIB
MEMBERS TTRC VARIABLE USER DATA ---(USER DATA AND TTRC ARE IN HEX)
ABEND0C1 00292E2C 002A070000 000000C2C2 0152583060 0027B08800 00010000
HTTPD 002C1F2C 002D210000 000000C2C2 0478C80558 012CC08800 00010100
HTTPDM 00352B2C 0036050000 000000C2C2 016DD830C8 003BF88800 00010000
HTTPDMTT 0038252C 0039070000 000000C2C2 01669833A0 002D888800 00010000
HTTPDSRV 003B252C 003C0B0000 000000C2C2 02437009F8 00B9D88800 00010000
OF THE 00020 DIRECTORY BLOCKS ALLOCATED TO THIS PDS, 00019 ARE(IS) COMPLETELY UNUSED
The five members are the five load modules of the package. The column TTRC is the place of the member in the library.
Copies. The install job scratches HTTPD.SAMPLIB and receives it again (“Edit and Submit the Install Job”). If you edited a member there, copy the member out before you submit the job. Your procedure and your Parmlib member belong in PROCLIB and PARMLIB, where SMP does not look.
A way back is yours to build, outside SMP. Copy HTTPD.LINKLIB to a data set of another name before the upgrade, with the utility you prefer. In an emergency a STEPLIB that names the copy starts the old modules. The copy needs an APF entry of its own for that. This book shows no session of it.
The STEPLIB. Look at the STEPLIB of your procedure. If it names a development library before HTTPD.LINKLIB, that library wins, and the server keeps running the module of the development build after the upgrade. The system takes the first library of the concatenation that has the module. “The Started Task and the Package” in the HTTPD Reference, section “The STEPLIB”, has the rule.
Upgrading by One Release
An upgrade has the same tasks as an installation, without the allocation.
Stop the Server
Goal: nothing has HTTPD.LINKLIB open. The started task loads from the library, and the install job writes into it. A job that cannot get the library waits (Chapter 2, “Installing HTTPD” describes the wait).
Stop the server with the console command P HTTPD:
P HTTPD
HTTPD098I HTTPD SHUTTING DOWN
HTTPD060I SHUTDOWN SOCKET THREAD TCB(9AD080) TASK(162FC8) STACKSIZE(32768)
HTTPD060I SHUTDOWN WORKER(174C48) TCB(9A09C8) TASK(198FC8) STACKSIZE(65536)
HTTPD060I SHUTDOWN WORKER(174CC8) TCB(9A0CF8) TASK(187FC8) STACKSIZE(65536)
HTTPD060I SHUTDOWN WORKER(0ED7B0) TCB(9AD828) TASK(176FC8) STACKSIZE(65536)
HTTPD416I STATS: 0 REQUESTS, 0 ERRORS, 0 BYTES
HTTPD099I HTTPD SHUTDOWN COMPLETE
IEF404I HTTPD - ENDED - TIME=23.23.14
$HASP395 HTTPD ENDED
$HASP150 HTTPD ON PRINTER2 151 LINES
$HASP160 PRINTER2 INACTIVE - CLASS=Z
$HASP250 HTTPD IS PURGED
The message HTTPD098I starts the stop. The threads end one by one (HTTPD060I), and HTTPD416I prints the counters of the run. The message HTTPD099I says the shutdown is complete. The line $HASP395 HTTPD ENDED says that the address space is gone. Wait for it. There is no F HTTPD,SHUTDOWN, although the comments in the sample procedure list it (“Console Commands” in the HTTPD Reference).
Send the XMIT Files
Goal: the two XMIT files of the new release are on the system as data sets with fixed records of 80 bytes, sent in binary. The session is the same as for an installation:
$ ftp -v -n mvs.example.org 2121
Connected to mvs.example.org.
220 MVS 3.8j FTPD Server
ftp> user HERC01
331 Send password please.
Password:
230 HERC01 is logged on. Working directory is "HERC01.".
Remote system type is MVS.
ftp> progress off
Progress bar off.
ftp> binary
200 Representation type is Image
ftp> put httpd-4.5.1-load.xmit 'HERC01.HTTPD.LOAD.XMIT'
local: httpd-4.5.1-load.xmit remote: 'HERC01.HTTPD.LOAD.XMIT'
229 Entering Extended Passive Mode (|||2122|)
125 Storing data set HERC01.HTTPD.LOAD.XMIT
250 Transfer completed successfully.
843520 bytes sent in 00:03 (246.84 KiB/s)
ftp> put httpd-4.5.1-samplib.xmit 'HERC01.HTTPD.SAMP.XMIT'
local: httpd-4.5.1-samplib.xmit remote: 'HERC01.HTTPD.SAMP.XMIT'
229 Entering Extended Passive Mode (|||2122|)
125 Storing data set HERC01.HTTPD.SAMP.XMIT
250 Transfer completed successfully.
22240 bytes sent in 00:00 (278.88 KiB/s)
ftp> ls HTTPD.LOAD.XMIT
229 Entering Extended Passive Mode (|||2122|)
150 Opening data connection for file list
Volume Unit Referred Ext Used Recfm Lrecl BlkSz Dsorg Dsname
TSO001 3390 2026/10/30 1 19 FB 80 3120 PS HTTPD.LOAD.XMIT
226 List completed successfully.
ftp> ls HTTPD.SAMP.XMIT
229 Entering Extended Passive Mode (|||2122|)
150 Opening data connection for file list
Volume Unit Referred Ext Used Recfm Lrecl BlkSz Dsorg Dsname
TSO001 3390 2026/10/30 1 1 FB 80 3120 PS HTTPD.SAMP.XMIT
226 List completed successfully.
ftp> quit
221 Quit command received. Goodbye.
The names of the data sets are yours. The install job takes them in the next task. Chapter 2, “Installing HTTPD” explains the upload, and what to do with a text transfer. Use FTP or another route that does not need the HTTP server. If mvsMF is your upload path, it is stopped now.
Edit and Submit the Install Job
Goal: the install job names your two data sets. Do not run the allocation job. The package README says to run it before the install job. For an upgrade you skip that step: the libraries exist and hold the modules that the SYSMOD replaces.
Change the two RECEIVE INDSN lines of the install job and nothing else. The listing is the difference between the original and the edited job:
$ diff httpd-4.5.1-inst.jcl.orig httpd-4.5.1-inst.jcl
57c57
< RECEIVE INDSN('CHANGE.ME.HTTPLOAD') -
---
> RECEIVE INDSN('HERC01.HTTPD.LOAD.XMIT') -
66c66
< RECEIVE INDSN('CHANGE.ME.SAMPLIB') -
---
> RECEIVE INDSN('HERC01.HTTPD.SAMP.XMIT') -
Submit the job as in Chapter 2, “Installing HTTPD”. The job takes about a minute.
Reading the Result
Goal: know whether the upgrade did its work. The console shows that the job started and that it ended. It does not show the steps:
$HASP100 HTTPDINS ON INTRDR HTTPD INSTALL
$HASP373 HTTPDINS STARTED - INIT 1 - CLASS A - SYS TK5R
IEF403I HTTPDINS - STARTED - TIME=23.28.04
IEF404I HTTPDINS - ENDED - TIME=23.29.00
$HASP395 HTTPDINS ENDED
$HASP309 INIT 1 INACTIVE ******** C=A
IKJ144I UNDEFINED USERID(S)DUMMY
The step table is in the job log, with the time of each step:
J E S 2 J O B L O G
23.28.04 JOB nn $HASP373 HTTPDINS STARTED - INIT 1 - CLASS A - SYS TK5R
23.28.04 JOB nn IEF403I HTTPDINS - STARTED - TIME=23.28.04
23.28.04 JOB nn IEFACTRT - Stepname Procstep Program Retcode
23.28.04 JOB nn HTTPDINS DELOLD IDCAMS RC= 0000
23.28.04 JOB nn HTTPDINS RECV1 IKJEFT01 RC= 0000
23.28.04 JOB nn HTTPDINS RECV2 IKJEFT01 RC= 0000
23.28.05 JOB nn HTTPDINS RECV HMASMP HMASMP RC= 0000
23.28.22 JOB nn HTTPDINS APPLYCHK HMASMP HMASMP RC= 0000
23.28.48 JOB nn HTTPDINS APPLY HMASMP HMASMP RC= 0004
23.29.00 JOB nn HTTPDINS ACCEPT HMASMP HMASMP RC= 0000
23.29.00 JOB nn HTTPDINS CLEANUP IDCAMS RC= 0000
23.29.00 JOB nn IEF404I HTTPDINS - ENDED - TIME=23.29.00
23.29.00 JOB nn $HASP395 HTTPDINS ENDED
The step APPLY ends with 0004. That is the normal result of an upgrade. The next paragraphs say why. Every other step ends with 0000.
DELOLD. The step makes the two RECEIVE targets absent. Both are data sets of the previous run, so the capture looks different from the installation:
IDCAMS SYSTEM SERVICES TIME: 23:28:04 10/30/26 PAGE 1
DELETE HTTPD.HTTPLOAD NONVSAM SCRATCH PURGE
IKJ56228I DATA SET HTTPD.HTTPLOAD NOT IN CATALOG OR CATALOG CAN NOT BE
IKJ56228I ACCESSED
IDC0551I **ENTRY HTTPD.HTTPLOAD NOT DELETED
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 8
DELETE HTTPD.SAMPLIB NONVSAM SCRATCH PURGE
IDC0550I ENTRY (A) HTTPD.SAMPLIB DELETED
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0
SET MAXCC=0
IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 0
The data set HTTPD.HTTPLOAD is not in the catalog. The previous install job scratched it in its last step, and the delete ends with condition code 8. The data set HTTPD.SAMPLIB exists, and the message IDC0550I says it is deleted. Your copies of the old members are gone with it. The statement SET MAXCC=0 makes the step end with 0.
RECV1 and RECV2. TSO RECEIVE unpacks the two XMIT files:
RECEIVE INDSN('HERC01.HTTPD.LOAD.XMIT') DATASET('HTTPD.HTTPLOAD')
NJE38 RECEIVE v2.5.0
Receiving 'HTTPD.V4R5M1.LINKLIB' from ORIGNODE(IBMUSER)
Receive into 'HTTPD.HTTPLOAD' successful
END
RECEIVE INDSN('HERC01.HTTPD.SAMP.XMIT') DATASET('HTTPD.SAMPLIB')
NJE38 RECEIVE v2.5.0
Receiving 'HTTPD.SAMPLIB' from ORIGNODE(HTTPD)
Receive into 'HTTPD.SAMPLIB' successful
END
The line to find is Receive into ... successful. The name after Receiving is the name the XMIT had where it was made. It is not the name of your data set.
RECV. SMP stores the SYSMOD. The output repeats it and ends with HMA3930:
DATE 26.303 TIME 23:28:05 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0001
HMA4240 HMASMP EXEC PARM = 'DATE=U'
RESETRC .
HMA2050 RESETRC PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
RECEIVE SELECT(THTP451) .
----------++FUNCTION(THTP451) .
----------++VER(Z038) DELETE(THTP450)
---------- /* httpd 4.5.1 */
---------- /* Load modules are copied from the LKLIB, not re-bound. */ .
----------++JCLIN .
----------++MOD(ABEND0C1) LKLIB(HTTPLOAD) DISTLIB(AHTTPLOD) .
----------++MOD(HTTPD) LKLIB(HTTPLOAD) DISTLIB(AHTTPLOD) .
----------++MOD(HTTPDM) LKLIB(HTTPLOAD) DISTLIB(AHTTPLOD) .
----------++MOD(HTTPDMTT) LKLIB(HTTPLOAD) DISTLIB(AHTTPLOD) .
----------++MOD(HTTPDSRV) LKLIB(HTTPLOAD) DISTLIB(AHTTPLOD) .
HMA3930 SYSMOD THTP451 SUCCESSFULLY RECEIVED
DATE 26.303 TIME 23:28:05 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0002
RECEIVE SUMMARY REPORT
SYSMOD STATUS TYPE ------------------------
THTP451 RECEIVED FUNCTION
DATE 26.303 TIME 23:28:05 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0003
HMA2050 RECEIVE PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
HMA2050 HMASMP PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
The second line of the SYSMOD is the one that makes the upgrade: ++VER(Z038) DELETE(THTP450). It names the predecessor.
APPLYCHK. A dry run. It changes nothing. The summary names the predecessor as deleted:
DATE 26.303 TIME 23:28:05 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0001
HMA4240 HMASMP EXEC PARM = 'DATE=U'
APPLY S(THTP451) CHECK .
HMA4180 INLINE JCLIN PROCESSING SUCCESSFUL FOR SYSMOD=THTP451
HMA2050 APPLY PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
DATE 26.303 TIME 23:28:22 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0002
SYSMOD STATUS REPORT FOR APPLY CHECK PROCESSING
NOTE: '-' INDICATES THE REQUISITE SYSMOD CONDITION IS NOT SATISFIED
'*' INDICATES THE NON SATISFIED REQUISITE SYSMOD CONDITION IS BYPASSED
SYSMOD STATUS TYPE FMID REQUISITE AND SUPEDBY SYSMODS
THTP450 DELETED FUNCTION THTP450
THTP451 APPLIED FUNCTION THTP451
DATE 26.303 TIME 23:28:22 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0003
ELEMENT SUMMARY REPORT FOR APPLY CHECK PROCESSING
ELEM ELEMENT ELEM CURRENT CURRENT MAC/SRC DISTSRC ASSEM LOAD MOD ---LMOD SYSLIB--- SYSMOD SYSMOD
TYPE NAME STATUS FMID RMID SYSLIB LIBRARY NAMES NAME STATUS
MOD ABEND0C1 APPLIED THTP451 THTP451 ABEND0C1 LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
MOD HTTPD APPLIED THTP451 THTP451 HTTPD LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
MOD HTTPDM APPLIED THTP451 THTP451 HTTPDM LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
MOD HTTPDMTT APPLIED THTP451 THTP451 HTTPDMTT LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
MOD HTTPDSRV APPLIED THTP451 THTP451 HTTPDSRV LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
DATE 26.303 TIME 23:28:22 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0004
DELETED FUNCTION REPORT FOR APPLY CHECK PROCESSING
SYSMOD DELETED THE
CAUSING THE FOLLOWING SYSMODS
DELETION TYPE SYSMOD
THTP451 FUNCTION THTP450
DATE 26.303 TIME 23:28:22 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0005
HMA2050 HMASMP PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
The return code is 00. The lines THTP450 DELETED show that SMP knows the predecessor and will delete it. The step has no HMA2240 and no HMA2380, because a check does not do the work.
APPLY. This step does the work:
DATE 26.303 TIME 23:28:23 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0001
HMA4240 HMASMP EXEC PARM = 'DATE=U'
APPLY S(THTP451) DIS(WRITE) .
HMA4140 SMPCDS DIRECTORY SUCCESSFULLY LOADED FOR IN-STORAGE UPDATE OPERATIONS
HMA2240 SUCCESSFULLY DELETED LMOD ABEND0C1 ON LINKLIB LIBRARY
HMA2240 SUCCESSFULLY DELETED LMOD HTTPD ON LINKLIB LIBRARY
HMA2240 SUCCESSFULLY DELETED LMOD HTTPDM ON LINKLIB LIBRARY
HMA2240 SUCCESSFULLY DELETED LMOD HTTPDMTT ON LINKLIB LIBRARY
HMA2240 SUCCESSFULLY DELETED LMOD HTTPDSRV ON LINKLIB LIBRARY
HMA4180 INLINE JCLIN PROCESSING SUCCESSFUL FOR SYSMOD=THTP451
HMA2380 COPY SUCCESSFUL - MOD=ABEND0C1 - LMOD=ABEND0C1 - LIBRARY=LINKLIB - SYSMOD=THTP451 - RETURN CODE=00
HMA2380 COPY SUCCESSFUL - MOD=HTTPD - LMOD=HTTPD - LIBRARY=LINKLIB - SYSMOD=THTP451 - RETURN CODE=00
HMA2380 COPY SUCCESSFUL - MOD=HTTPDM - LMOD=HTTPDM - LIBRARY=LINKLIB - SYSMOD=THTP451 - RETURN CODE=00
HMA2380 COPY SUCCESSFUL - MOD=HTTPDMTT - LMOD=HTTPDMTT - LIBRARY=LINKLIB - SYSMOD=THTP451 - RETURN CODE=00
HMA2380 COPY SUCCESSFUL - MOD=HTTPDSRV - LMOD=HTTPDSRV - LIBRARY=LINKLIB - SYSMOD=THTP451 - RETURN CODE=00
HMA2270 APPLY PROCESSING SUCCESSFULLY COMPLETED FOR SYSMOD THTP451
HMA2461 SYSMOD THTP450 NOT FOUND ON SMPSCDS LIBRARY
HMA3680 SMPCDS IN STORAGE DIRECTORY SUCCESSFULLY REWRITTEN
HMA2050 APPLY PROCESSING COMPLETED - HIGHEST RETURN CODE IS 04
DATE 26.303 TIME 23:28:47 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0002
SYSMOD STATUS REPORT FOR APPLY PROCESSING
NOTE: '-' INDICATES THE REQUISITE SYSMOD CONDITION IS NOT SATISFIED
'*' INDICATES THE NON SATISFIED REQUISITE SYSMOD CONDITION IS BYPASSED
SYSMOD STATUS TYPE FMID REQUISITE AND SUPEDBY SYSMODS
THTP450 DELETED FUNCTION THTP450
THTP451 APPLIED FUNCTION THTP451
DATE 26.303 TIME 23:28:47 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0003
ELEMENT SUMMARY REPORT FOR APPLY PROCESSING
ELEM ELEMENT ELEM CURRENT CURRENT MAC/SRC DISTSRC ASSEM LOAD MOD ---LMOD SYSLIB--- SYSMOD SYSMOD
TYPE NAME STATUS FMID RMID SYSLIB LIBRARY NAMES NAME STATUS
MOD ABEND0C1 APPLIED THTP451 THTP451 ABEND0C1 LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
MOD HTTPD APPLIED THTP451 THTP451 HTTPD LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
MOD HTTPDM APPLIED THTP451 THTP451 HTTPDM LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
MOD HTTPDMTT APPLIED THTP451 THTP451 HTTPDMTT LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
MOD HTTPDSRV APPLIED THTP451 THTP451 HTTPDSRV LINKLIB THTP451 APPLIED
NOT SEL THTP450 DELETED
DATE 26.303 TIME 23:28:47 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0004
DELETED FUNCTION REPORT FOR APPLY PROCESSING
SYSMOD DELETED THE
CAUSING THE FOLLOWING SYSMODS
DELETION TYPE SYSMOD
THTP451 FUNCTION THTP450
DATE 26.303 TIME 23:28:47 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0005
HMA2050 HMASMP PROCESSING COMPLETED - HIGHEST RETURN CODE IS 04
Read these lines in order:
HMA2240 SUCCESSFULLY DELETED LMOD ... ON LINKLIB LIBRARY, five times. SMP deletes the load modules of the old FMID fromHTTPD.LINKLIB. This is the delete that the SYSMOD asked for.HMA4180 INLINE JCLIN PROCESSING SUCCESSFUL. SMP has read the JCLIN of the new SYSMOD.HMA2380 COPY SUCCESSFUL - MOD=... - LIBRARY=LINKLIB, five times. SMP copies the new load modules in. This is the line that separates a real upgrade from a silent one. Count it.HMA2270 APPLY PROCESSING SUCCESSFULLY COMPLETED FOR SYSMOD THTP451.HMA2461 SYSMOD THTP450 NOT FOUND ON SMPSCDS LIBRARY, and the return code 04. SMP looks for a backup entry of the deleted FMID, and a deleted FMID has none. The message comes after the success message and does not undo it.
The page at the end, DELETED FUNCTION REPORT, shows THTP451 as the function that deleted THTP450. The report is the second proof that the predecessor is gone.
The copy runs through the utility IEBCOPY. Its listing from the same step:
IEBCOPY MESSAGES AND CONTROL STATEMENTS PAGE 0001
COPY OUTDD=LINKLIB,INDD=HTTPLOAD
SELECT MEMBER=((ABEND0C1,,R)) THTP451
SELECT MEMBER=((HTTPD,,R)) THTP451
SELECT MEMBER=((HTTPDM,,R)) THTP451
SELECT MEMBER=((HTTPDMTT,,R)) THTP451
SELECT MEMBER=((HTTPDSRV,,R)) THTP451
IEB167I FOLLOWING MEMBER(S) COPIED FROM INPUT DATA SET REFERENCED BY HTTPLOAD -
IEB154I ABEND0C1 HAS BEEN SUCCESSFULLY COPIED
IEB154I HTTPD HAS BEEN SUCCESSFULLY COPIED
IEB154I HTTPDM HAS BEEN SUCCESSFULLY COPIED
IEB154I HTTPDMTT HAS BEEN SUCCESSFULLY COPIED
IEB154I HTTPDSRV HAS BEEN SUCCESSFULLY COPIED
IEB144I THERE ARE 0000018 UNUSED TRACKS IN OUTPUT DATA SET REFERENCED BY LINKLIB
IEB149I THERE ARE 0000019 UNUSED DIRECTORY BLOCKS IN OUTPUT DIRECTORY
IEB147I END OF JOB -00 WAS HIGHEST SEVERITY CODE
The marker R after each member name is the replace option: the new module replaces the member of the same name. A load module with the attribute AC(1) keeps it, because SMP copies the module and does not link it again.
ACCEPT. The step runs although the APPLY ended with 0004. The install job lets it run for a code of 4 or less. The step does the same work on the distribution library:
DATE 26.303 TIME 23:28:48 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0001
HMA4240 HMASMP EXEC PARM = 'DATE=U'
ACCEPT S(THTP451) DIS(WRITE) .
HMA4140 SMPACDS DIRECTORY SUCCESSFULLY LOADED FOR IN-STORAGE UPDATE OPERATIONS
HMA2240 SUCCESSFULLY DELETED MODULE ABEND0C1 ON AHTTPLOD LIBRARY
HMA2240 SUCCESSFULLY DELETED MODULE HTTPD ON AHTTPLOD LIBRARY
HMA2240 SUCCESSFULLY DELETED MODULE HTTPDM ON AHTTPLOD LIBRARY
HMA2240 SUCCESSFULLY DELETED MODULE HTTPDMTT ON AHTTPLOD LIBRARY
HMA2240 SUCCESSFULLY DELETED MODULE HTTPDSRV ON AHTTPLOD LIBRARY
HMA2380 COPY SUCCESSFUL - MOD=ABEND0C1 - LMOD=ABEND0C1 - LIBRARY=AHTTPLOD - SYSMOD=THTP451 - RETURN CODE=00
HMA2380 COPY SUCCESSFUL - MOD=HTTPD - LMOD=HTTPD - LIBRARY=AHTTPLOD - SYSMOD=THTP451 - RETURN CODE=00
HMA2380 COPY SUCCESSFUL - MOD=HTTPDM - LMOD=HTTPDM - LIBRARY=AHTTPLOD - SYSMOD=THTP451 - RETURN CODE=00
HMA2380 COPY SUCCESSFUL - MOD=HTTPDMTT - LMOD=HTTPDMTT - LIBRARY=AHTTPLOD - SYSMOD=THTP451 - RETURN CODE=00
HMA2380 COPY SUCCESSFUL - MOD=HTTPDSRV - LMOD=HTTPDSRV - LIBRARY=AHTTPLOD - SYSMOD=THTP451 - RETURN CODE=00
HMA2270 ACCEPT PROCESSING SUCCESSFULLY COMPLETED FOR SYSMOD THTP451
HMA3680 SMPACDS IN STORAGE DIRECTORY SUCCESSFULLY REWRITTEN
HMA2050 ACCEPT PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
DATE 26.303 TIME 23:29:00 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0002
SYSMOD STATUS REPORT FOR ACCEPT PROCESSING
NOTE: '-' INDICATES THE REQUISITE SYSMOD CONDITION IS NOT SATISFIED
'*' INDICATES THE NON SATISFIED REQUISITE SYSMOD CONDITION IS BYPASSED
SYSMOD STATUS TYPE FMID REQUISITE AND SUPEDBY SYSMODS
THTP450 DELETED FUNCTION THTP450
THTP451 ACCEPTED FUNCTION THTP451
DATE 26.303 TIME 23:29:00 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0003
ELEMENT SUMMARY REPORT FOR ACCEPT PROCESSING
ELEM ELEMENT ELEM CURRENT CURRENT MAC/SRC DISTSRC ASSEM LOAD MOD ---MOD DISTLIB--- SYSMOD SYSMOD
TYPE NAME STATUS FMID RMID DISTLIB LIBRARY NAMES NAME STATUS
MOD ABEND0C1 ACCEPTED THTP451 THTP451 AHTTPLOD THTP451 ACCEPTED
NOT SEL THTP450 DELETED
MOD HTTPD ACCEPTED THTP451 THTP451 AHTTPLOD THTP451 ACCEPTED
NOT SEL THTP450 DELETED
MOD HTTPDM ACCEPTED THTP451 THTP451 AHTTPLOD THTP451 ACCEPTED
NOT SEL THTP450 DELETED
MOD HTTPDMTT ACCEPTED THTP451 THTP451 AHTTPLOD THTP451 ACCEPTED
NOT SEL THTP450 DELETED
MOD HTTPDSRV ACCEPTED THTP451 THTP451 AHTTPLOD THTP451 ACCEPTED
NOT SEL THTP450 DELETED
DATE 26.303 TIME 23:29:00 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0004
DELETED FUNCTION REPORT FOR ACCEPT PROCESSING
SYSMOD DELETED THE
CAUSING THE FOLLOWING SYSMODS
DELETION TYPE SYSMOD
THTP451 FUNCTION THTP450
DATE 26.303 TIME 23:29:00 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0005
HMA2050 HMASMP PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
Five HMA2240 lines delete the old modules from AHTTPLOD, and five HMA2380 lines copy the new ones in. The step ends with 00. The gate in the job lets the ACCEPT run for an APPLY code of 4 or less. A code of 8 or more stops it.
CLEANUP. The last step scratches the staging library:
IDCAMS SYSTEM SERVICES TIME: 23:29:00 10/30/26 PAGE 1
DELETE HTTPD.HTTPLOAD NONVSAM SCRATCH PURGE
IDC0550I ENTRY (A) HTTPD.HTTPLOAD DELETED
IDC0001I FUNCTION COMPLETED, HIGHEST CONDITION CODE WAS 0
IDC0002I IDCAMS PROCESSING COMPLETE. MAXIMUM CONDITION CODE WAS 0
The return codes mean what they meant in Chapter 2, “Installing HTTPD”. The one difference is the 0004 of the APPLY. A 0004 in another step, or in a job that has no delete, needs a look at the messages. And a return code of 0 in every step does not show that the work happened. Count the HMA2240 and HMA2380 lines, and then verify (“Verifying the Upgrade”).
Verifying the Upgrade
Goal: the inventory and the library both show the new level.
The SMP record. Run the list job again. The control statements are the same as before the upgrade. The output:
DATE 26.303 TIME 23:30:46 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0001
HMA4240 HMASMP EXEC PARM = 'DATE=U'
RESETRC .
HMA2050 RESETRC PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
LIST CDS SYSMOD(THTP450) .
DATE 26.303 TIME 23:30:46 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0002
SMPCDS SYSMOD ENTRIES
NAME
THTP450 TYPE = FUNCTION
DELBY = THTP451
DATE 26.303 TIME 23:30:46 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0003
HMA2050 LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
LIST CDS LMOD(HTTPD) .
DATE 26.303 TIME 23:30:46 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0004
SMPCDS LOAD MODULE ENTRIES
NAME
HTTPD LASTUPD = THTP451 TYPE=ADD
SYSTEM LIBRARY = LINKLIB
LKED ATTRIBUTES = COPY
DATE 26.303 TIME 23:30:46 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0005
HMA2050 LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
LIST CDS SYSMOD(THTP451) .
DATE 26.303 TIME 23:30:46 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0006
SMPCDS SYSMOD ENTRIES
NAME
THTP451 TYPE = FUNCTION
STATUS = REC APP ACC
FMID = THTP451
JCLIN = YES
DATE/TIME REC = 26.303 23:28:05
APP = 26.303 23:28:43
ACC = 26.303 23:28:57
DELETE VER(001) = THTP450
MOD = ABEND0C1 HTTPD HTTPDM HTTPDMTT HTTPDSRV
DATE 26.303 TIME 23:30:46 HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS PAGE 0007
HMA2050 LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
HMA2050 HMASMP PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00
Four facts changed. The old SYSMOD THTP450 has lost its status, and it shows only the line DELBY = THTP451: the FMID that deleted it. The new SYSMOD THTP451 has the status REC APP ACC, the line DELETE VER(001) = THTP450 and the five modules. And the load module HTTPD has LASTUPD = THTP451. The old FMID stays in the inventory as a mark and is never used again.
The library. The IEHLIST listing after the upgrade:
SYSTEMS SUPPORT UTILITIES---IEHLIST PAGE 1
DIRECTORY INFO FOR SPECIFIED PDS ON VOL TSO001
HTTPD.LINKLIB
MEMBERS TTRC VARIABLE USER DATA ---(USER DATA AND TTRC ARE IN HEX)
ABEND0C1 00400B2C 0040240000 000000C2C2 0152583060 0027B08800 00010000
HTTPD 0042252C 0044010000 000000C2C2 047E480558 012FD88800 00010100
HTTPDM 004B3B2C 004C150000 000000C2C2 016DD830C8 003BF88800 00010000
HTTPDMTT 004E272C 004F180000 000000C2C2 01669833A0 002D888800 00010000
HTTPDSRV 0051272C 00521A0000 000000C2C2 02442009F8 00BA888800 00010000
OF THE 00020 DIRECTORY BLOCKS ALLOCATED TO THIS PDS, 00019 ARE(IS) COMPLETELY UNUSED
Compare it with the listing before. The five names are the same. The TTRC and the user data of each member are not. The members are new copies. If the listing is the same as before, the copy did not happen.
The start. Start the server with the old procedure and the old Parmlib member:
S HTTPD
$HASP100 HTTPD ON STCINRDR
$HASP373 HTTPD STARTED
IEF403I HTTPD - STARTED - TIME=23.31.22
HTTPD000I HTTPD 4.5.1 (nnnnnnn) STARTING
HTTPD005I LIBC370 2.26.0 (3AA3B28)
HTTPD002I AUTHORIZED BY SVC (MODULE KEY 8)
HTTPD004I STC IDENTITY SET TO HTTPD/USER VIA RACINIT
RAKF0004 INVALID ATTEMPT TO ACCESS SYSTEM: USER:HTTPPRB
HTTPD036I MODULE MVSMF REGISTERED FOR /zosmf/info
HTTPD036I MODULE MVSMF REGISTERED FOR /zosmf/services/authenticate
HTTPD036I MODULE MVSMF REGISTERED FOR /zosmf/*
HTTPD054I LISTENING ON ANY PORT 8080
HTTPD061I STARTING SOCKET THREAD TCB(9AD080) TASK(162FC8) STACKSIZE(32768)
HTTPD061I STARTING WORKER(0ED7B0) TCB(9AD828) TASK(176FC8) STACKSIZE(65536)
HTTPD061I STARTING WORKER(174CC8) TCB(9A0CF8) TASK(187FC8) STACKSIZE(65536)
HTTPD061I STARTING WORKER(174C48) TCB(9A09C8) TASK(198FC8) STACKSIZE(65536)
HTTPD001I HTTPD 4.5.1 READY - SERVING /www
The message HTTPD000I carries the version of the build, and HTTPD001I says that the server is ready. The three HTTPD036I lines are the routes of the member. If the version is not the one you installed, look at the STEPLIB (“Before You Start”). Send a request to the server, as in Chapter 3, “A First Request”.
Two things in the capture are new in 4.5.1. The stamp in HTTPD000I is shown as nnnnnnn: the package of the capture was built from the source of the release branch with the version changed from 4.5.1-dev to 4.5.1, and a start of the published package was not measured for this book. The line RAKF0004 INVALID ATTEMPT TO ACCESS SYSTEM: USER:HTTPPRB comes from the test of the security system at the start. It is expected on TK5 (RAKF 1.2.x) and MVS/CE (RAKF 2.0.0), and “Starting HTTPD” in Chapter 2, “Installing HTTPD” explains it. If the line HTTPD042W appears instead, the upgrade did not cause it: look at the tables of RAKF (“A Security System That Accepts Any User ID”).
What the SMP Upgrade Deletes
The delete covers the load modules of the predecessor and nothing more.
- In the target library. The five load modules
HTTPD,HTTPDSRV,HTTPDM,HTTPDMTTandABEND0C1, fromHTTPD.LINKLIB, then the new ones are copied in (theHMA2240andHMA2380lines of the APPLY). - In the distribution library. The same five, from
HTTPD.AHTTPLOD(the same messages in the ACCEPT). - In the inventory. The predecessor
THTP450becomes a mark with the lineDELBY. The listing shows it for the CDS, and the summary of the ACCEPT shows the same for the ACDS. The load module entries move to the new FMID.
The upgrade does not delete the procedure, the Parmlib member, the webroot disk, the RAKF entries and the mounts of UFSD. The sample library is not SMP’s: the first step of the job scratches it, and the package brings the new one. The capture shows a library of only five members, so this book does not show what SMP does with a foreign member in HTTPD.LINKLIB. The library belongs to SMP. Keep other modules, such as mvsMF, in a library of their own.
What was verified. The FMID rule comes from the project file. The entry [smp] prefix = "THTP" makes the build derive the FMID and the predecessor from the version, and the project file of 4.5.1 names fmid = "THTP451" and delete = ["THTP450"] itself, because 4.5.1 is a patch release. A package build of 4.5.1 produced ++FUNCTION(THTP451) and ++VER(Z038) DELETE(THTP450). The other rows of the table in “One Release at a Time” come from the project file and from the measured installs of the releases. The step output in this chapter is from the upgrade 4.5.0 to 4.5.1, where THTP451 deleted THTP450: THTP451 is a FUNCTION with the line DELETE VER(001) = THTP450, THTP450 shows DELBY = THTP451 and no modules, and HTTPD.LINKLIB and HTTPD.AHTTPLOD each hold the five members of the package. Earlier upgrades, from 4.3.0 to 4.4.0 and from 4.4.0 to 4.5.0, had the same shape.
Upgrading from HTTPD 4.0.x
The libraries of 4.0.x carry the version in their names. One of them is HTTPD.V4R0M1.LINKLIB. From 4.1.0 on, the names carry no version. The hop from 4.0.x to 4.1.0 is the one where the names change, and so it is the one hop that needs the allocation job. Every hop after it does not.
- Take the package of 4.1.0. Run its allocation job. It creates
HTTPD.LINKLIBandHTTPD.AHTTPLOD(Chapter 2, “Installing HTTPD”). - Make the new
HTTPD.LINKLIBavailable to the started task. Put it into theSTEPLIBof the procedure in place of the old library, and make it authorized, with an APF entry or through RAKF (“Authority” in Chapter 2, “Installing HTTPD”). The volume matters: the APF entry names it. - Send the XMIT files, edit the install job and submit it, as in “Upgrading by One Release”. The
APPLYstep deletesTHTP400from the new, empty library without a complaint, copies the five modules in, and ends with 0004. TheACCEPTstep ends with 0000. - Install 4.2.0, 4.3.0, 4.4.0, 4.5.0 and 4.5.1 in turn, each as in “Upgrading by One Release”. These hops skip the allocation job.
The install of 4.1.0 leaves the old libraries as they were. After the crossing, check these points:
- mvsMF. The old library held the module
MVSMF. The newHTTPD.LINKLIBdoes not, and it should not. Install mvsMF from its own package into a library of its own, and put the library into theSTEPLIBbehindHTTPD.LINKLIBor into the link list. Without it, a request for a route of mvsMF gets an error response (Chapter 2, “Installing HTTPD”). - The old libraries. The data sets
HTTPD.V4R0M*.*stay on the volume. Scratch them yourself, when the new server runs and nothing names them any more. List the data sets first, and check theSTEPLIB, the APF list and the link list. Look at the names before you scratch: an old webroot data set may carry a name of the same pattern. The document root disk is not a library of the product. It holds your content and the UFSD mount names it. Do not scratch it with them. - The procedure. Compare it with the sample (“After the Upgrade: Review Your Own Files”).
The JES2 DDs. The procedure of 4.0.0 had no HASPCKPT and HASPACE1 statements. mvsMF 1.3.0 and earlier open the two data sets by their DD names in the task of the server, and without the statements they answer a job list with status 500 and a request for one job with status 404. The sample procedure of 4.0.1 has the statements back. From 4.5.0 on, the sample procedure has them as comment lines, because mvsMF 1.4.0 and later do not need them. A procedure that you copied from 4.0.0 needs them active when you run mvsMF 1.3.0 or earlier or a JES2 with a prefix other than SYS1 (Chapter 2, “Installing HTTPD”).
A clean cut instead. If you have all the packages, but would rather not install five releases in turn, you can remove HTTPD with Chapter 11, “Removing HTTPD” and then install the current release with Chapter 2, “Installing HTTPD”. The removal job frees the FMIDs and scratches the libraries, and the installation is the one for a new system. Keep a copy of your procedure, your Parmlib member and your webroot disk first, because Chapter 11, “Removing HTTPD” treats the parts that SMP never owned in a step of its own. This way has not been run for this book as a whole.
Upgrading from HTTPD 3.x
HTTPD 3.x was not an SMP install, and the step from 3.x to 4.x is a migration and not an upgrade. The new server is a new install (Chapter 2, “Installing HTTPD”). It has a new procedure and a new configuration. This section lists what a reader of the old documentation needs to know.
The data sets of the new install have the names of Chapter 2, “Installing HTTPD”. If a data set of the old installation has one of those names, the allocation job cannot create it. Rename the old data set first. This book does not show the rename.
The configuration. The Lua configuration file is gone. The server reads the Parmlib member that the DD name HTTPPRM of the procedure names, with lines of the form KEYWORD=VALUE. Start from the sample member of the package (HTTPPRM0 in HTTPD.SAMPLIB) and move your settings into it. “The HTTPPRM Keywords” in the HTTPD Reference lists every keyword. Chapter 4, “Configuring HTTPD” explains the file.
The routes. A program route is a line MOD=PROGRAM /path with an optional AUTH=mode. A route without AUTH= is public. Write the AUTH= on every route (Chapter 5, “Routes and Server Modules”, Chapter 6, “Authentication and Security”). The 3.x keyword LOGIN has no place any more. HTTPD ends the start with HTTPD420E and CC 0008 if the value would have required a login (HTTPD048E), because the routes would be open without it. An empty value, or the value NONE, gives HTTPD048W and the start goes on. HTTPD does not turn the value into route policies: change the routes (“Routes and Authentication Policy” in the HTTPD Reference).
The parameter CONFIG. A procedure that passes PARM='CONFIG=...' still starts. HTTPD ignores the parameter and writes HTTPD024W and HTTPD024I, which says to use S HTTPD,M=MEMBER to choose a different member. Remove the parameter from the procedure. The command F HTTPD,D CONFIG shows with HTTPD133I which member HTTPD read.
Static files. The files are served from a UFS file system through UFSD, and from nowhere else. A data set as document root is not supported. Put the files into the webroot and have UFSD mount it (Chapter 2, “Installing HTTPD”, Chapter 7, “Serving Files”).
What is gone. These features of 3.x are not in 4.x:
| Feature | What to use now |
| The embedded FTP server | The standalone FTPD, as a started task of its own. |
| MQTT telemetry | Nothing replaces it. The server writes SMF records. |
| The Lua engine | HTTPLUA, a module of its own project that you add as a route. |
| The demo modules | Nothing. The module ABEND0C1 is still in the package, and it is inert unless a route names it. |
| A data set as document root | A UFS file system, through UFSD. |
| The in-memory statistics | SMF records. The keyword SMF has the default NONE, so set it if you want records (“The HTTPPRM Keywords” and the SMF chapter of the Reference). |
| HTTPJES2 and HTTPDSL | The dataset and jobs APIs of mvsMF. |
Table 35. Features of HTTPD 3.x that are not in 4.x
A route that names HTTPJES2 or HTTPDSL loads nothing. The start writes HTTPD440W for a module that is not found, and a request to the route gets status 503 with HTTPD908E on the console. Delete the line.
The DD names. Keep the statements HASPCKPT and HASPACE1 in the procedure when you run mvsMF 1.3.0 or earlier. A module runs in the task of the server, and these releases of mvsMF open the two data sets by DD name. From mvsMF 1.4.0 on, the statements are optional: the jobs API allocates SYS1.HASPCKPT and SYS1.HASPACE itself when the procedure has no DD. They stay needed on a JES2 whose prefix is not SYS1. Leaving them in is safe.
What is new. HTTP/1.1 with persistent connections and chunked transfer, a strict parser, and routing by the extension of a file with MOD= (Chapter 5, “Routes and Server Modules”).
The checklist. In this order:
- Install the 4.x package (Chapter 2, “Installing HTTPD”).
- Copy the sample Parmlib member and the sample procedure, and edit them for your system. Remove
CONFIG=from the procedure. - Start UFSD, and mount the webroot.
- Move your routes into the member, each with an
AUTH=. - Install FTPD as a separate task, if you used the FTP server.
- Decide on
SMF. - Start HTTPD and test with a client (Chapter 3, “A First Request”).
After the Upgrade: Review Your Own Files
The upgrade replaces the sample library and leaves your copies alone. Nothing in an old member is wrong because a newer sample exists, but a newer sample can contain a thing that your member lacks. Compare your member with the new new sample HTTPD.SAMPLIB(HTTPPRM0), and your procedure with HTTPD.SAMPLIB(HTTPD), by eye or with the compare tool of your system. These are the changes that a reader of an older release needs to look for. The first two matter for the safety of the system.
- The console route of mvsMF. Since 4.4.0 the sample member has the route
MOD=MVSMF /zosmf/restconsoles/*withAUTH=TOKEN RES=FACILITY:MVSMF.CONSOLE, before the route/zosmf/*. The console service issues operator commands for every caller who can log in, and mvsMF up to 1.3.0 checks nothing itself. From mvsMF 1.4.0 on it checks READ on the same profile too and refuses every user until the profile exists; the route stays as a first layer. The route must come before the catch-all, because the first match wins. A member that has only the line/zosmf/*has no check on the console service. Add the route, and define the profile in RAKF (Chapter 6, “Authentication and Security”). Without a profile the check permits everybody under RAKF, andHTTPD425Wsays so at the start. - The login checks of 4.5.1. Nothing in your files has to change. The server now compares the user that the security system returns with the userid that was typed, and refuses the login on a mismatch. It refuses every login of the started-task account. At the start it tests the security system once with a logon that must fail. On TK5 and MVS/CE this writes
RAKF0004 INVALID ATTEMPT TO ACCESS SYSTEM: USER:HTTPPRBto the console, and the line is expected. OnHTTPD042Wthe server refuses every login until the security software runs correctly and HTTPD has been restarted, while routes without a login still answer (“A Security System That Accepts Any User ID”). - The AUTH values. A route without
AUTH=is public. Open the member and read everyMODandLOCline for it. - A route whose profile is missing. From 4.5.0 the keyword
RES_NOPROFILE=DENYmakes a route withRES=refuse every request while its profile does not exist, instead of letting every user who is logged in pass. The sample member has it as a comment line, and without it nothing changes. Turn it on when the start prints noHTTPD425W(“Refusing a Route Whose Profile Is Missing”). - Resident modules. From 4.4.0 the keyword
RESIDENThas the defaultYES: HTTPD loads each module of a route once at the start and holds it until the end. A new level of a module then takes effect at the next restart. This matters when you install a new mvsMF. WithRESIDENT=NOevery request fetches the module. A module that is neither reentrant nor serially reusable is not held, and the start says so withHTTPD441W. - The procedure. It names the library in the
STEPLIBand the Parmlib member in theHTTPPRMstatement. From 4.0.1 on it had the two JES2 data sets, and from 4.5.0 on it has them as comment lines. Your own active statements keep working, so you need not change them. If you run mvsMF 1.4.0 or later on a JES2 with the prefixSYS1, you may comment them out. If you keep them, check thatUNITandVOL=SERmatch your own JES2 procedure.
“The HTTPPRM Keywords” in the HTTPD Reference has a section on the keywords that are no longer valid. A member from an earlier release starts, except for a retired LOGIN that required a login.
Problems at Upgrade
Chapter 12, “Troubleshooting” has the general table. These are the ones that belong to an upgrade.
| What you see | What it is and what to do |
The APPLY step ends with 0004 and the ACCEPT ran. | The normal result. The deleted FMID has no backup entry (HMA2461). |
Every step ends with 0000, but the APPLY has no HMA2240 and no HMA2380. | A release was skipped. The SYSMOD does not own the modules and copied nothing. The library still holds the old modules. List the level (“Before You Start”) and do not go on. |
The job waits, and the console shows IEF861I and IEF099I. | HTTPD still runs and has the library open. Stop it with P HTTPD and wait for $HASP395 HTTPD ENDED. |
| A RECEIVE step fails. | The upload was not binary, or the record format is wrong. Send the file again (Chapter 2, “Installing HTTPD”). |
The version in HTTPD000I is the old one. | The STEPLIB names another library first, or an old copy of the module is in the link list. Check both. |
The start ends with HTTPD420E and CC 0008. | A route lost its policy: a retired LOGIN (HTTPD048E), an unknown AUTH= value or a route that cannot be registered. Read all the messages before it. |
RAKF0004 ... USER:HTTPPRB at the start. | Expected on TK5 and MVS/CE since 4.5.1: the test of the security system. No user HTTPPRB needs to exist. |
HTTPD042W at the start, and every login is refused. | The security software accepts any user ID. On RAKF 1.2.x the user table is missing or was rejected at the IPL. Correct the tables, IPL, and restart HTTPD (“A Security System That Accepts Any User ID”). Until then the server refuses every login. |
HTTPD440W at the start. | A route names a module that HTTPD does not find in the STEPLIB or the link list. After a move from 4.0.x, mvsMF is the likely one. |
HTTPD002I says AUTHORIZED BY SVC, and you expect AUTHORIZED BY LIBRARY. Or HTTPD012E at the start. | The library is not the one the APF entry names, for example the new library of a move from 4.0.x on another volume. HTTPD falls back to the SVC of RAKF. Without RAKF it ends with HTTPD012E (“Authority” in Chapter 2, “Installing HTTPD”). |
| A job list of mvsMF answers 500. A request for one job or its spool answers 404 “job not found” although the job exists. | mvsMF 1.3.0 or earlier, or a JES2 with a prefix other than SYS1, and the procedure lacks HASPCKPT and HASPACE1. Add the two statements (Chapter 2, “Installing HTTPD”). |
Table 36. Problems at upgrade
To take HTTPD out of the system, follow Chapter 11, “Removing HTTPD”.