The purpose of the replication timeout was not to control the purgatory size but rather to bound the time you block on replication to other servers.
We discussed making it a server-side config but the rationale for making a client configuration is that these timeouts are fundamentally about how long the client app is willing to wait which isn't something the server can know, and isn't something which has a single value for all apps using a topic. Personally I don't think this rationale still makes sense and I don't think we should change it. I think the question is whether we can just set this timeout automatically off whatever higher level timeout the client configures, at least as a default. -Jay On Tue, May 26, 2015 at 4:46 PM, Jiangjie Qin <j...@linkedin.com.invalid> wrote: > Hi, > > I am updating the wiki for KIP-19 and wondering why we have a replication > timeout on producer side and in producer request? > > From what I understand this is a server side setting and the reasons we > need this replication timeout is because we want to control the purgatory > size. If that is the case should we just have the replication timeout as a > broker configuration? > The downside of having it on server side might be that producer could have > a request timeout/socket timeout smaller than replication timeout. In this > case we can put request timeout in producer request and if the request > timeout is smaller than replication timeout on server side, we return a > mis-cofiguration exception. > > So we can have a producer request V1 which removes ack timeout but adds > request timeout. This will give user a cleaner timeout configurations on > producer side as well. > > What do people think about this? > > Thanks, > > Jiangjie (Becket) Qin > >