From 5bf731f68d84d593d48de23d71142f624b6fdad8 Mon Sep 17 00:00:00 2001 From: Marc Bernard Date: Sun, 30 Mar 2025 13:54:12 +0000 Subject: [PATCH] Fix "Maximum number of GUI sessions reached" ECATT Test Config and Data object types (`ECTC`/`ECTD`) do not support parallel serializer since they trigger user sessions by calling `cl_gui_frontend_services=>get_sapgui_workdir`. This can lead to "Maximum number of GUI sessions reached" error. This change processed these two object types in sequentially. --- .../core/zcl_abapgit_serialize.clas.abap | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/objects/core/zcl_abapgit_serialize.clas.abap b/src/objects/core/zcl_abapgit_serialize.clas.abap index d2b5ffeac..32503cd3a 100644 --- a/src/objects/core/zcl_abapgit_serialize.clas.abap +++ b/src/objects/core/zcl_abapgit_serialize.clas.abap @@ -128,6 +128,12 @@ CLASS zcl_abapgit_serialize DEFINITION RETURNING VALUE(rv_result) TYPE abap_bool. + METHODS is_no_parallel + IMPORTING + !iv_object_type TYPE tadir-object + RETURNING + VALUE(rv_result) TYPE abap_bool. + ENDCLASS. @@ -515,6 +521,18 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. ENDMETHOD. + METHOD is_no_parallel. + + " Currently know object types that do not support parallel processing: + " ECTC/ECTD - ECATT Test Config/Data (see #7148) + " Should this list become longer, it should become a flag of the object type serializer + IF iv_object_type = 'ECTC' OR iv_object_type = 'ECTD'. + rv_result = abap_true. + ENDIF. + + ENDMETHOD. + + METHOD is_parallelization_possible. rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false @@ -684,7 +702,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. iv_count = lv_count )->start( ). LOOP AT lt_tadir ASSIGNING . - IF lv_max = 1. + IF lv_max = 1 OR is_no_parallel( -object ) = abap_true. li_progress->show( iv_current = sy-tabix iv_text = |Serialize { -obj_name }, { lv_max } thread| ).