mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +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.
|
||||
METHOD zif_abapgit_environment~init_parallel_processing.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_environment~check_parallel_processing.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
|
49
src/env/zcl_abapgit_environment.clas.abap
vendored
49
src/env/zcl_abapgit_environment.clas.abap
vendored
|
@ -2,11 +2,11 @@ CLASS zcl_abapgit_environment DEFINITION
|
|||
PUBLIC
|
||||
FINAL
|
||||
CREATE PRIVATE
|
||||
GLOBAL FRIENDS zcl_abapgit_factory .
|
||||
GLOBAL FRIENDS zcl_abapgit_factory.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES zif_abapgit_environment .
|
||||
INTERFACES zif_abapgit_environment.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
|
@ -16,7 +16,7 @@ CLASS zcl_abapgit_environment DEFINITION
|
|||
|
||||
METHODS is_system_changes_allowed
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE abap_bool .
|
||||
VALUE(rv_result) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -76,6 +76,49 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
|||
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.
|
||||
rv_result = zif_abapgit_environment~is_sap_cloud_platform( ).
|
||||
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
|
||||
RETURNING
|
||||
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
|
||||
RETURNING
|
||||
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
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS determine_rfc_server_group
|
||||
RETURNING
|
||||
VALUE(rv_group) TYPE rzlli_apcl
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
METHODS determine_max_processes
|
||||
IMPORTING
|
||||
!iv_force_sequential TYPE abap_bool DEFAULT abap_false
|
||||
|
@ -255,11 +260,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
|||
|
||||
METHOD constructor.
|
||||
|
||||
DATA li_exit TYPE REF TO zif_abapgit_exit.
|
||||
|
||||
mv_group = 'parallel_generators'.
|
||||
li_exit = zcl_abapgit_exit=>get_instance( ).
|
||||
li_exit->change_rfc_server_group( CHANGING cv_group = mv_group ).
|
||||
mv_group = determine_rfc_server_group( ).
|
||||
|
||||
mo_dot_abapgit = io_dot_abapgit.
|
||||
ms_local_settings = is_local_settings.
|
||||
|
@ -334,6 +335,29 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
|||
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.
|
||||
|
||||
* 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
|
||||
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.
|
||||
" It does however not exist in the transpiled version which then causes unit tests to fail.
|
||||
" Therefore the check needs to stay.
|
||||
|
@ -557,6 +580,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
|||
|
||||
DO.
|
||||
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'
|
||||
STARTING NEW TASK lv_task
|
||||
DESTINATION IN GROUP mv_group
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
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
|
||||
DURATION SHORT
|
||||
|
@ -67,6 +68,9 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
|
|||
zif_abapgit_environment.
|
||||
|
||||
METHODS:
|
||||
set_server_group
|
||||
IMPORTING iv_group TYPE rzlli_apcl,
|
||||
|
||||
set_is_merged
|
||||
IMPORTING iv_is_merged TYPE abap_bool,
|
||||
|
||||
|
@ -78,6 +82,7 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
|
|||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mv_group TYPE rzlli_apcl,
|
||||
mv_is_merged TYPE abap_bool,
|
||||
mv_available_sessions TYPE i,
|
||||
mv_free_work_processes TYPE i.
|
||||
|
@ -123,6 +128,14 @@ CLASS ltd_environment IMPLEMENTATION.
|
|||
rv_free_work_processes = mv_free_work_processes.
|
||||
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.
|
||||
mv_is_merged = iv_is_merged.
|
||||
ENDMETHOD.
|
||||
|
@ -147,12 +160,16 @@ CLASS ltd_exit DEFINITION FINAL FOR TESTING
|
|||
zif_abapgit_exit.
|
||||
|
||||
METHODS:
|
||||
set_server_group
|
||||
IMPORTING iv_group TYPE rzlli_apcl,
|
||||
|
||||
set_max_parallel_processes
|
||||
IMPORTING
|
||||
iv_max_parallel_processes TYPE i.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mv_group TYPE rzlli_apcl,
|
||||
mv_max_parallel_processes TYPE i.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -188,6 +205,9 @@ CLASS ltd_exit IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_rfc_server_group.
|
||||
IF mv_group IS NOT INITIAL.
|
||||
cv_group = mv_group.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_exit~change_supported_data_objects.
|
||||
|
@ -241,6 +261,10 @@ CLASS ltd_exit IMPLEMENTATION.
|
|||
METHOD zif_abapgit_exit~wall_message_repo.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_server_group.
|
||||
mv_group = iv_group.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_max_parallel_processes.
|
||||
mv_max_parallel_processes = iv_max_parallel_processes.
|
||||
ENDMETHOD.
|
||||
|
@ -248,6 +272,110 @@ CLASS ltd_exit IMPLEMENTATION.
|
|||
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.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
|
Loading…
Reference in New Issue
Block a user