简体   繁体   中英

Getting exception while executing Jenkins Pipeline: Caused: java.io.NotSerializableException: groovy.json.internal.LazyMap

I am trying to create the Jenkin pipeline, which makes http call to my thirdparty pipeline at different stage and based on response, proceed to next stage. Below is my jenkinsfile

 /* groovylint-disable CompileStatic, DuplicateListLiteral, DuplicateMapLiteral, DuplicateNumberLiteral, DuplicateStringLiteral, LineLength, MethodParameterTypeRequired, MethodReturnTypeRequired, NestedBlockDepth, NoDef, SpaceAroundMapEntryColon, UnnecessaryGetter, VariableTypeRequired */
 import groovy.json.JsonSlurper
 import groovy.json.*

def controlSessionId
def pullRequestId
def deployId
def header = [[name:'authorization', value:'token 653782812637euik1kesmsajmdiou237ue728787']]

def getPullRequests() {
    def header = [[name:'authorization', value:'token 653782812637euik1kesmsajmdiou237ue728787']]
    def response = httpRequest consoleLogResponseBody: false,
                    contentType: 'APPLICATION_JSON',
                    httpMode: 'GET',
                    url: 'https://thirdpartypipeline.ethos.corp.mycompany.com/v1/myproduct/myservice/pulls' ,
                    customHeaders: header

        /* println('Status: ' + response.status)
        println('Content: ' + response.content) */
    return response
}

def joinBuildQueue() {
    def header = [[name:'authorization', value:'token 653782812637euik1kesmsajmdiou237ue728787']]
    def response = httpRequest consoleLogResponseBody: false,
                    contentType: 'APPLICATION_JSON',
                    httpMode: 'POST',
                    url: 'https://thirdpartypipeline.ethos.corp.mycompany.com/v2/myproduct/myservice/queue' ,
                    customHeaders: header

    return response
}

def initDeploy(def controlSessionId, def pullRequestId) {
    def header = [[name:'authorization', value:'token 653782812637euik1kesmsajmdiou237ue728787']]
    def requestBody = "{\"control_session_id\":${controlSessionId},\"pull_requests\":[${pullRequestId}],\"autoplay\":\"true\"}"

    def response = httpRequest consoleLogResponseBody: true,
                    contentType: 'APPLICATION_JSON',
                    httpMode: 'POST',
                    url: 'https://thirdpartypipeline.ethos.corp.mycompany.com/v2/myproduct/myservice/deploys' ,
                    customHeaders: header,
                    requestBody: requestBody

    return response
}

def getDeployStatus(def deployId) {
    def header = [[name:'authorization', value:'token 653782812637euik1kesmsajmdiou237ue728787']]

    def response = httpRequest consoleLogResponseBody: false,
                    contentType: 'APPLICATION_JSON',
                    httpMode: 'GET',
                    url: "https://thirdpartypipeline.ethos.corp.mycompany.com/v2/myproduct/myservice/deploys/${deployId}" ,
                    customHeaders: header

    return response
}

def createAndTriggerBuild(def deployId, def environmentId, def stageId, def projectId) {
    def header = [[name:'authorization', value:'token 653782812637euik1kesmsajmdiou237ue728787']]
    def requestBodyJSON = "{\"environment_id\":${environmentId},\"stage_id\":${stageId},\"projects\":[{\"id\":${projectId}}]}"
    def url = "https://thirdpartypipeline.ethos.corp.mycompany.com/v2/myproduct/myservice/deploys/${deployId}/builds"
    
    println("Request Body JSON is " + requestBodyJSON)
     def response = httpRequest consoleLogResponseBody: false,
                    contentType: 'APPLICATION_JSON',
                    httpMode: 'POST',
                    url: "https://thirdpartypipeline.ethos.corp.mycompany.com/v2/myproduct/myservice/deploys/${deployId}/builds" ,
                    customHeaders: header,
                    requestBody: requestBodyJSON 
    //    def response = sh(returnStdout: true, script: 'curl -X POST ${url} -H "accept: application/json" -H "Content-Type: application/json" -d ${requestBodyJSON}')

    println('Status is ' + response)                

    return response
}

def getPipeLineEnvironmentDetails(def environments, def stateName) {
    def environmentDetails = [:]
    environments.each { environment ->
        if (stateName.equals(environment.name)) {
            environmentDetails.environmentId = environment.id
            environmentDetails.environmentName = environment.name
            environmentDetails.stageId = environment.steps[0].id
            environmentDetails.projectId = environment.steps[0].projects[0].id
            environmentDetails.status = environment.status
        }
    }
    return environmentDetails
}

def getParsedResponseObject(def response) {
    def parser = new JsonSlurper()
    return parser.parseText(response.getContent())
}

pipeline {
    agent any

    stages {
        stage('Automate_Moonbeam_Deployment') {
            steps {
                script {
                    //fetching the PR from thirdpartypipeline
                    println('Fetch the valid PR to deploy')
                    def response = getPullRequests()
                    def parser = new JsonSlurper()
                    def pullRequestObject = parser.parseText(response.content)
                    println('pull requestObject = ' + pullRequestObject)
                    pullRequestId = pullRequestObject[0].id

                    if (response.status == 200) {
                        println('PR with id ' + pullRequestId + ' exist, can proceed for deployment')
                    }
                }
            }
        }
        stage('Proceed_With_Joining_Queue') {
            steps {
                script {
                    println('PR Id received from previous step: ' + pullRequestId)
                    def response = joinBuildQueue()
                    def parser = new JsonSlurper()
                    def requestObject = parser.parseText(response.content)
                    controlSessionId = requestObject.control_session.id

                    if (response.status == 200) {
                        println('Control Session Id is ' + controlSessionId + ' can proceed with deploy')
                    }
                }
            }
        }
        stage('Proceed_With_Deploy') {
            steps {
                script {
                    println('Control Session Id received from previous step: ' + controlSessionId)
                    def response = initDeploy(controlSessionId, pullRequestId)
                    def parser = new JsonSlurper()
                    def responseObject = parser.parseText(response.getContent())
                    deployId = responseObject.id
                    println ('DeployId is  ' + deployId)
                    println ('Deploy Status is  is  ' + responseObject.status)
                    println('environmentId is ' + responseObject.environments[0].id)
                }
            }
        }
        stage('Get_Deploy_Status') {
            steps {
                script {
                    def deployStatusResponse = getDeployStatus(deployId)
                    println('Deploy Status is ' + deployStatusResponse.getContent())
                }
            }
        }
        stage('Proceed_With_Create_And_Trigger_Build') {
            steps {
                script {
                    def deployStatusResponse = getParsedResponseObject(getDeployStatus(deployId))
                    def environmentDetailMap = getPipeLineEnvironmentDetails(deployStatusResponse.environments, 'Build')
                    println('DeploymentId is ' + deployId + ' :: Environment Id is ' + environmentDetailMap.environmentId + ' :: Environment Name is ' + environmentDetailMap.environmentName
                    + ' :: Project Id is ' + environmentDetailMap.projectId + ' :: StageId is ' + environmentDetailMap.stageId)

                    def response = createAndTriggerBuild(deployId, environmentDetailMap.environmentId, environmentDetailMap.stageId, environmentDetailMap.projectId)

                    
                }
            }
        }
    }
}

Now, in Proceed_With_Create_And_Trigger_Build stage in create and trigger build i am getting below exception:

   an exception which occurred:
    in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
    in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3035b5d8
    in field com.cloudbees.groovy.cps.impl.CallEnv.caller
44
Caused: java.io.NotSerializableException: groovy.json.internal.LazyMap
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:926)
    at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
    a
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

Note createAndTriggerBuild method is making Http POST call, and on success, it returns status code as 204. I even tried with shell curl command, still getting same issue.I even refered Jenkins Pipeline NotSerializableException: groovy.json.internal.LazyMap , but i am not getting where exactly i am missing.

Below is my console output of jenkins job:

Started by user myldap@mycompany.com
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /apps/jenkins/latest/workspace/Moonbeam Deploy Test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Automate_Moonbeam_Deployment)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
Fetch the valid PR to deploy
[Pipeline] httpRequest
HttpMethod: GET
URL: https://thirdpartyPipeline.solution.corp.mycompany.com/v1/csmt-fault-testing/fault-tolerance-demo/pulls
Content-Type: application/json
authorization: *****
Sending request to url: https://thirdpartyPipeline.solution.corp.mycompany.com/v1/csmt-fault-testing/fault-tolerance-demo/pulls
Response Code: HTTP/1.1 200 OK
Success code from [100‥399]
[Pipeline] echo
pull requestObject = [[id:425010, github_id:2115456, number:6, title:Test Deploy: Update README.md, branch_name:master, base_branch_name:master, sha:b06278fdce1a21b2a9cbb85787fc9277096aad92, remote:git@git.corp.mycompany.com:myldap/fault-tolerance-demo.git, created_at:2020-07-30T15:39:23.530Z, updated_at:2020-07-31T05:07:31.074Z, closed:false, sent_at:2020-07-30T15:44:44.000Z, approved_at:2020-07-31T05:07:31.071Z, forced_approver_id:null, repository_id:167771, mergeable:true, acl_comment:null, status:success, latest_statuses:[[status:[id:2557436, pull_request_id:425010, sha:b06278fdce1a21b2a9cbb85787fc9277096aad92, state:success, created_at:2020-07-30T15:44:46.804Z, updated_at:2020-07-30T15:50:59.938Z, sent_at:2020-07-30T15:50:59.000Z, deleted_at:null, context:thirdpartyPipeline-ci/make-ci]]], user:[id:844, username:myldap, email:myldap@mycompany.com, name:Krishna Chandra Soni, avatar:https://git.corp.mycompany.com/avatars/u/9849?, admin:null, created_at:2017-04-28T13:55:35.491Z, updated_at:2020-08-02T10:49:47.542Z, slack_username:null, role:standard, github_id:9849, display_name:hjklhi], repository:[id:167771, name:fault-tolerance-demo, owner:csmt-fault-testing, github_id:298251, service_id:167773, created_at:2020-07-20T07:34:18.888Z, updated_at:2020-07-20T07:34:18.888Z, approval_regex:^(approved|:\+1:|LGTM|:thumbsup:|:white_check_mark:|👍)\s*$, deleted_at:null, multi_merge_allowed:true, min_approvers:1, base_branch:master], approved:true, modifies_pipeline_spec_file:false, reviews:[[user:[id:1jkl223, username:nitkjjain, email:nitkjmnk.jain@mycompany.com, name:Nitesh Jain, avatar:https://git.corp.mycompany.com/avatars/u/15441?, admin:null, created_at:2017-08-31T08:43:02.503Z, updated_at:2020-07-30T13:20:47.319Z, slack_username:nitn, role:standard, github_id:15441, display_name:Nitesjkljklh n], approved:true]], pipeline_file_data:[pipeline_files_modified:[], allowed_to_deploy_pipeline_files:true, reonboarding_required:false, service_spec_errors:[other_errors:[]], deployable_by_user:true]]]
[Pipeline] echo
PR with id 425010 exist, can proceed for deployment
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Proceed_With_Joining_Queue)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
PR Id received from previous step: 425010
[Pipeline] httpRequest
HttpMethod: POST
URL: https://thirdpartyPipeline.solution.corp.mycompany.com/v2/csmt-fault-testing/fault-tolerance-demo/queue
Content-Type: application/json
authorization: *****
Sending request to url: https://thirdpartyPipeline.solution.corp.mycompany.com/v2/csmt-fault-testing/fault-tolerance-demo/queue
Response Code: HTTP/1.1 200 OK
Success code from [100‥399]
[Pipeline] echo
Control Session Id is 394359 can proceed with deploy
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Proceed_With_Deploy)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
Control Session Id received from previous step: 394359
[Pipeline] httpRequest
HttpMethod: POST
URL: https://thirdpartyPipeline.solution.corp.mycompany.com/v2/csmt-fault-testing/fault-tolerance-demo/deploys
Content-Type: application/json
authorization: *****
Sending request to url: https://thirdpartyPipeline.solution.corp.mycompany.com/v2/csmt-fault-testing/fault-tolerance-demo/deploys
Response Code: HTTP/1.1 200 OK
Response: 
{"id":447244,"status":"CANDIDATE_CREATING","deploy_candidate":{"head_sha":null},"pull_requests":[{"id":425010,"github_id":2115456,"number":6,"title":"Test Deploy: Update README.md","sha":"b06278fdce1a21b2a9cbb85787fc9277096aad92"}],"current_step":{},"next_deployable_steps":[],"environments":[{"id":667925,"name":"Build","optional":false,"production":false,"single_rollback_allowed":false,"status":"UNSTARTED","steps":[{"id":621647,"name":"default","status":"UNSTARTED","projects":[{"id":1114499,"name":"client-csmt-fault-testing-fault-tolerance-demo-solution-codebuild-artifactory-build","required":true,"title":"build-makefile","avg_build_time":2.9439725,"status":"UNSTARTED","promotable":{"end_values_met":false,"job_status_met":false},"builds":[]}]}]},{"id":667924,"name":"Image Scan","optional":false,"production":false,"single_rollback_allowed":false,"status":"UNSTARTED","steps":[{"id":621646,"name":"default","status":"UNSTARTED","projects":[{"id":1114498,"name":"client-csmt-fault-testing-fault-tolerance-demo-solution-codebuild-aqua-scan","required":true,"title":"image-scan","avg_build_time":65.51788289999999,"status":"UNSTARTED","promotable":{"end_values_met":false,"job_status_met":false},"builds":[]}]}]},{"id":667923,"name":"Dev","optional":false,"production":false,"single_rollback_allowed":false,"status":"UNSTARTED","steps":[{"id":621645,"name":"deploy---Dev","status":"UNSTARTED","projects":[{"id":1114497,"name":"client-csmt-fault-testing-fault-tolerance-demo-solution-lambda-k8s-director","required":true,"title":"deploy-Dev-va6-faulttolerancedemo","avg_build_time":187.452228125,"status":"UNSTARTED","promotable":{"end_values_met":false,"job_status_met":false},"builds":[]}]}]}]}
Success code from [100‥399]
[Pipeline] echo
DeployId is  447244
[Pipeline] echo
Deploy Status is  is  CANDIDATE_CREATING
[Pipeline] echo
environmentId is 667925
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Get_Deploy_Status)
[Pipeline] script
[Pipeline] {
[Pipeline] httpRequest
HttpMethod: GET
URL: https://thirdpartyPipeline.solution.corp.mycompany.com/v2/csmt-fault-testing/fault-tolerance-demo/deploys/447244
Content-Type: application/json
authorization: *****
Sending request to url: https://thirdpartyPipeline.solution.corp.mycompany.com/v2/csmt-fault-testing/fault-tolerance-demo/deploys/447244
Response Code: HTTP/1.1 200 OK
Success code from [100‥399]
[Pipeline] echo
Deploy Status is {"id":447244,"status":"CANDIDATE_CREATING","deploy_candidate":{"head_sha":null},"pull_requests":[{"id":425010,"github_id":2115456,"number":6,"title":"Test Deploy: Update README.md","sha":"b06278fdce1a21b2a9cbb85787fc9277096aad92"}],"current_step":{},"next_deployable_steps":[],"environments":[{"id":667925,"name":"Build","optional":false,"production":false,"single_rollback_allowed":false,"status":"UNSTARTED","steps":[{"id":621647,"name":"default","status":"UNSTARTED","projects":[{"id":1114499,"name":"client-csmt-fault-testing-fault-tolerance-demo-solution-codebuild-artifactory-build","required":true,"title":"build-makefile","avg_build_time":2.9439725,"status":"UNSTARTED","promotable":{"end_values_met":false,"job_status_met":false},"builds":[]}]}]},{"id":667924,"name":"Image Scan","optional":false,"production":false,"single_rollback_allowed":false,"status":"UNSTARTED","steps":[{"id":621646,"name":"default","status":"UNSTARTED","projects":[{"id":1114498,"name":"client-csmt-fault-testing-fault-tolerance-demo-solution-codebuild-aqua-scan","required":true,"title":"image-scan","avg_build_time":65.51788289999999,"status":"UNSTARTED","promotable":{"end_values_met":false,"job_status_met":false},"builds":[]}]}]},{"id":667923,"name":"Dev","optional":false,"production":false,"single_rollback_allowed":false,"status":"UNSTARTED","steps":[{"id":621645,"name":"deploy---Dev","status":"UNSTARTED","projects":[{"id":1114497,"name":"client-csmt-fault-testing-fault-tolerance-demo-solution-lambda-k8s-director","required":true,"title":"deploy-Dev-va6-faulttolerancedemo","avg_build_time":187.452228125,"status":"UNSTARTED","promotable":{"end_values_met":false,"job_status_met":false},"builds":[]}]}]}]}
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Proceed_With_Create_And_Trigger_Build)
[Pipeline] script
[Pipeline] {
[Pipeline] httpRequest
HttpMethod: GET
URL: https://thirdpartyPipeline.solution.corp.mycompany.com/v2/csmt-fault-testing/fault-tolerance-demo/deploys/447244
Content-Type: application/json
authorization: *****
Sending request to url: https://thirdpartyPipeline.solution.corp.mycompany.com/v2/csmt-fault-testing/fault-tolerance-demo/deploys/447244
Response Code: HTTP/1.1 200 OK
Success code from [100‥399]
[Pipeline] echo
DeploymentId is 447244 :: Environment Id is 667925 :: Environment Name is Build :: Project Id is 1114499 :: StageId is 621647
[Pipeline] echo
Request Body JSON is {"environment_id":667925,"stage_id":621647,"projects":[{"id":1114499}]}
[Pipeline] sh
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
an exception which occurred:
    in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
    in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@3035b5d8
    in field com.cloudbees.groovy.cps.impl.CallEnv.caller
    in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@55e62a96
    in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
    in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@30fbee31
    in field com.cloudbees.groovy.cps.impl.ProxyEnv.parent
    in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@30d6811e
    in field com.cloudbees.groovy.cps.impl.CallEnv.caller
    in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@52ca4cf1
    in field com.cloudbees.groovy.cps.Continuable.e
    in object com.cloudbees.groovy.cps.Continuable@603018fd
    in field org.jenkinsci.plugins.workflow.cps.CpsThread.program
    in object org.jenkinsci.plugins.workflow.cps.CpsThread@31121814
    in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.threads
    in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@3ddf4d44
    in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@3ddf4d44
Caused: java.io.NotSerializableException: groovy.json.internal.LazyMap
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:926)
    at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
    at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)
    at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)
    at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)
    at java.util.HashMap.internalWriteEntries(HashMap.java:1793)
    at java.util.HashMap.writeObject(HashMap.java:1363)
    at sun.reflect.GeneratedMethodAccessor550.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.marshalling.reflect.JDKSpecific$SerMethods.callWriteObject(JDKSpecific.java:156)
    at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:191)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1028)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
    at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)
    at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)
    at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)
    at java.util.concurrent.ConcurrentSkipListMap.writeObject(ConcurrentSkipListMap.java:1437)
    at sun.reflect.GeneratedMethodAccessor569.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.jboss.marshalling.reflect.JDKSpecific$SerMethods.callWriteObject(JDKSpecific.java:156)
    at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:191)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1028)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
    at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
    at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.lambda$writeObject$0(RiverWriter.java:144)
    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:237)
    at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject(RiverWriter.java:143)
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:552)
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:529)
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgramIfPossible(CpsThreadGroup.java:516)
    
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

use JsonSlurperClassic instead of JsonSlurper


JsonSlurperClassic produces a standard java HashMap that is serializable.

when JsonSlurper produces LazyMap that is not serializable

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM