Project

General

Profile

Feature #1895

osd: detect duplicate requests by tracking per-client last_acked_tid instead of using pg log

Added by Josh Durgin about 12 years ago. Updated about 12 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Category:
OSD
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
Reviewed:
Affected Versions:
Pull request ID:

Description

Currently duplicate request detection uses the PG log, which may be trimmed too much to contain actual duplicates. This can cause out of order acks, since a later operation might be detected as a dup, and immmediately acked, while an earlier one may have been trimmed from the log already. Stale client information can be removed after a timeout period.

History

#1 Updated by Greg Farnum about 12 years ago

Naively this data can just go in the OSD::Session struct. However, it might be a bit of a hassle dealing with thrashing scenarios where we maintain the session but get retransmitted requests?

#2 Updated by Sage Weil about 12 years ago

my first thought would be something like:

- set<osd_reqid_t> in the Session
- on session open, load above set from an object on disk
- within session, when client sends trim info, rewrite session object. at least sometimes.
- when a request is written to disk, include an append to the client session object in the local transaction

hmm, but that doesn't help when the pg migrates elsewhere.. we need to build up session state about recent history there as well.. and presumably then it would come from the pg log.

unless the per-client session state is an object in the pg, and the trimming of session state (or purging of stale sessions) is also reflected by a pg log entry, just like everything else.

blah..

#3 Updated by Sage Weil about 12 years ago

  • translation missing: en.field_position set to 4

#4 Updated by Sage Weil about 12 years ago

  • Target version deleted (v0.41)
  • translation missing: en.field_position deleted (4)
  • translation missing: en.field_position set to 1

#5 Updated by Sage Weil about 12 years ago

  • translation missing: en.field_position deleted (10)
  • translation missing: en.field_position set to 80

#6 Updated by Sage Weil about 12 years ago

  • translation missing: en.field_position deleted (90)
  • translation missing: en.field_position set to 103

#7 Updated by Sage Weil about 12 years ago

  • Status changed from New to Rejected

Also available in: Atom PDF