# README
cypress
An integrated web server and websocket framework
features
- pipeline based request handlers
- security as a request handler
- logging as a request handler
- MVC support
- Redis based session store support
- context for all, supports cancellation and correlation logging
- horizental database partitioning
- XA transaction support
XA transaction support requirements
- User privileges
For MySQL 8.0 XA_RECOVER_ADMIN is required
- Unique key generator
There is a default database based unique key generator, since the tables requires by the generator would not exceed a few hundreds of rows, there is no sharding support for this version of unique key generator. The following data table is required for DB based unique key generator.
create table `id_generator` (
`name` varchar(200) not null,
`partition` int not null,
`pooled_id` int not null,
constraint `pk_id_generator` primary key (`name`, `partition`)
) engine=InnoDB default charset=utf8;
- Cluster transaction state store
A cluster transaction state store is required to support distributed transactions, the store is used to provide transaction states for unknown transaction state resolver to decide how to move on with outstanding but timeout transactions.
There is a DB based transaction store implementation provided, which requires the following data tables,
create table `cluster_txn` (
`id` varchar(40) auto_increment not null primary key,
`state` int not null default 0,
`timestamp` bigint not null,
`lease_expiration` bigint not null default 0
) engine=InnoDB default charset=utf8 auto_increment=10001;
create table `txn_participant` (
`txn_id` varchar(40) not null,
`partition` int not null,
`state` int not null default 0,
constraint `pk_txn_participant` primary key (`txn_id`, `partition`)
) engine=InnoDB default charset=utf8;