mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
* Prevent parallel mode with merged build - #2208 Reguires abapmerge PR #74 Also renamed gv_max to gv_max_threads * Prevent parallel mode with merged build - #2208 Reguires abapmerge PR #74 Also renamed gv_max to gv_max_threads
This commit is contained in:
parent
311efc0d20
commit
5f694c561f
|
@ -4,6 +4,7 @@ CLASS zcl_abapgit_serialize DEFINITION
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
METHODS constructor.
|
||||||
METHODS on_end_of_task
|
METHODS on_end_of_task
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!p_task TYPE clike .
|
!p_task TYPE clike .
|
||||||
|
@ -17,9 +18,10 @@ CLASS zcl_abapgit_serialize DEFINITION
|
||||||
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt
|
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_item_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
CLASS-DATA gv_max TYPE i .
|
CLASS-DATA gv_max_threads TYPE i .
|
||||||
DATA mt_files TYPE zif_abapgit_definitions=>ty_files_item_tt .
|
DATA mt_files TYPE zif_abapgit_definitions=>ty_files_item_tt .
|
||||||
DATA mv_free TYPE i .
|
DATA mv_free TYPE i .
|
||||||
DATA mo_log TYPE REF TO zcl_abapgit_log .
|
DATA mo_log TYPE REF TO zcl_abapgit_log .
|
||||||
|
@ -50,11 +52,13 @@ CLASS zcl_abapgit_serialize DEFINITION
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
METHODS is_merged RETURNING VALUE(rv_result) TYPE abap_bool .
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION.
|
CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD add_to_return.
|
METHOD add_to_return.
|
||||||
|
@ -80,10 +84,10 @@ CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF gv_max >= 1.
|
IF gv_max_threads >= 1.
|
||||||
* SPBT_INITIALIZE gives error PBT_ENV_ALREADY_INITIALIZED if called
|
* SPBT_INITIALIZE gives error PBT_ENV_ALREADY_INITIALIZED if called
|
||||||
* multiple times in same session
|
* multiple times in same session
|
||||||
rv_threads = gv_max.
|
rv_threads = gv_max_threads.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -94,14 +98,14 @@ CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION.
|
||||||
function_not_exist = 1
|
function_not_exist = 1
|
||||||
OTHERS = 2.
|
OTHERS = 2.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
gv_max = 1.
|
gv_max_threads = 1.
|
||||||
ELSE.
|
ELSE.
|
||||||
* todo, add possibility to set group name in user exit
|
* todo, add possibility to set group name in user exit
|
||||||
CALL FUNCTION 'SPBT_INITIALIZE'
|
CALL FUNCTION 'SPBT_INITIALIZE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
group_name = 'parallel_generators'
|
group_name = 'parallel_generators'
|
||||||
IMPORTING
|
IMPORTING
|
||||||
free_pbt_wps = gv_max
|
free_pbt_wps = gv_max_threads
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
invalid_group_name = 1
|
invalid_group_name = 1
|
||||||
internal_error = 2
|
internal_error = 2
|
||||||
|
@ -113,17 +117,17 @@ CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
* fallback to running sequentially. If SPBT_INITIALIZE fails, check transactions
|
* fallback to running sequentially. If SPBT_INITIALIZE fails, check transactions
|
||||||
* RZ12, SM50, SM21, SARFC
|
* RZ12, SM50, SM21, SARFC
|
||||||
gv_max = 1.
|
gv_max_threads = 1.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF gv_max > 1.
|
IF gv_max_threads > 1.
|
||||||
gv_max = gv_max - 1.
|
gv_max_threads = gv_max_threads - 1.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ASSERT gv_max >= 1.
|
ASSERT gv_max_threads >= 1.
|
||||||
|
|
||||||
rv_threads = gv_max.
|
rv_threads = gv_max_threads.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -265,4 +269,25 @@ CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION.
|
||||||
rt_files = mt_files.
|
rt_files = mt_files.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
IF is_merged( ) = abap_true.
|
||||||
|
gv_max_threads = 1.
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD is_merged.
|
||||||
|
|
||||||
|
DATA lo_marker TYPE REF TO data.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CREATE DATA lo_marker TYPE REF TO ('LIF_ABAPMERGE_MARKER') ##no_text.
|
||||||
|
"No exception --> marker found
|
||||||
|
rv_result = abap_true.
|
||||||
|
|
||||||
|
CATCH cx_sy_create_data_error ##no_handler.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user