Removing the ‘:terminateOfbiz’ Gradle task

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Removing the ‘:terminateOfbiz’ Gradle task

Mathieu Lirzin
Hello,

The ‘:terminateOfbiz’ Gradle task is meant to be run when ‘./gradlew
ofbiz --shutdown’ doesn't work.  Unfortunately this task is not working
on my GNU/linux system because the output of ‘ps ax’ cuts long lines.
As a consequence Gradle is not able to grep
"org.apache.ofbiz.base.start.Start" even if it is actually part of the
process command line as seen by the operating system.  As a reminder,
here is the implementation of that task:

    task terminateOfbiz(group: ofbizServer,
        description: 'Force termination of any running OFBiz servers, only use if \"--shutdown\" command fails') {
        doLast {
            if (os.contains('windows')) {
                Runtime.getRuntime().exec("wmic process where \"CommandLine Like \'%org.apache.ofbiz.base.start.Start%\'\" Call Terminate")
            } else {
                def processOutput = new ByteArrayOutputStream()
                exec {
                    commandLine 'ps', 'ax'
                    standardOutput = processOutput
                }
                processOutput.toString().split(System.lineSeparator()).each { line ->
                    if (line ==~ /.*org\.apache\.ofbiz\.base\.start\.Start.*/) {
                        exec { commandLine 'kill', '-9', line.tokenize().first() }
                    }
                }
            }
        }
    }
   
While it might be considered a bug at first hand, I personnally think
this failure is more a symptom of a desperate endeavour which is to
guess how the system of a user is managing its processes.  As a
consequence I will suggest to simply remove this task to not make false
promises to users and let them manage the processes on their system by
themselves. :-)

What do people think?

--
Mathieu Lirzin
GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37
Reply | Threaded
Open this post in threaded view
|

Re: Removing the ‘:terminateOfbiz’ Gradle task

taher
I think I might prefer to keep it. Perhaps adjusting the ps command might
better solve the issue. I use this feature regularly myself.

On Sun, Mar 17, 2019, 11:59 PM Mathieu Lirzin <[hidden email]>
wrote:

> Hello,
>
> The ‘:terminateOfbiz’ Gradle task is meant to be run when ‘./gradlew
> ofbiz --shutdown’ doesn't work.  Unfortunately this task is not working
> on my GNU/linux system because the output of ‘ps ax’ cuts long lines.
> As a consequence Gradle is not able to grep
> "org.apache.ofbiz.base.start.Start" even if it is actually part of the
> process command line as seen by the operating system.  As a reminder,
> here is the implementation of that task:
>
>     task terminateOfbiz(group: ofbizServer,
>         description: 'Force termination of any running OFBiz servers, only
> use if \"--shutdown\" command fails') {
>         doLast {
>             if (os.contains('windows')) {
>                 Runtime.getRuntime().exec("wmic process where
> \"CommandLine Like \'%org.apache.ofbiz.base.start.Start%\'\" Call
> Terminate")
>             } else {
>                 def processOutput = new ByteArrayOutputStream()
>                 exec {
>                     commandLine 'ps', 'ax'
>                     standardOutput = processOutput
>                 }
>
> processOutput.toString().split(System.lineSeparator()).each { line ->
>                     if (line ==~
> /.*org\.apache\.ofbiz\.base\.start\.Start.*/) {
>                         exec { commandLine 'kill', '-9',
> line.tokenize().first() }
>                     }
>                 }
>             }
>         }
>     }
>
> While it might be considered a bug at first hand, I personnally think
> this failure is more a symptom of a desperate endeavour which is to
> guess how the system of a user is managing its processes.  As a
> consequence I will suggest to simply remove this task to not make false
> promises to users and let them manage the processes on their system by
> themselves. :-)
>
> What do people think?
>
> --
> Mathieu Lirzin
> GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37
>
Reply | Threaded
Open this post in threaded view
|

Re: Removing the ‘:terminateOfbiz’ Gradle task

jleroux@apache.org
+1

This is currently also used by the demos because "ofbiz --shutdown" does not work with multiple instances

https://svn.apache.org/repos/asf/ofbiz/tools/demo-backup/trunk.sh

Of course resolving "ofbiz --shutdown" issue would be better. But I guess few people use multiple instances in production on the same server.

Jacques

Le 17/03/2019 à 22:39, Taher Alkhateeb a écrit :

> I think I might prefer to keep it. Perhaps adjusting the ps command might
> better solve the issue. I use this feature regularly myself.
>
> On Sun, Mar 17, 2019, 11:59 PM Mathieu Lirzin <[hidden email]>
> wrote:
>
>> Hello,
>>
>> The ‘:terminateOfbiz’ Gradle task is meant to be run when ‘./gradlew
>> ofbiz --shutdown’ doesn't work.  Unfortunately this task is not working
>> on my GNU/linux system because the output of ‘ps ax’ cuts long lines.
>> As a consequence Gradle is not able to grep
>> "org.apache.ofbiz.base.start.Start" even if it is actually part of the
>> process command line as seen by the operating system.  As a reminder,
>> here is the implementation of that task:
>>
>>      task terminateOfbiz(group: ofbizServer,
>>          description: 'Force termination of any running OFBiz servers, only
>> use if \"--shutdown\" command fails') {
>>          doLast {
>>              if (os.contains('windows')) {
>>                  Runtime.getRuntime().exec("wmic process where
>> \"CommandLine Like \'%org.apache.ofbiz.base.start.Start%\'\" Call
>> Terminate")
>>              } else {
>>                  def processOutput = new ByteArrayOutputStream()
>>                  exec {
>>                      commandLine 'ps', 'ax'
>>                      standardOutput = processOutput
>>                  }
>>
>> processOutput.toString().split(System.lineSeparator()).each { line ->
>>                      if (line ==~
>> /.*org\.apache\.ofbiz\.base\.start\.Start.*/) {
>>                          exec { commandLine 'kill', '-9',
>> line.tokenize().first() }
>>                      }
>>                  }
>>              }
>>          }
>>      }
>>
>> While it might be considered a bug at first hand, I personnally think
>> this failure is more a symptom of a desperate endeavour which is to
>> guess how the system of a user is managing its processes.  As a
>> consequence I will suggest to simply remove this task to not make false
>> promises to users and let them manage the processes on their system by
>> themselves. :-)
>>
>> What do people think?
>>
>> --
>> Mathieu Lirzin
>> GPG: F2A3 8D7E EB2B 6640 5761  070D 0ADE E100 9460 4D37
>>