Opened 11 years ago

Last modified 23 months ago

#347 assigned enhancement

Provide public API for replication

Reported by: olly Owned by: richard
Priority: normal Milestone: 1.4.x
Component: Library API Version: SVN trunk
Severity: normal Keywords:
Cc: Blocked By:
Blocking: Operating System: All

Description

struct ReplicationInfo should probably be replaced by getter methods of DatabaseMaster and DatabaseReplica (for API consistency with existing classes and to permit other statistics to be added in the future without ABI breakage).

Setting milestone:1.1.1 for now - I'm currently intending to mark replication as "experimental" for 1.1.0.

Change History (10)

comment:1 Changed 11 years ago by olly

  • Component changed from Other to Library API

comment:2 Changed 11 years ago by richard

  • Owner changed from olly to richard
  • Status changed from new to assigned

I've already started work on a patch for this, so assigning to me - it'll probably need some review and replication may well need other changes, so marking it as "experimental" is a good plan anyway.

comment:3 Changed 10 years ago by olly

  • Milestone changed from 1.1.1 to 1.1.2

comment:4 Changed 10 years ago by olly

  • Priority changed from normal to highest

This is really a blocker for releasing with replication, and having to disable that for 1.2.0 would be a shame and probably somewhat fiddly. Also there's a partial patch. Hence setting highest priority.

comment:5 Changed 10 years ago by olly

  • Milestone changed from 1.1.3 to 1.1.4

Bumping to 1.1.4.

comment:6 Changed 10 years ago by richard

After some discussion on IRC, we've decided that the replication API isn't ready for a stable release yet. I have several significant concerns about it:

  • the ReplicationInfo? struct, as described in this ticket.
  • there's no way to monitor progress of the replication operation through the API
  • the file descriptor used for the replication communication is exposed via the API, which is a potential portability problem, and also simply rather ugly.
  • the API generally offers little control over replication; it's really only designed for the command line scripts to use.

Rather than commit to supporting this API for several years, we'll remove it from the API now. Replication functionality will still be available in the 1.2.0 release via the scripts in bin, which have been tested in production environments and work well.

comment:7 Changed 10 years ago by richard

  • Milestone changed from 1.1.4 to 1.2.x

Replication API removed from public API in r13899 (for the bindings) and r13900 (for xapian-core).

Marking this ticket for the 1.2.x milestone, since a fix will no longer produce an API change.

comment:8 Changed 9 years ago by olly

  • Priority changed from highest to normal
  • Summary changed from Replace struct ReplicationInfo with getters to Provide public API for replication
  • Type changed from defect to enhancement

comment:9 Changed 7 years ago by olly

  • Milestone changed from 1.2.x to 1.3.x

This isn't 1.2.x material now.

comment:10 Changed 4 years ago by olly

  • Milestone changed from 1.3.x to 1.4.x

Not a blocker for 1.4.0.

Exposing the fd is potentially an issue on Windows (where sockets are type SOCKET, which is essentially a pointer so may not fit in an int).

If we could just expose it as an opaque handle which fits in an int, we could map internally for such platforms.

Note: See TracTickets for help on using tickets.