cockroachdb / cockroachdb/pebble

metamorphic: support for "invisible" operations in the op log

Open
#2,480 1 comment 0 reactions 0 assignees View on GitHub
A-storage T-storage
Dominant language
Go
Stars
6k
Forks
584
Avg merge
16h 35m
Merged PRs (30d)
5

Description

Certain operations, while being exposed in the Pebble API, are "invisible" in the sense that they alter the internal state of the DB, but should not alter the logic state of the DB. For example, compactions.

It is currently implicit (as a function of the DB variant configuration) whether the following two operations result in an equivalent state:

```
write(A), write(B), write(C), read()
versus
write(A), write(B), compact(), write(C), read()
```

Consider allowing support for "invisible" operations. These could be in the op log that is generated up front, but would be a no-op against some test variants (based on some probability), so as to reproduce the case above.

Jira issue: PEBBLE-194

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by tracing how the metamorphic test op log is generated and how DB variants execute operations. Determine where an invisible operation could be represented and selectively treated as a no-op, then verify that sequences with and without operations such as compact() can reproduce equivalent logic states.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
databases, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.