proshut called from jenkins gives error 1423 for a running database on windows 10 - Forum - OpenEdge General - Progress Community

proshut called from jenkins gives error 1423 for a running database on windows 10

 Forum

proshut called from jenkins gives error 1423 for a running database on windows 10

This question is not answered

Hi,

I'm trying to replace a local database from within a Jenkins pipeline.

The database may or may not be running (eclipse PDSOE autostarted) so I added a proshut target to my ant build.

This works fine in an interactive session but fails when run from a jenkins agent

I have following target in an ant build file

   <target name="database_proshut" >

        <echo>Shutdown ${localdatadir}/${dbName}/${dbName}</echo>
        <exec dir="${localdatadir}/${dbName}" executable="${progress.DLC}/bin/_mprshut">
            <env key="DLC" value="${progress.DLC}" />
            <arg value="${dbName}" />
            <arg value="-by"/>
        </exec>

</target>

  • Windows 10
  • OpenEdge 11.7.4
  • Jenkins agent running as a service using same credentials as interactive session

If I execute this from the command line it works fine

C:\Users\cvb>ant -f git/ccesmarttools/CceSmartTools/files/devtools/buildnightly/build.xml -Dbasedir=. -Ddumptemp=c:\temp -Dlocaldatadir=c:/cce/localdata -DdbName=LISA database_proshut
Buildfile: C:\Users\cvb\git\ccesmarttools\CceSmartTools\files\devtools\buildnightly\build.xml

database_proshut:
     [echo] Shutdown c:/cce/localdata/LISA/LISA
     [exec] Shutdown is executing. (1613)
     [exec] Shutdown complete. (1614)

BUILD SUCCESSFUL
Total time: 6 seconds

Execute from within jenkins

The jenkins agent is running a a server, the server is running with the same credentials as the interactive session.

Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] echo
Will create local databases on port_cvb
[Pipeline] node
Running on CVB portable in C:\Users\cvb\jenkins_data\workspace\laptop localdatabase
[Pipeline] {
[Pipeline] dir
Running in c:\Users\cvb
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Create db)
[Pipeline] isUnix
[Pipeline] tool
[Pipeline] bat

c:\Users\cvb>ant -f git/ccesmarttools/CceSmartTools/files/devtools/buildnightly/build.xml -Dbasedir=. -Ddumptemp=c:\temp -Dlocaldatadir=c:/cce/localdata -DdbName=LISA database_proshut 
Buildfile: c:\Users\cvb\git\ccesmarttools\CceSmartTools\files\devtools\buildnightly\build.xml

database_proshut:
     [echo] Shutdown c:/cce/localdata/LISA/LISA
     [exec] There is no server for database LISA. (1423)
     [exec] Result: 8

BUILD SUCCESSFUL
Total time: 0 seconds
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // dir
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

All Replies
  • I do not know why _mproshut is failing, we stop / start databases from Jenkins using dbman with a sleep loop detecting .lk detection:

    <macrodef name="dbman">
    		<attribute name="name" />
    		<attribute name="name.ext" default="" />
    		<attribute name="action" default="start" />
    		<attribute name="progress" />
    		<attribute name="failonerror" default="false" />
    
    		<sequential xmlns:if="ant:if">
    
    			<local name="dlc" />
    			<property name="dlc" value="c:\progress\oe@{progress}" if:set="os.windows" />
    			<property name="dlc" value="/opt/progress/oe@{progress}" if:set="os.linux" />
    
    			<set-bat-extension />
    
    			<exec executable="${dlc}/bin/dbman${bat}" failonerror="@{failonerror}">
    				<env key="DLC" value="${dlc}" />
    				<arg value="-@{action}" />
    				<arg value="-db" />
    				<arg value="db${exact.release.short}@{name}@{name.ext}${build.type}" />
    			</exec>
    
    		</sequential>
    
    	</macrodef>

    		<echo message="stopping databases" />
    
    		<parallel>
    			<dbman progress="11.7" name="exactcs" action="stop" />
    			<dbman progress="11.7" name="edis" action="stop" />
    		</parallel>
    
    		<waitfor maxwait="60" maxwaitunit="second">
    			<not>
    				<and>
    					<available file="${working.dir}/db/exactcs.lk" />
    					<available file="${working.dir}/db/edis.lk" />
    				</and>
    			</not>
    		</waitfor>