Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ringbuffer] Keep primary and backups consistent in case of a store failure #11209

Closed
mmedenjak opened this issue Aug 23, 2017 · 0 comments · Fixed by #12137
Closed

[ringbuffer] Keep primary and backups consistent in case of a store failure #11209

mmedenjak opened this issue Aug 23, 2017 · 0 comments · Fixed by #12137
Assignees
Milestone

Comments

@mmedenjak
Copy link
Contributor

mmedenjak commented Aug 23, 2017

Current behavior

Backups' view of the Ringbuffer differs from the primary's in case of an exception is thrown by the store underlying the Ringbuffer.

Example

Add 5 items.
A client adds a 6th.
The primary will add it to its ringbuffer. It will then call store. If the store throws an exception the primary leaves the 6th item in its primary ring buffer but does not add it to the backup ring buffer and it is also missing from the store.

Desired behavior

Neither primary nor backups add item(s) in case of a store exception is thrown. Store is responsible for not adding the item(s) in case it throws exceptions.

Also the contracts between the Ringbuffer and the RingbufferStore needs to be documented in the javadoc.

@mmedenjak mmedenjak added this to the 3.10 milestone Aug 23, 2017
@blazember blazember self-assigned this Jan 9, 2018
blazember added a commit to blazember/hazelcast that referenced this issue Jan 11, 2018
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
blazember added a commit to blazember/hazelcast that referenced this issue Jan 11, 2018
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
blazember added a commit to blazember/hazelcast that referenced this issue Jan 11, 2018
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
blazember added a commit to blazember/hazelcast that referenced this issue Jan 15, 2018
- Fail Ringbuffer add operations (add, addAsync, addAllAsync) in case the underlying store throws an exception
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
blazember added a commit to blazember/hazelcast that referenced this issue Jan 15, 2018
- Fail Ringbuffer add operations (add, addAsync, addAllAsync) in case the underlying store throws an exception
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
blazember added a commit to blazember/hazelcast that referenced this issue Jan 15, 2018
- Fail Ringbuffer add operations (add, addAsync, addAllAsync) in case the underlying store throws an exception
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
@blazember blazember changed the title [ringbuffer] RingBuffer Store failure scenarios not documented/loose contract [ringbuffer] Keep primary and backups consistent in case of a store failure Jan 15, 2018
blazember added a commit to blazember/hazelcast that referenced this issue Jan 16, 2018
- Fail Ringbuffer add operations (add, addAsync, addAllAsync) in case the underlying store throws an exception
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
blazember added a commit to blazember/hazelcast that referenced this issue Jan 16, 2018
- Fail Ringbuffer add operations (add, addAsync, addAllAsync) in case the underlying store throws an exception
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
blazember added a commit to blazember/hazelcast that referenced this issue Jan 17, 2018
- Fail Ringbuffer add operations (add, addAsync, addAllAsync) in case the underlying store throws an exception
- Define contracts and interactions between Ringbuffer and RingbufferStore
- Format Ringbuffer javadoc
- Bring terms and spelling to a common ground (ringbuffer -> Ringbuffer, entries -> items etc)
- Resolves contradiction between reference manual and javadoc:
	manual: "Hazelcast Ringbuffer is a distributed data structure..."
	javadoc: "Ringbuffer currently is not a distributed data-structure..."

Fixes hazelcast#11209
blazember added a commit that referenced this issue Jan 17, 2018
Items not to be added to Ringbuffer on store error
@mmedenjak mmedenjak added the Source: Internal PR or issue was opened by an employee label Jan 28, 2020
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants