mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Remove need to parallel_generators
server group
SAP Note [3215918](https://me.sap.com/notes/3215918) - Parallel RFC group "default" replacing group "parallel_generators" This change removes the need to maintain the `parallel_generators` server group. The developer version of abapGit will now default to parallel processing (when activated in your abapGit settings). The option to set a server group via exit remains the same. Ref #7074
This commit is contained in:
parent
1fac2a71e2
commit
652c697a4a
|
@ -42,6 +42,8 @@ CLASS lcl_environment IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
METHOD zif_abapgit_environment~init_parallel_processing.
|
METHOD zif_abapgit_environment~init_parallel_processing.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
METHOD zif_abapgit_environment~check_parallel_processing.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
43
src/env/zcl_abapgit_environment.clas.abap
vendored
43
src/env/zcl_abapgit_environment.clas.abap
vendored
|
@ -76,6 +76,49 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_environment~check_parallel_processing.
|
||||||
|
|
||||||
|
" If check fails, see transactions RZ12
|
||||||
|
DATA:
|
||||||
|
lt_setup TYPE STANDARD TABLE OF rzllitab,
|
||||||
|
ls_setup LIKE LINE OF lt_setup,
|
||||||
|
lt_erfc_setup TYPE STANDARD TABLE OF rzlliclass,
|
||||||
|
lt_instances TYPE STANDARD TABLE OF msxxlist WITH DEFAULT KEY.
|
||||||
|
|
||||||
|
" Check if server group for parallel processing exists
|
||||||
|
CALL FUNCTION 'SMLG_GET_SETUP'
|
||||||
|
EXPORTING
|
||||||
|
grouptype = 'S'
|
||||||
|
TABLES
|
||||||
|
setup = lt_setup
|
||||||
|
erfc_setup = lt_erfc_setup
|
||||||
|
EXCEPTIONS
|
||||||
|
foreign_lock = 1
|
||||||
|
system_failure = 2
|
||||||
|
invalid_group_type = 3
|
||||||
|
OTHERS = 4.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
READ TABLE lt_setup INTO ls_setup WITH KEY classname = iv_group.
|
||||||
|
IF sy-subrc = 0 AND ls_setup-applserver IS NOT INITIAL.
|
||||||
|
|
||||||
|
" Check if assigned server instance exists
|
||||||
|
CALL FUNCTION 'TH_SERVER_LIST'
|
||||||
|
TABLES
|
||||||
|
list = lt_instances.
|
||||||
|
|
||||||
|
READ TABLE lt_instances TRANSPORTING NO FIELDS WITH KEY name = ls_setup-applserver.
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
rv_checked = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_environment~compare_with_inactive.
|
METHOD zif_abapgit_environment~compare_with_inactive.
|
||||||
rv_result = zif_abapgit_environment~is_sap_cloud_platform( ).
|
rv_result = zif_abapgit_environment~is_sap_cloud_platform( ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
5
src/env/zif_abapgit_environment.intf.abap
vendored
5
src/env/zif_abapgit_environment.intf.abap
vendored
|
@ -39,6 +39,11 @@ INTERFACE zif_abapgit_environment
|
||||||
iv_group TYPE clike
|
iv_group TYPE clike
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_free_work_processes) TYPE i.
|
VALUE(rv_free_work_processes) TYPE i.
|
||||||
|
METHODS check_parallel_processing
|
||||||
|
IMPORTING
|
||||||
|
iv_group TYPE clike
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_checked) TYPE abap_bool.
|
||||||
METHODS get_available_user_sessions
|
METHODS get_available_user_sessions
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_sessions) TYPE i.
|
VALUE(rv_sessions) TYPE i.
|
||||||
|
|
|
@ -99,6 +99,11 @@ CLASS zcl_abapgit_serialize DEFINITION
|
||||||
VALUE(ct_files) TYPE zif_abapgit_definitions=>ty_files_item_tt
|
VALUE(ct_files) TYPE zif_abapgit_definitions=>ty_files_item_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
METHODS determine_rfc_server_group
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_group) TYPE rzlli_apcl
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
METHODS determine_max_processes
|
METHODS determine_max_processes
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_force_sequential TYPE abap_bool DEFAULT abap_false
|
!iv_force_sequential TYPE abap_bool DEFAULT abap_false
|
||||||
|
@ -255,11 +260,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
|
||||||
DATA li_exit TYPE REF TO zif_abapgit_exit.
|
mv_group = determine_rfc_server_group( ).
|
||||||
|
|
||||||
mv_group = 'parallel_generators'.
|
|
||||||
li_exit = zcl_abapgit_exit=>get_instance( ).
|
|
||||||
li_exit->change_rfc_server_group( CHANGING cv_group = mv_group ).
|
|
||||||
|
|
||||||
mo_dot_abapgit = io_dot_abapgit.
|
mo_dot_abapgit = io_dot_abapgit.
|
||||||
ms_local_settings = is_local_settings.
|
ms_local_settings = is_local_settings.
|
||||||
|
@ -334,6 +335,29 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD determine_rfc_server_group.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
li_exit TYPE REF TO zif_abapgit_exit,
|
||||||
|
lv_exists TYPE abap_bool.
|
||||||
|
|
||||||
|
" According to SAP Note 3215918 it's recommended NOT to use this group anymore.
|
||||||
|
" However, we keep it for compatibility. If it does not exist, we switch to the
|
||||||
|
" recommended DEFAULT behaviour.
|
||||||
|
rv_group = 'parallel_generators'.
|
||||||
|
|
||||||
|
li_exit = zcl_abapgit_exit=>get_instance( ).
|
||||||
|
li_exit->change_rfc_server_group( CHANGING cv_group = rv_group ).
|
||||||
|
|
||||||
|
" Check if RFC server group exists and fallback to the default
|
||||||
|
lv_exists = zcl_abapgit_factory=>get_environment( )->check_parallel_processing( rv_group ).
|
||||||
|
IF lv_exists = abap_false.
|
||||||
|
rv_group = ''.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD files_local.
|
METHOD files_local.
|
||||||
|
|
||||||
* serializes objects, including .abapgit.xml, apack, and takes into account local settings
|
* serializes objects, including .abapgit.xml, apack, and takes into account local settings
|
||||||
|
@ -495,7 +519,6 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false
|
rv_result = boolc( zcl_abapgit_factory=>get_environment( )->is_merged( ) = abap_false
|
||||||
AND zcl_abapgit_persist_factory=>get_settings( )->read( )->get_parallel_proc_disabled( ) = abap_false
|
AND zcl_abapgit_persist_factory=>get_settings( )->read( )->get_parallel_proc_disabled( ) = abap_false
|
||||||
AND mv_group IS NOT INITIAL
|
|
||||||
" The function module below should always exist here as is_merged evaluated to false above.
|
" The function module below should always exist here as is_merged evaluated to false above.
|
||||||
" It does however not exist in the transpiled version which then causes unit tests to fail.
|
" It does however not exist in the transpiled version which then causes unit tests to fail.
|
||||||
" Therefore the check needs to stay.
|
" Therefore the check needs to stay.
|
||||||
|
@ -557,6 +580,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
DO.
|
DO.
|
||||||
lv_task = |{ iv_task }-{ sy-index }|.
|
lv_task = |{ iv_task }-{ sy-index }|.
|
||||||
|
" An initial server group is handled like DEFAULT meaning all instances are used
|
||||||
CALL FUNCTION 'Z_ABAPGIT_SERIALIZE_PARALLEL'
|
CALL FUNCTION 'Z_ABAPGIT_SERIALIZE_PARALLEL'
|
||||||
STARTING NEW TASK lv_task
|
STARTING NEW TASK lv_task
|
||||||
DESTINATION IN GROUP mv_group
|
DESTINATION IN GROUP mv_group
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
CLASS ltcl_determine_max_processes DEFINITION DEFERRED.
|
CLASS ltcl_determine_max_processes DEFINITION DEFERRED.
|
||||||
CLASS zcl_abapgit_serialize DEFINITION LOCAL FRIENDS ltcl_determine_max_processes.
|
CLASS ltcl_determine_server_group DEFINITION DEFERRED.
|
||||||
|
CLASS zcl_abapgit_serialize DEFINITION LOCAL FRIENDS ltcl_determine_max_processes ltcl_determine_server_group.
|
||||||
|
|
||||||
CLASS ltd_settings DEFINITION FINAL FOR TESTING
|
CLASS ltd_settings DEFINITION FINAL FOR TESTING
|
||||||
DURATION SHORT
|
DURATION SHORT
|
||||||
|
@ -67,6 +68,9 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
|
||||||
zif_abapgit_environment.
|
zif_abapgit_environment.
|
||||||
|
|
||||||
METHODS:
|
METHODS:
|
||||||
|
set_server_group
|
||||||
|
IMPORTING iv_group TYPE rzlli_apcl,
|
||||||
|
|
||||||
set_is_merged
|
set_is_merged
|
||||||
IMPORTING iv_is_merged TYPE abap_bool,
|
IMPORTING iv_is_merged TYPE abap_bool,
|
||||||
|
|
||||||
|
@ -78,6 +82,7 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA:
|
DATA:
|
||||||
|
mv_group TYPE rzlli_apcl,
|
||||||
mv_is_merged TYPE abap_bool,
|
mv_is_merged TYPE abap_bool,
|
||||||
mv_available_sessions TYPE i,
|
mv_available_sessions TYPE i,
|
||||||
mv_free_work_processes TYPE i.
|
mv_free_work_processes TYPE i.
|
||||||
|
@ -123,6 +128,14 @@ CLASS ltd_environment IMPLEMENTATION.
|
||||||
rv_free_work_processes = mv_free_work_processes.
|
rv_free_work_processes = mv_free_work_processes.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_environment~check_parallel_processing.
|
||||||
|
rv_checked = boolc( iv_group = mv_group ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD set_server_group.
|
||||||
|
mv_group = iv_group.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD set_is_merged.
|
METHOD set_is_merged.
|
||||||
mv_is_merged = iv_is_merged.
|
mv_is_merged = iv_is_merged.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -147,12 +160,16 @@ CLASS ltd_exit DEFINITION FINAL FOR TESTING
|
||||||
zif_abapgit_exit.
|
zif_abapgit_exit.
|
||||||
|
|
||||||
METHODS:
|
METHODS:
|
||||||
|
set_server_group
|
||||||
|
IMPORTING iv_group TYPE rzlli_apcl,
|
||||||
|
|
||||||
set_max_parallel_processes
|
set_max_parallel_processes
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_max_parallel_processes TYPE i.
|
iv_max_parallel_processes TYPE i.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA:
|
DATA:
|
||||||
|
mv_group TYPE rzlli_apcl,
|
||||||
mv_max_parallel_processes TYPE i.
|
mv_max_parallel_processes TYPE i.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -188,6 +205,9 @@ CLASS ltd_exit IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_exit~change_rfc_server_group.
|
METHOD zif_abapgit_exit~change_rfc_server_group.
|
||||||
|
IF mv_group IS NOT INITIAL.
|
||||||
|
cv_group = mv_group.
|
||||||
|
ENDIF.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_exit~change_supported_data_objects.
|
METHOD zif_abapgit_exit~change_supported_data_objects.
|
||||||
|
@ -241,6 +261,10 @@ CLASS ltd_exit IMPLEMENTATION.
|
||||||
METHOD zif_abapgit_exit~wall_message_repo.
|
METHOD zif_abapgit_exit~wall_message_repo.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD set_server_group.
|
||||||
|
mv_group = iv_group.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD set_max_parallel_processes.
|
METHOD set_max_parallel_processes.
|
||||||
mv_max_parallel_processes = iv_max_parallel_processes.
|
mv_max_parallel_processes = iv_max_parallel_processes.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -248,6 +272,110 @@ CLASS ltd_exit IMPLEMENTATION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ltcl_determine_server_group DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
DATA:
|
||||||
|
mo_cut TYPE REF TO zcl_abapgit_serialize,
|
||||||
|
mo_environment_double TYPE REF TO ltd_environment,
|
||||||
|
mo_exit TYPE REF TO ltd_exit,
|
||||||
|
mv_act_group TYPE rzlli_apcl.
|
||||||
|
|
||||||
|
METHODS:
|
||||||
|
setup,
|
||||||
|
|
||||||
|
default_server_group FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
legacy_server_group FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
exit_server_group FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
exit_not_exist_server_group FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
|
||||||
|
teardown,
|
||||||
|
|
||||||
|
given_db_server_group
|
||||||
|
IMPORTING
|
||||||
|
iv_group TYPE rzlli_apcl,
|
||||||
|
|
||||||
|
given_exit_chg_server_group
|
||||||
|
IMPORTING
|
||||||
|
iv_group TYPE rzlli_apcl,
|
||||||
|
|
||||||
|
when_determine_server_group
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception,
|
||||||
|
|
||||||
|
then_we_shd_have_server_group
|
||||||
|
IMPORTING
|
||||||
|
iv_exp_group TYPE rzlli_apcl.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS ltcl_determine_server_group IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD setup.
|
||||||
|
|
||||||
|
CREATE OBJECT mo_environment_double.
|
||||||
|
zcl_abapgit_injector=>set_environment( mo_environment_double ).
|
||||||
|
|
||||||
|
CREATE OBJECT mo_exit.
|
||||||
|
zcl_abapgit_injector=>set_exit( mo_exit ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
CREATE OBJECT mo_cut.
|
||||||
|
CATCH zcx_abapgit_exception.
|
||||||
|
cl_abap_unit_assert=>fail( 'Error creating serializer' ).
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD teardown.
|
||||||
|
CLEAR: mo_cut->mv_group.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD default_server_group.
|
||||||
|
when_determine_server_group( ).
|
||||||
|
then_we_shd_have_server_group( '' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD legacy_server_group.
|
||||||
|
given_db_server_group( 'parallel_generators' ).
|
||||||
|
when_determine_server_group( ).
|
||||||
|
then_we_shd_have_server_group( 'parallel_generators' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD exit_server_group.
|
||||||
|
given_db_server_group( 'my_group' ).
|
||||||
|
given_exit_chg_server_group( 'my_group' ).
|
||||||
|
when_determine_server_group( ).
|
||||||
|
then_we_shd_have_server_group( 'my_group' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD exit_not_exist_server_group.
|
||||||
|
given_exit_chg_server_group( 'my_servers' ).
|
||||||
|
when_determine_server_group( ).
|
||||||
|
then_we_shd_have_server_group( '' ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD given_db_server_group.
|
||||||
|
mo_environment_double->set_server_group( iv_group ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD given_exit_chg_server_group.
|
||||||
|
mo_exit->set_server_group( iv_group ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD when_determine_server_group.
|
||||||
|
mv_act_group = mo_cut->determine_rfc_server_group( ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD then_we_shd_have_server_group.
|
||||||
|
cl_abap_unit_assert=>assert_equals(
|
||||||
|
act = mv_act_group
|
||||||
|
exp = iv_exp_group ).
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS FINAL.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user