CA Service Management

Expand all | Collapse all

Upgrading to latest version of JAVA in ServiceDesk

  • 1.  Upgrading to latest version of JAVA in ServiceDesk

    Posted May 05, 2016 04:06 AM

    Hi all,

     

    We recently upgraded JAVA on ServiceDesk 14.1 CUM1.

    The latest JAVA version we upgraded to is 1.8.0_91.

     

    What we have now noticed, is that in task manager on the server, hundreds of pdm_perl processes come in and they do not come down. They do not seem to be processing. We use some perl scripts to send out notifications and text messages.  Users then complain of not receiving notifications. 

     

    Has anyone out there observed the same behaviour, or would be able to advise?

     

     



  • 2.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 05, 2016 04:23 PM

    Hi,

     

    The version of java you're running may not be tested fully.  The supportability matrix says version 1.8.0_45 is the highest supported jre. 

     

    Supportability Matrix - CA Service Management - 14.1 - CA Technologies Documentation



  • 3.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 12, 2016 07:28 AM

    gbruneau

     

    They also see this problem with JRE 1.8.0_45



  • 4.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Broadcom Employee
    Posted May 06, 2016 02:51 AM

    HI James,

    Could you please explain how the notification been configured ..

    ~Vinod



  • 5.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 12, 2016 07:40 AM

    Hi Vinod,

     

    We have a requirement where we need to notify our contacts via both SMS and email.

    We have a perl_script that on one side calls our sms gateway and on the other side issues a pdm_mail command to send the mail out.

    We have now downgraded to version JRE 1.8.0_45 as per Brians comment.


    What seems to happen is that the pdm_perl scripts (using task manager) does not get executed. 
    These then build up to several hundreds and ServiceDesk then eventually stops sending any mail out. 
    We also lose Tomcat functionality as the WSDL returns an error. 

    Our method of recovering from this without bouncing servicedesk (as this is a live system) is to in task manager, kill Java, javaw, pdm_mail_eater, pdm_mail_nxd.  

    We also bounce pdm_tomcat_nxd and also end the first pdm_perl.exe that does not seem to be processing. 

    Sometimes the above works.....other times, we need to bounce ServiceDesk. 

    After a bounce of ServiceDesk, we seem to run for around a day and a half, before we have the above issues again. 




  • 6.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 12, 2016 08:21 AM

    The big question here is whether there is a compatibility issue between pdm_perl and the latest JRE (1.8.0_45 and above)??



  • 7.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 13, 2016 07:13 AM

    Hmm. What I don't understand, is how, pdm_perl is related to JRE.

    My understanding is: perl is perl and java is java. I don't see any dependencies in between these two.

    Of course, unless they call some java stuff from within their perl script, which may hang or not work for java incompatibility reasons.

    But this would be a pure java related issue and not perl related, as far as I understand...

    Second, would it be possibele to attch their perl script, to review it

    Regards

    .............MIchael



  • 8.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 13, 2016 08:50 AM

    #!/usr/bin/perl

    use Net::Telnet ();

    use POSIX qw(strftime);

     

     

    $dt_string = strftime "%Y%m%d", localtime;

    $tm_string = strftime "%H:%M:%S", localtime;

    $drv = "d:\\";

    $flname = "_xxxsms.log";

    $logfile = "$drv$dt_string$flname";

     

     

    #  Let us create a decent Perl log file to which we can log debugging information

    open (perl_log_file, ">>$logfile");

    # Let us lock the file

    flock perl_log_file, 2;

    print perl_log_file "####################################################\n" ;

    # Let us start logging to our perl log file

    print perl_log_file "Starting xxxsmsemail at $tm_string $dt_string and using log file - $logfile...\n" ;

     

     

    print perl_log_file "xxxsmsemail Now about to send email ..\n";

    `pdm_mail -m`;

    print perl_log_file "xxxsmsemail executed pdm_mail and so in theory sent the email...\n";

     

     

    (@message) = @ARGV;

    $TEXTS = $message[0];

    # Let us pause here for a few minutes while we wait for service desk to create the file passed onto us

    unless (-e $TEXTS && -f $TEXTS) {

        print perl_log_file "We now sleeping for 300sec or 5 minutes while waiting for service desk to create our notification file $TEXTS ..\n";

        sleep 300;

    }

     

     

    open(TEXTS) or die("Could not open notification file $TEXTS.");

    my $skline;

    my $objtype;

    my $lnum = 1;

    my $calltype = "";

    while( ($skline = <TEXTS>) && $lnum < 3){

      chomp($skline);

      print perl_log_file "$lnum: $skline\n";

      if ($lnum == 2) {$objtype = substr($skline,8)};

      $lnum++;

    }

    close(TEXTS);

    print perl_log_file "Object type from first section (line 2 in file $TEXTS) is: $objtype\n";

     

     

    open(TEXTS) or die("Could not open notification file $TEXTS.");

    my $skline2;

    my $cell;

    my $work;

    my $locn;

    my $skval="null";

    foreach $skline2 (<TEXTS>) {

      ($fhead, $skval) = split(':',$skline2);

        #chop($skval);  

        # do line-by-line processing.

      if ($fhead eq 'CustomerCell') {$cell = $skval};

      if ($fhead eq 'CustomerWork') {$work = $skval};

      if ($fhead eq 'CustomerLocation') {$locn = $skval};

      if ($fhead eq 'CustomerFloor') {$flor = $skval};

      if ($fhead eq 'CustomerPillar') {$pilr = $skval};

    };

    close(TEXTS);

    print perl_log_file "found values using the colon split:- cell-$cell work-$work location-$locn floor-$flor pillar-$pilr\n";

     

     

    open(TEXTS) or die("Could not open notification file $TEXTS.");

    foreach $line (<TEXTS>) {

      ($fhead, $fval) = split('=',$line);

        #chop($fval);  

        # do line-by-line processing.

      if ($objtype eq 'cr')  {

      if ($fhead eq 'NX_NTF_REF_NUM') {$callnum = $fval};

      }

      if ($objtype eq 'chg') {

      if ($fhead eq 'NX_NTF_CHG_REF_NUM') {$callnum = $fval};

      }

      if ($fhead eq 'NX_NTF_SUMMARY') {$summ = $fval};

      if ($fhead eq 'NX_NTF_DESCRIPTION') {$desc = $fval};

      if ($fhead eq 'NX_NTF_CATEGORY.SYM') {$catg = $fval};

      if ($fhead eq 'NX_NTF_PHONE_NUMBER') {$asgncell = $fval};

      if ($fhead eq 'NX_NTF_ASSIGNEE.COMBO_NAME') {$asgnname = $fval};

      if ($fhead eq 'NX_NTF_CUSTOMER.COMBO_NAME') {$custname = $fval};

    };

    close(TEXTS);

    $debug0="================== Stripped out Values ==================================

    Let us peruse the actual values we got from file $TEXTS :

    objtype = $objtype

    callnum = $callnum

    summary = $summ

    desc = $desc

    catg= $catg

    asgncell = $asgncell

    asgnname = $asgnname

    custname = $custname

    custcell = $cell

    custwork# = $work

    custloc = $locn

    floor = $flor

    pillar = $pilr

    =======================================================================\n";

    print perl_log_file "$debug0";

    chomp($desc);

    chomp($callnum);

    chomp($catg);

    chomp($summ);

    chomp($cell);

    chomp($flor);

    chomp($pilr);

    chomp($work);

    chomp($locn);

    chomp($asgncell);

    chomp($custname);

    chomp($asgnname);

     

     

    $mil="$callnum $custname $cell $work $summ $locn $flor $pilr $catg $desc";

     

     

    $transmitter=new Net::Telnet (Timeout => 5, Port => 4321);

     

     

          $transmitter->open("***.xx.x.***");

    # $transmitter->open("***.xx.x.***");

      $transmitter->binmode(1);

      $transmitter->telnetmode(0);

      $transmitter->output_record_separator("");

     

     

    $bindstring=join("","#0000000000|LOGON|9999|xxxSDESKLIVE|xxxSDESK123LIVE|000000000000000|00000000|0000|","\x0D","\x0A");

    # truncate if message is longer then 160 characters

      if ( length( $mil ) > 160 ) {

      # remove extra characters after 160

        $mil = substr( $mil, 0, 160 );

      print perl_log_file "The value of dollar mil truncated to 160 is : ####${mil}####\n";

         } else {

           # pad with spaces upto 160 characters

             $start = length( $mil ) + 1;

             for ( $t = $start; $t < 161; $t++ ) {

                   $mil .= " ";

                   }

      print perl_log_file "The value of dollar mil padded to 160 is : ####${mil}####\n";

             }

    print perl_log_file "About to send sms for $calltype number ###$callnum### to ###${asgnname}### using cellnumber ###${asgncell}### and the message ###${mil}###..\n";

     

     

    $sms=join("","#",$asgncell,"|",$mil,"|0000|000000000000000|00000000|0000|END|","\x0D","\x0A");

    print perl_log_file "xxxsmsemail SMS RC=", $transmitter->print($bindstring) , "\n";

    $transmitter->print($sms);

    print perl_log_file " transmitter RC=",$transmitter->get(), "\n";

    $transmitter->close;

    print perl_log_file "Ending xxxsmsemail at $tm_string $dt_string ..\n";

     

     

    #  Let us close the Perl log file to which we logged debugging information

    # Unlock the file first which we locked at the beginning after opening it

    flock perl_log_file, 8;

    close (perl_log_file);



  • 9.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 13, 2016 09:22 AM

    Thank you.

    next question:how do the log files look like.There should be many I guess, one for each running/hanging pm_perl command ,I guess? maybe don't paste them but try to attach as a file. and if there are hundres of files ,one would be enough, I hope

    Kind regards

    ...........Michael



  • 10.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 13, 2016 09:38 AM
      |   view attached

    Michael,

    Here is one log file. I am not sure when this happens again how am I at that moment going to identify the offending perl script in so far as the log file is concerned

    Regards

    Louis

    Attachment(s)



  • 11.  Re: Upgrading to latest version of JAVA in ServiceDesk

    Posted May 18, 2016 09:47 AM

    Michel, my question to CA will be.

    did any change be made to pdm_perl for 14.1 CP1

    I know by experience that pdm_perl is not a full implementation of the Perl engine and something may have been introduced that make jwood 1 script not compatible.

    From the error described and without review the perl code that will make more sense to me as first investigation.

    My 2 cents

    /J