Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-57870

Request too large for server memory since 10.1.0

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • p4-plugin
    • Jenkins ver. 2.164.3
      p4-plugin : 1.10.0

      Hi,

       

      When I use jenkins with swarm automated test,

      I use the pipeline code like

      checkout perforce(
         populate: previewOnly(quiet: true)
         workspace: templateSpec( ... )
      )
      

      and template workspace have all depot like

      //depotA/... //$P4_CLIENT/depotA/...
      //depotB/... //$P4_CLIENT/depotB/...
      //depotC/... //$P4_CLIENT/depotC/...
      ...
      

      and I create new workspace and delete after finished job always.

       

      as you know, because I want to do like

      unshelve files in the review item and run some test.

      I don't need sync, sync -n or sync -k and flush, delete, whatever..

       

      here's error message.

      [Pipeline] container[Pipeline] {[Pipeline] checkout*
      02:02:57* (p4):cmd:... p4 client -o TEMPLATE_SE_SWARM_AT_SA*
      02:02:57* p4 client -o TEMPLATESE_SWARM_AT_SA*
      02:02:57* 
      02:02:57 (p4):stop:3*
      02:02:57* (p4):cmd:... p4 client -o jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:57* p4 client -o jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:57* 
      02:02:58 (p4):stop:4*
      02:02:58* (p4):cmd:... p4 client -i*
      02:02:58* p4 client -i*
      02:02:58* 
      02:02:58 Client jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z saved.
      02:02:58 
      02:02:58 (p4):stop:5*
      02:02:58* (p4):cmd:... p4 client -o jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:58* p4 client -o jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:58* 
      02:02:58 (p4):stop:6*
      02:02:58* (p4):cmd:... p4 client -i*
      02:02:58* p4 client -i*
      02:02:58* 
      02:02:58 Client jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z saved.
      02:02:58 
      02:02:58 (p4):stop:7*
      02:02:58* (p4):cmd:... p4 client -f -s -t TEMPLATESE_SWARM_AT_SA jenkins-SE-SWARM_AT_SA-21-se-swarm-at-s_
      02:02:58 p4 client -f -s -t TEMPLATESE_SWARM_AT_SA jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:58* 
      02:02:58 Client jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z switched.
      02:02:58 
      02:02:58 (p4):stop:8*
      02:02:58* (p4):cmd:... p4 client -o jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:58* p4 client -o jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:58* 
      02:02:59 (p4):stop:9*
      02:02:59* (p4):cmd:... p4 client -o jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:59* p4 client -o jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z*
      02:02:59* 
      02:02:59 (p4):stop:10*
      02:02:59* (p4):cmd:... p4 counter change*
      02:02:59* p4 counter change*
      02:02:59* 
      02:02:59 (p4):stop:11*
      02:02:59* (p4):cmd:... p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/._
      02:02:59 p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/...
      02:02:59 
      02:02:59 Change 2688516 on 2019/06/05 by sj8282.park@sj8282.park_NOVUS_TASK_SVR19A_mare03 'Add Test Case Template with reg'
      02:02:59 (p4):stop:12*
      02:02:59* (p4):cmd:... p4 counter change*
      02:02:59* p4 counter change*
      02:02:59* 
      02:02:59 (p4):stop:13*
      02:02:59* (p4):cmd:... p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/.__
      02:02:59 p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/...@2688516*
      02:02:59* 
      02:05:28 Operation 'user-changes' failed.
      02:05:28 Request too large for server memory (try later?).
      02:05:28 
      02:05:28 (p4):stop:14
      

       

      I need the option that create workspace without any changes, counter, ... other commands.

      And by the way, this preview option is really needed?

      who want to use p4 sync -nq , it's useless.

      and p4 sync -n command also. I don't know when and why use this option.

          [JENKINS-57870] Request too large for server memory since 10.1.0

          Karl Wirth added a comment -

          Hi luckyhorang - This looks like a server error:

          02:02:59 p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/...@2688516
          02:05:28 Operation 'user-changes' failed.02:05:28 Request too large for server memory (try later?).
          

          I will therefore contact you directly to get more confidential information about the system and setup.

           

          Karl Wirth added a comment - Hi luckyhorang - This looks like a server error: 02:02:59 p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/...@2688516 02:05:28 Operation 'user-changes' failed.02:05:28 Request too large for server memory ( try later?). I will therefore contact you directly to get more confidential information about the system and setup.  

          Paul Allen added a comment -

          If you are using PreviewOnly with the quiet option set then the sync operation is skipped and you should see "P4 Task: skipping sync." in the log. (since version 1.9.5)

          // Skip `p4 sync -q -n` to save compute time.
          if (populate.isQuiet()) {
             log("P4 Task: skipping sync.");
             return;
          } 

          Jenkins still needs to know what changes are associated with the build; this is for reporting, but also for polling calculations.

          p4 changes -m1 -ssubmitted //CLIENT_SPEC/...@nnnn 

          Should not cause the server to report 'Request too large for server memory (try later?)'.  Please work with our support team to get a copy of the Server log.

          Paul Allen added a comment - If you are using PreviewOnly with the quiet option set then the sync operation is skipped and you should see "P4 Task: skipping sync." in the log. (since version 1.9.5) // Skip `p4 sync -q -n` to save compute time. if (populate.isQuiet()) { log( "P4 Task: skipping sync." ); return ; } Jenkins still needs to know what changes are associated with the build; this is for reporting, but also for polling calculations. p4 changes -m1 -ssubmitted //CLIENT_SPEC/...@nnnn Should not cause the server to report 'Request too large for server memory (try later?)'.  Please work with our support team to get a copy of the Server log.

          Paul Allen added a comment -

          Please can you also include the client view mappings when reporting to support.  (Exclusionary mappings could be very expensive.)

          Paul Allen added a comment - Please can you also include the client view mappings when reporting to support.  (Exclusionary mappings could be very expensive.)

          Mateusz Delikat added a comment - - edited

          p4karl, p4paul: Why are we actually seeing 

          02:02:59 p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/...02:02:59 
          02:02:59 Change 2688516 on 2019/06/05 by sj8282.park@sj8282.park_NOVUS_TASK_SVR19A_mare03 'Add Test Case Template with reg'

          and then

          02:02:59* (p4):cmd:... p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/.__02:02:59
          p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/...@2688516*


          when we already know the change number from the first call?

          On our end we don't have "Request too large" errors but the first command on our stream takes about 1 second to complete and the second often takes more than 10 minutes. Does the plugin really needs to re-verify that changelist? Won't it be always the same?

           

          Mateusz Delikat added a comment - - edited p4karl , p4paul : Why are we actually seeing  02:02:59 p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/...02:02:59 02:02:59 Change 2688516 on 2019/06/05 by sj8282.park@sj8282.park_NOVUS_TASK_SVR19A_mare03 'Add Test Case Template with reg' and then 02:02:59* (p4):cmd:... p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/.__02:02:59 p4 changes -m1 -ssubmitted //jenkins-SE-SWARM_AT_SA-21-se-swarm-at-sa-sv1sw-klt6z/...@2688516* when we already know the change number from the first call? On our end we don't have "Request too large" errors but the first command on our stream takes about 1 second to complete and the second often takes more than 10 minutes. Does the plugin really needs to re-verify that changelist? Won't it be always the same?  

          Karl Wirth added a comment -

          mdelikat - I have been working with this with Paul and it looks like Jenkins is going through an unexpected path to trigger the command (we provide hooks and jenkins chooses which one's to call).

          We are still looking into this but it may be that we don't have enough contextually information when Jenkins calls the second instance to decide if the command needs to be run or not.

          Karl Wirth added a comment - mdelikat - I have been working with this with Paul and it looks like Jenkins is going through an unexpected path to trigger the command (we provide hooks and jenkins chooses which one's to call). We are still looking into this but it may be that we don't have enough contextually information when Jenkins calls the second instance to decide if the command needs to be run or not.

          Paul Allen added a comment -

          For reference: The code to query the change was added to deal with issue JENKINS-57534

          https://github.com/jenkinsci/p4-plugin/commit/c1ed873be0d988d12619b1072bb41a0580aa3bd2

          Paul Allen added a comment - For reference: The code to query the change was added to deal with issue JENKINS-57534 https://github.com/jenkinsci/p4-plugin/commit/c1ed873be0d988d12619b1072bb41a0580aa3bd2

          Karl Wirth added a comment -

          Have released a test patch version to fix the "Request too large for memory" problem. Instead of running 'p4 changes -m1' it now runs for the last N changes:
            
              p4 changes m1 -ssubmitted //jenkins-masterJENKINS-57870-changes-m1-0/...@27+23784,273+3784

          N is a configurable variable that can be set under:

            Jenkins > Manage Jenkins > Configure System >  Head change query limit

           

          The test patch can be downloaded from: https://ci.jenkins.io/job/Plugins/job/p4-plugin/job/master/

          Karl Wirth added a comment - Have released a test patch version to fix the "Request too large for memory" problem. Instead of running 'p4 changes -m1' it now runs for the last N changes:        p4 changes m1 -ssubmitted //jenkins-master JENKINS-57870 -changes-m1-0/...@27+ 2 3784,27 3 +3784 N is a configurable variable that can be set under:   Jenkins > Manage Jenkins > Configure System >  Head change query limit   The test patch can be downloaded from: https://ci.jenkins.io/job/Plugins/job/p4-plugin/job/master/

          Karl Wirth added a comment -

          Test patch released.

          Karl Wirth added a comment - Test patch released.

          Paul Allen added a comment -

          Released in 1.10.3

          Paul Allen added a comment - Released in 1.10.3

            Unassigned Unassigned
            luckyhorang Hokwang Lee
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: