Missed Team ’24? Catch up on announcements here.

×
Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Connection Timeout in Workflow Post Function Script

Şükrü TURGUT August 27, 2020

Hi,

In my service desk project, on issue creation workflow there is a post-function running a script. 

The script includes a web service query . But usually the web service got connection timeout error. We controlled the network connections and permissions but cant find the root cause.

At the jira server when we write to browser  this 

http://****/****rest/service/get****/********

The response is to quick.

But when it is running in post-function script, it goes timeout.

Timeout set time is 20 seconds. I think it is enough.

"The script is for find the issue reporter's manager and add the manager for approve the issue."

 

this is the script :

import groovy.json.JsonSlurper;
import groovy.json.StreamingJsonBuilder;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.MutableIssue
import org.apache.commons.codec.binary.Base64;
import groovy.json.JsonBuilder;
import com.atlassian.jira.user.ApplicationUser;
import org.apache.log4j.Logger
import org.apache.log4j.Level
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption;

def log = Logger.getLogger("*******")
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def userManager = ComponentAccessor.getUserManager();

//for debug

def issueManager = ComponentAccessor.getIssueManager()

def usermail = issue.getReporter().getEmailAddress();
def baseURL="";

def cField = customFieldManager.getCustomFieldObject("customfield_****")
def cFieldValue = issue.getCustomFieldValue(cField)
if(cFieldValue){
def selectedValue = ((LazyLoadedOption)cFieldValue).getValue()
if(selectedValue.equals("******")) {
baseURL = "http://*****/*****/********/rest/service/get****/" + usermail + "/2";
}else{
baseURL = "http://*****/***/***/********/rest/service/get***/" + usermail + "/1";
}
}else return;


//set Url
def URL url;
url = new URL(baseURL);
//create Json Builder
def data = new JsonBuilder();

//make sure custom field value is not empty
//connection settings
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.requestMethod = "GET";
//connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type","application/json;charset=utf-8");
connection.setUseCaches(false);

//connect
connection.connect();

//debug
log.setLevel(Level.DEBUG)
log.debug connection.getResponseCode();
log.debug connection.getResponseMessage();
log.debug connection.getInputStream();
DataInputStream wr = new DataInputStream(connection.getInputStream());
String asdf = wr.readLine()
log.debug asdf;

if(asdf!=null){
String[] list=asdf.split(",");

List<ApplicationUser> newApprovers = [];

for(String asdf1 : list){
if(asdf1 != null && asdf1 != ""){

asdf1 = asdf1.replace("@*********","").trim();

ApplicationUser user = userManager.getUserByName(asdf1);

if(user!=null){
newApprovers.add(user);
}
}
}

}

 

Could anyone help.? Thank You.

0 answers

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
STANDARD
TAGS
AUG Leaders

Atlassian Community Events