<div dir="ltr"><div><div>Hello,<br><br></div>Thank you for the reply. I agree that PowerDNS launches several backend threads and they handle requests concurrently. When using Remote, especially with ZeroMQ, it sends a single request regarding a domain and will wait for an answer for that specific domain, since the REQ/REP pattern is not able to send() new queries before it receives data. In this <br>scenario it is not possible to write a recipient back-end that connects through remote and handles several requests synchronously.<br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 11, 2016 at 10:44 PM, Aki Tuomi <span dir="ltr"><<a href="mailto:cmouse@youzen.ext.b2.fi" target="_blank">cmouse@youzen.ext.b2.fi</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Sun, Sep 11, 2016 at 06:23:05PM +0300, Viktor Velchev wrote:<br>
> Hello,<br>
><br>
> I am running PowerDNS 4.0.1, which is complied from source with ZeroMQ<br>
> support in a Debian 8 environment. I am experimenting with Remote and I am<br>
> willing to write my own DNS storage (back-end), which connects to PowerDNS<br>
> through Remote. Changelogs for the newer PowerDNS versions do not give any<br>
> hints regarding the bellow described problem, so I think it is safe to<br>
> assume that the case will be the same with all available 4.0.x releases.<br>
><br>
> I am launching a single Remote instance and several threads:<br>
> launch=remote<br>
> distributor-threads=4<br>
> receiver-threads=4<br>
><br>
> Receiver and distributor thread count is just an example, the point is that<br>
> I am not running in single threaded mode.<br>
><br>
> The main problem is that Remote itself does not give me any options to<br>
> create a multi-threaded back-end. I have checked the source and although<br>
> ZeroMQ is configured to start two I/O threads, but the implemented REQ/REP<br>
> pattern limits the communication to:<br>
><br>
> 1. PowerDNS sends a request about a domain.<br>
> 2. PowerDNS waits (blocks) until it receives data about the domain.<br>
><br>
> Once my back-end receives a request I am limited to either returning false<br>
> or replying.<br>
> I am pretty sure that the case is the same with the Unix socket connector.<br>
> I have NOT checked if the case is the same with the HTTP connector.<br>
><br>
> My questions are:<br>
> 1. Is there a possibility to modify the communication pattern, so that<br>
> PowerDNS either submits multiple requests through Remote OR maybe add a<br>
> command which asks for a new query while the previous one is being executed?<br>
> 2. In case I have myself misunderstood the way PowerDNS operates, is there<br>
> a Remote connector which is suited for use in cases where the recipient<br>
> wants to handle multiple requests at a time?<br>
><br>
> Best Regards,<br>
> Victor<br>
<br>
</div></div>Usually powerdns launches several backend threads, each working in blocking<br>
mode. Thus you will have concurrent requests running despite remotebackend<br>
only doing one request at a time.<br>
<span class="HOEnZb"><font color="#888888"><br>
Aki<br>
</font></span></blockquote></div><br></div>