Post a reply

Options
Add an Attachment

If you do not want to add an Attachment to your Post, please leave the Fields blank.

(maximum 10 MB; please compress large files; only common media, archive, text and programming file formats are allowed)

Options

Topic review

martin

Re: How to Tell When execution has completed

What PID? Of a local WinSCP process or remote "database update" process? If the latter, than it's because your command spawns a child process that continues to run asynchronously. That's something WinSCP cannot control. You have to ensure the parent command does not exit before the actual (child) process.
achiku911

Re: How to Tell When execution has completed

martin wrote:

Again, the assembly interface is synchronous, including Session.ExecuteCommand. So it won't exit until the command finishes.


That is not what is happening. The command completes and it moves to another new session while I can see the PID of the previous process still active.

The reason I noticed is the database cannot index on two process at the same time. I get an error message that the previous index has not yet completed.
martin

Re: How to Tell When execution has completed

Again, the assembly interface is synchronous, including Session.ExecuteCommand. So it won't exit until the command finishes.
achiku911

Re: How to Tell When execution has completed

martin wrote:

Can you show your code. I do not understand the problem. The assembly interface is synchronous.



Below is the routine "ReindexDB" that I call from my code to reindex different databases. So, I have 5 different databases that I call one at a time, hoping the current one finishes before the next reindex starts. Some of these databases are big and for some reason it calls the next one before the other one is done. All I want to ensure is how I can check to see if the process is complete before the next one starts.


Public Sub ReindexDB()
Dim mySessionOptions As New SessionOptions
Dim strHostKey As String = ""
Dim strReindexPath As String = "cd /opt/IBM/JazzTeamServer_" & strJazzVersion & "/server; "
Dim strTime As DateTime = DateTime.Now
Dim strNow As String = "MMMM, dddd d, yyyy HH:mm"

frmMain.lblStatus.Text = strHeader + strStatus + "..."
frmMain.lblStatus.Refresh()

If strStatus = strCLMName Then strHostKey = strCLM
If strStatus = strRTCDevName Then strHostKey = strRTCDev
If strStatus = strCCM2Name Then strHostKey = strCCM2
If strStatus = strCCM2DevName Then strHostKey = strCCM2Dev

With mySessionOptions
.Protocol = Protocol.Scp
.HostName = strStatus
.UserName = strUserName
.Password = frmMain.txtPassword.Text
.SshHostKeyFingerprint = strHostKey
End With

Using mySession As Session = New Session
mySessionOptions.AddRawSettings("Shell", "pbrun su - vobadm")
mySession.Open(mySessionOptions)

Dim dumpCommand As String = String.Format(strReindexPath + strRunCommand + " >" + strDumpPath + "DB_Reindex/" + strStatus + strLogFile)
mySession.ExecuteCommand(dumpCommand)

strAttachment = strLogPath + "DB_Reindex/" + strStatus + strLogFile
End Using

frmMain.dgvInfo.Rows.Add(strHeader + strStatus + " @ " + strTime.ToString(strNow))
frmMain.dgvInfo.Rows.Add(" ")

For Each line As String In System.IO.File.ReadAllLines(strLogPath + "DB_Reindex/" + strStatus + strLogFile)
frmMain.dgvInfo.Rows.Add(line)
Next

frmMain.dgvInfo.Rows.Add(" ")

frmMain.dgvInfo.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
frmMain.dgvInfo.AutoResizeColumns()
End Sub
martin

Re: How to Tell When execution has completed

Can you show your code. I do not understand the problem. The assembly interface is synchronous.
achiku911

How to Tell When execution has completed

Using Vb.net and wanted to know when I execute a session, how can I tell if that session has completed before I move on to my next session? Currently, it seems like it is launching one sessions and moving to another session. That is making my command collide.

Also, I think because it stays in the same spot for awhile, the execution session may think it is done? What I am executing is a database reindex and since a database maybe large, the command doesn't move for maybe 10 - 15 minutes.