<div dir="ltr">+1<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Apr 7, 2018 at 8:13 AM, David Davis <span dir="ltr"><<a href="mailto:daviddavis@redhat.com" target="_blank">daviddavis@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">+1</div><div class="gmail_extra"><span class="HOEnZb"><font color="#888888"><br clear="all"><div><div class="m_-4785469853243101555gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><br></div><div>David<br></div></div></div></div></div></div></div></div></font></span><div><div class="h5">
<br><div class="gmail_quote">On Fri, Apr 6, 2018 at 10:39 AM, Dennis Kliban <span dir="ltr"><<a href="mailto:dkliban@redhat.com" target="_blank">dkliban@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Fri, Apr 6, 2018 at 10:15 AM, Brian Bouterse <span dir="ltr"><<a href="mailto:bbouters@redhat.com" target="_blank">bbouters@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div>Several plugins have started using the Changesets including pulp_ansible, pulp_python, pulp_file, and perhaps others. The Changesets provide several distinct points of value which are great, but there are two challenges I want to bring up. I want to focus only on the problem statements first.<br><br></div>1. There is redundant "differencing" code in all plugins. The Changeset interface requires the plugin writer to determine what units need to be added and those to be removed. This requires all plugin writers to write the same non-trivial differencing code over and over. For example, you can see the same non-trivial differencing code present in <a href="https://github.com/pulp/pulp_ansible/blob/d0eb9d125f9a6cdc82e2807bcad38749967a1245/pulp_ansible/app/tasks/synchronizing.py#L217-L306" target="_blank">pulp_ansible</a>, <a href="https://github.com/pulp/pulp_file/blob/30afa7cce667b57d8fe66d5fc1fe87fd77029210/pulp_file/app/tasks/synchronizing.py#L114-L193" target="_blank">pulp_file</a>, and <a href="https://github.com/pulp/pulp_python/blob/066d33990e64b5781c8419b96acaf2acf1982324/pulp_python/app/tasks/sync.py#L172-L223" target="_blank">pulp_python</a>. Line-wise, this "differencing" code makes up a large portion (maybe 50%) of the sync code itself in each plugin.<br><br></div></div></div></div></div></blockquote><br></span>That is definitely a problem. We should address this.<span><br><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div></div>2. Plugins can't do end-to-end stream processing. The Changesets themselves do stream processing, but when you call into changeset.apply_and_drain() you have to have fully parsed the metadata already. Currently when fetching all metadata from Galaxy, pulp_ansible takes about 380 seconds (6+ min). This means that the actual Changeset content downloading starts 380 seconds later than it could. At the heart of the problem, the fetching+parsing of the metadata is not part of the stream processing.<br><br></div></div></div></div></blockquote><div><br></div></span><div>This is the same problem we currently have in Pulp 2. We should address this. <br></div><span><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div></div>Do you see the same challenges I do? Are these the right problem statements? I think with clear problem statements a solution will be easy to see and agree on.<br><br></div></div></div></blockquote><div><br></div></span><div>Yes, I do. You described the problems very well. <br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div></div>Thanks!<span class="m_-4785469853243101555m_-3975195526596898082HOEnZb"><font color="#888888"><br></font></span></div><span class="m_-4785469853243101555m_-3975195526596898082HOEnZb"><font color="#888888">Brian<br></font></span></div>
<br>______________________________<wbr>_________________<br>
Pulp-dev mailing list<br>
<a href="mailto:Pulp-dev@redhat.com" target="_blank">Pulp-dev@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/pulp-dev" rel="noreferrer" target="_blank">https://www.redhat.com/mailman<wbr>/listinfo/pulp-dev</a><br>
<br></blockquote></div><br></div></div>
<br>______________________________<wbr>_________________<br>
Pulp-dev mailing list<br>
<a href="mailto:Pulp-dev@redhat.com" target="_blank">Pulp-dev@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/pulp-dev" rel="noreferrer" target="_blank">https://www.redhat.com/mailman<wbr>/listinfo/pulp-dev</a><br>
<br></blockquote></div><br></div></div></div>
<br>______________________________<wbr>_________________<br>
Pulp-dev mailing list<br>
<a href="mailto:Pulp-dev@redhat.com">Pulp-dev@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/pulp-dev" rel="noreferrer" target="_blank">https://www.redhat.com/<wbr>mailman/listinfo/pulp-dev</a><br>
<br></blockquote></div><br></div>