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

Persistent Queue v1 #5958

Closed
wants to merge 203 commits into from
Closed

Persistent Queue v1 #5958

wants to merge 203 commits into from

Conversation

colinsurprenant
Copy link
Contributor

This is a WIP level PR to start getting eyeballs and bootstrapping the review process. Please note the following:

  • tasks/issues tracking for the first iteration of PQ is in [meta] first persistence implementation release tracking #5638. There are still important details to look into so try and avoid reporting already tracked issues/tasks in this PR
  • by looking at the files changed by filing the PR I can already see a few files that should not be part of this PR, I will look into this shortly

First Iteration Design Goals:

  • prevent inflight data loss upon app/os/machine crash by aiming at at-least-once delivery semantic. note that at this point there is no change in the per-event processing/delivery failure where best-effort is done at the plugin level and can result in dropped event. This will be addressed in the future Dead Letter Queue feature, see Design: Events eviction and Dead Letter Queue #5283
  • provide backpressure handling within logstash using this variable length persistent queue. This will help avoid installing external intermediate message queues for the sole purpose of handling logstash backpressure.

Usage:

  • by default PQ is enabled and in the data/queue path. make sure it exists: $ mkdir -p data/queue
  • $ rm -f data/queue/* will clean the queue if needed when logstash is not running.
  • The following new config options are supported:
    • path.queue: which defaults todata/queue`
    • queue.type: which default to the disk based PQ but can also take the memory option to use the in-memory implementation of the PQ (that we use in tests), or synchronous which is the legacy in-memory queue.
    • queue.page_capacity which defaults to 250M
    • queue.queue_capacity which for now is a maximum number of events limit in the queue, by default there is no limit

colinsurprenant and others added 30 commits June 22, 2016 15:12
…java_persistence

# Conflicts:
#	logstash-core/src/main/java/org/logstash/ackedqueue/Checkpoint.java
#	logstash-core/src/main/java/org/logstash/ackedqueue/HeadPage.java
#	logstash-core/src/main/java/org/logstash/ackedqueue/Queue.java
@@ -0,0 +1,279 @@
package org.logstash.common.io.wip;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is this package?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as discussed this is a temporary package to hold the unfinished MemoryPageIOStream.java so it can benefit any code refactor etc.

@colinsurprenant colinsurprenant changed the title [WIP] Persistent Queue Persistent Queue v1 Oct 28, 2016
@suyograo
Copy link
Contributor

suyograo commented Nov 2, 2016

Closing this as it is already merged.

@suyograo suyograo closed this Nov 2, 2016
@suyograo suyograo deleted the feature/java_persistence branch July 24, 2017 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants