ML07-0001-0

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:

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.

ReleaseFMIDDeletes
4.1.0THTP410THTP400
4.2.0THTP420THTP410
4.3.0THTP430THTP420
4.4.0THTP440THTP430
4.5.0THTP450THTP440
4.5.1THTP451THTP450

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:

  1. HMA2240 SUCCESSFULLY DELETED LMOD ... ON LINKLIB LIBRARY, five times. SMP deletes the load modules of the old FMID from HTTPD.LINKLIB. This is the delete that the SYSMOD asked for.
  2. HMA4180 INLINE JCLIN PROCESSING SUCCESSFUL. SMP has read the JCLIN of the new SYSMOD.
  3. 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.
  4. HMA2270 APPLY PROCESSING SUCCESSFULLY COMPLETED FOR SYSMOD THTP451.
  5. 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.

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.

  1. Take the package of 4.1.0. Run its allocation job. It creates HTTPD.LINKLIB and HTTPD.AHTTPLOD (Chapter 2, “Installing HTTPD”).
  2. Make the new HTTPD.LINKLIB available to the started task. Put it into the STEPLIB of 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.
  3. Send the XMIT files, edit the install job and submit it, as in “Upgrading by One Release”. The APPLY step deletes THTP400 from the new, empty library without a complaint, copies the five modules in, and ends with 0004. The ACCEPT step ends with 0000.
  4. 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:

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:

FeatureWhat to use now
The embedded FTP serverThe standalone FTPD, as a started task of its own.
MQTT telemetryNothing replaces it. The server writes SMF records.
The Lua engineHTTPLUA, a module of its own project that you add as a route.
The demo modulesNothing. The module ABEND0C1 is still in the package, and it is inert unless a route names it.
A data set as document rootA UFS file system, through UFSD.
The in-memory statisticsSMF 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 HTTPDSLThe 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:

  1. Install the 4.x package (Chapter 2, “Installing HTTPD”).
  2. Copy the sample Parmlib member and the sample procedure, and edit them for your system. Remove CONFIG= from the procedure.
  3. Start UFSD, and mount the webroot.
  4. Move your routes into the member, each with an AUTH=.
  5. Install FTPD as a separate task, if you used the FTP server.
  6. Decide on SMF.
  7. 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 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 seeWhat 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”.