rustyrazorblade opened a new issue, #110: URL: https://github.com/apache/cassandra-easy-stress/issues/110
The populate phase can silently lose rows. It runs through `RequestQueue`, which drops rows when the queue is full, never retries failed writes, has no in-flight bound, does not wait for in-flight writes, and then hides the failures with `resetErrors()`. The default `random` key generator also leaves partitions empty, and the `Locking` populate writes keys with the wrong prefix. ## Plan - Replace `RequestQueue` for populate with a per-thread pull loop, bounded by a semaphore (`--populate.concurrency`, default 100). Each thread drains its permits before it returns. The main phase does not change. - Retry in the driver: a custom `RetryPolicy` in a `populate` execution profile, with populate statements marked idempotent. - Populate ignores `--rate`. The optimizer starts after populate. - `--populate.generator` (default `sequence`), `--populate.batch K` (`UNLOGGED`, or `COUNTER` for counter tables), `--populate.deletes` / `--populate.deleteratio` (default 0; deletes go alone), and `--populate all` (every partition once). - A separate `populateErrors` meter, counted in rows. - Fix the `Locking` populate prefix. - Tests: unit tests for the pull loop and the retry policy, and integration tests for `KeyValue`, `BasicTimeSeries`, `CountersWide`, and `Locking`. ## Behavior changes Populate no longer uses `--rate` or `--deleterate`, and its default key order changes from `random` to `sequence`. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
