Simple Transition
There is a new simplified strategy for Promotion, Approval and Deployment processes. It opts for direct JDBC persistence operations and batch processing which increases performance.
This is an Opt-In feature which is enabled by this property:
sandbox.lifecycle.strategy.simple.enabled=true
Since the new strategy processes Promotions/Approvals in batches, the batch size can be specified with the property below.
sandbox.lifecycle.strategy.simple.pageSize=1
One caveat of the batch approach is that an error in any one Promotion/Approval will cause the entire batch to fail. In such case there are two possible actions that can be taken:
- Fix the error and promote/approve the entire batch again
- Skip that failed entity and promote/approve remaining of the batch. Then fix the error and promote again individually.
Benefits of the new simplified strategy
- This strategy deals strictly with SQL/JDBC and transition records in tables therefore Performance is much much better for large volumes
- There are fewer cache concerns
- There are no PersistencePackage interpretation problems. The ideas are simple and the transitions are handled at a lower level, one table at a time.
Schema changes required
A few new tables are needed for this new process. Below are the table definitions in MySQL format. Convert to the format of your database platform as needed:
CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL (
WRKFLW_CHG_DTL_ID bigint NOT NULL,
CATALOG_DISC bigint DEFAULT NULL,
DERIVED_TABLE varchar(255) DEFAULT NULL,
RELATED_TO_TABLE varchar(255) DEFAULT NULL,
SHORT_VAL varchar(4000) DEFAULT NULL,
SITE_DISC bigint DEFAULT NULL,
SITE_ID bigint DEFAULT NULL,
TARGET_ID bigint DEFAULT NULL,
TRANSITION_TYPE varchar(255) DEFAULT NULL,
PRIMARY KEY (WRKFLW_CHG_DTL_ID),
KEY CHG_DTL_TARGET_IDX (TARGET_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL_REF (
DETAIL_REF_ID bigint NOT NULL,
DETAIL_ID bigint DEFAULT NULL,
WRKFLW_SNDBX_ID bigint DEFAULT NULL,
PRIMARY KEY (DETAIL_REF_ID),
KEY CHG_DTL_TARGET_REF_IDX (DETAIL_ID),
KEY CHG_DTL_WRKFLW_REF_IDX (WRKFLW_SNDBX_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE BLC_SNDBX_WRKFLW_CHG_DTL_VAL (
CHG_DETAIL_VAL_ID bigint NOT NULL,
VALUE varchar(4000) DEFAULT NULL,
CHG_DETAIL_ID bigint DEFAULT NULL,
PRIMARY KEY (CHG_DETAIL_VAL_ID),
KEY FK1C1BCEA980E73722 (CHG_DETAIL_ID),
CONSTRAINT FK1C1BCEA980E73722 FOREIGN KEY (CHG_DETAIL_ID) REFERENCES BLC_SNDBX_WRKFLW_CHG_DTL (WRKFLW_CHG_DTL_ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Postgres is not configured for implicit casting of boolean by default. Use the following to configure:
UPDATE pg_cast set castcontext ='i' where castsource=23 and casttarget=16;