Wednesday, 2019-06-12

*** zaneb has quit IRC00:05
*** ianychoi_ has joined #openstack-oslo00:18
*** ianychoi has quit IRC00:20
*** hberaud|gone has quit IRC00:22
*** zzzeek has quit IRC00:47
*** zzzeek has joined #openstack-oslo00:47
*** bobh has joined #openstack-oslo01:26
*** dave-mccowan has quit IRC01:34
*** dave-mccowan has joined #openstack-oslo01:39
*** zzzeek has quit IRC01:57
*** zzzeek has joined #openstack-oslo01:58
openstackgerrittonybrad proposed openstack/oslo.i18n master: Move to releases.openstack.org  https://review.opendev.org/66475802:00
*** zzzeek has quit IRC02:13
*** zzzeek has joined #openstack-oslo02:16
*** dave-mccowan has quit IRC03:46
*** pcaruana has joined #openstack-oslo04:54
*** pcaruana has quit IRC04:59
*** Luzi has joined #openstack-oslo05:22
*** e0ne has joined #openstack-oslo05:51
*** e0ne has quit IRC06:22
*** takamatsu has quit IRC06:46
*** gibi has joined #openstack-oslo06:50
*** pcaruana has joined #openstack-oslo06:56
*** tesseract has joined #openstack-oslo07:14
*** dmellado has quit IRC07:17
*** rcernin has quit IRC07:22
*** iurygregory has joined #openstack-oslo07:26
*** dmellado has joined #openstack-oslo07:29
*** takamatsu has joined #openstack-oslo07:37
*** ralonsoh has joined #openstack-oslo07:42
*** e0ne has joined #openstack-oslo07:57
openstackgerritGabriele Santomaggio proposed openstack/oslo.messaging master: Add options parameter  https://review.opendev.org/66037308:12
*** takamatsu has quit IRC08:39
*** takamatsu has joined #openstack-oslo08:40
*** jaosorior has quit IRC08:51
*** takamatsu has quit IRC09:14
*** takamatsu has joined #openstack-oslo09:51
*** hberaud has joined #openstack-oslo10:03
*** takamatsu has quit IRC10:16
*** ansmith_ has joined #openstack-oslo10:26
*** ansmith_ has quit IRC10:39
*** takamatsu has joined #openstack-oslo10:49
openstackgerritAdam Spiers proposed openstack/oslo.log master: Fix guidelines w.r.t. translation of log messages  https://review.opendev.org/66485510:55
openstackgerritAdam Spiers proposed openstack/oslo.i18n master: Fix guidelines w.r.t. translation of log messages  https://review.opendev.org/66467011:05
openstackgerritAdam Spiers proposed openstack/oslo.i18n master: Fix guidelines w.r.t. translation of log messages  https://review.opendev.org/66467011:17
openstackgerritAdam Spiers proposed openstack/oslo.i18n master: Clarify that translation strings are extracted via source inspection  https://review.opendev.org/66485911:17
*** hberaud is now known as hberaud|lunch11:35
*** boden has joined #openstack-oslo12:02
*** dave-mccowan has joined #openstack-oslo12:17
*** hberaud|lunch is now known as hberaud12:27
*** raildo has joined #openstack-oslo12:28
*** iurygregory has quit IRC12:32
*** ansmith_ has joined #openstack-oslo12:32
openstackgerritGabriele Santomaggio proposed openstack/oslo.messaging master: Add options parameter  https://review.opendev.org/66037312:43
*** bobh has quit IRC12:48
*** lbragstad has joined #openstack-oslo13:20
*** pcaruana has quit IRC13:30
*** pcaruana|afk| has joined #openstack-oslo13:30
*** iurygregory has joined #openstack-oslo13:32
*** kgiusti has joined #openstack-oslo14:07
*** takamatsu has quit IRC14:18
*** zaneb has joined #openstack-oslo14:20
*** ianychoi_ is now known as ianychoi14:22
*** iurygregory has quit IRC14:27
*** takamatsu has joined #openstack-oslo14:31
kgiustigsantomaggio: hey14:34
gsantomaggioHello14:37
kgiustigsantomaggio: sorry for the long delay - I've had lots of non-openstack stuff going on last week14:37
gsantomaggioDon’t worry! I read your comments, and it makes sense to me.14:38
gsantomaggioI’d like to find a common way where we agree ! :)!14:38
kgiustigsantomaggio: kewl - I like the options patch, but I think what sean says makes sense14:38
*** takamatsu has quit IRC14:38
kgiustigsantomaggio: in the amqp1 protocol driver we've been able to detect 'no consumer' on rpc calls from the beginning14:39
kgiustigsantomaggio: but rabbitmq didn't give us a way to do that14:39
gsantomaggioNo consumer is different form mandatory14:39
gsantomaggioBack to “options”14:40
gsantomaggioWhat would be the right way ? In your opinion14:41
kgiustigsantomaggio: ugh, crap.  So mandatory simply indicates queue delivery :(14:41
gsantomaggioYes14:41
gsantomaggioMandatory = the message reached at least one queue14:42
kgiustigsantomaggio: in my not-so-humble option I'd simply choose a more restrictive name than options14:42
gsantomaggioMandatory does not care about consumers14:43
gsantomaggio(Be back in 15 minutes )14:43
kgiustigsantomaggio: kk14:43
*** iurygregory has joined #openstack-oslo14:45
*** Luzi has quit IRC14:54
*** hberaud has quit IRC15:03
*** hberaud has joined #openstack-oslo15:03
gsantomaggio@kgiusti  back.15:16
gsantomaggioSo let me recap:15:16
gsantomaggio1- I decided to add a generic parameter called "options" ( not exactly a good name :)  to pass different kind of the parameters during the "send"15:16
gsantomaggio2- the parameters depend on the _driver, for example RabbitMQ can be "mandatory" or "publish_confirm" or "transaction" (transaction not used for now)15:16
gsantomaggio3- in other context as kafka  parameters like these: https://kafka-python.readthedocs.io/en/master/apidoc/KafkaProducer.html15:16
gsantomaggioWe decided to split the current pull request in two different pull requests:15:16
gsantomaggio 1- only add the "options" parameter15:16
gsantomaggio 2- implement mandatory flag for rabbitmq ( using the 1 )15:16
kgiustigsantomaggio: yes - two pull requests == "A Good Thing"15:19
gsantomaggio@kgiusti  👍 yes !15:19
kgiustigsantomaggio: Re: options - so these are _driver_ specific options, right?15:20
gsantomaggio@kgiusti  yes15:21
kgiustigsantomaggio: kk - so a 'better' parameter name might be something like "transport_options" maybe?  We tend to use the work "transport" in the API instead of "driver"15:22
kgiustigsantomaggio: s/work/word/g15:22
gsantomaggio@kgiusti  "transport_options" much much much better than my anonymous "options"15:23
kgiustigsantomaggio: kk +115:23
kgiustigsantomaggio: but (there's always a big but)...15:24
kgiustigsantomaggio: we've tried to keep the API "driver neutral" - we put driver specific stuff in the config, but never in the code API since we wanted oslo.messaging to be a generic RPC api - not specifically tied to rabbit (or kafka, or amqp 1.0, ...)15:27
kgiustigsantomaggio: since that makes apps hard code a dependency on the back end messaging bus15:28
kgiustigsantomaggio: and we've let the deployer determine which backend best fits their deployment (rabbitmq, artemis, qdr, kafka, etc)15:28
kgiustigsantomaggio: so this often brings up the question "what do we do if a driver does not support a particular option"?15:29
*** pcaruana|afk| has quit IRC15:30
kgiustigsantomaggio: do we raise a not-implemented error and force the deployer to use a compatible back end?15:30
gsantomaggio@kgiusti15:31
gsantomaggio>what do we do if a driver does not support a particular option15:31
gsantomaggiothis is the common with generic layers15:31
kgiustigsantomaggio: or can we make transport-option values generic enough to be supported by any messaging system?15:31
gsantomaggio@kgiusti the back-ends are totally different, Kafka and RabbitMQ implement 2 different ways to produce and consume messages.15:34
gsantomaggio There are not common options15:34
*** notq has joined #openstack-oslo15:35
gsantomaggioI totally undestand the problem, I had the same problem with Kombu for example15:36
gsantomaggiowhat do we do if a driver does not support a particular option15:36
gsantomaggioops sorry for example: https://github.com/celery/kombu/issues/105015:36
gsantomaggioas you can see Kombu memory <> Kombu AMQP15:37
gsantomaggioin short here you can't use the "mandatory" flag on your unit tests :)15:37
gsantomaggio@kgiusti  trying to maintain a clear and easy API, reduce the opportunity to use the _driver in "advanced" way15:39
gsantomaggio@kgiusti  for example oslo decided to enable "publish" confirm by default, but maybe you want to use the "transactions" instead of "confirm"15:41
kgiustigsantomaggio: that is very true - by abstracting out the protocol from the API we loose the ability to pass data that is available in the low level protocol specific API15:42
kgiustigsantomaggio: and in some cases that's going to prevent using certain features.15:43
kgiustigsantomaggio: however the same functionality may be offered by a different driver using different option data.15:44
kgiustigsantomaggio: for example 'mandatory' - that's a flag in rabbitmq recognizes to do a certain thing15:45
kgiustigsantomaggio: that thing (correct me if I'm wrong) is to indicate a failure if there was no queue for the given queue name (address), right?15:45
kgiustigsantomaggio: instead of just silently discarding the message (again correct me if I'm wrong)15:46
gsantomaggio@kgiusti let's say " is to raise a callback if there was no queue for the given routing-key"15:47
kgiustigsantomaggio: kewl - yes that make sense.15:47
kgiustigsantomaggio: we can do the same thing in amqp1 - just a different way15:48
kgiustigsantomaggio: so 'mandatory' does fit the abstraction for both drivers15:48
gsantomaggio@kgiusti  in kafka there is not this kind of the concept, since producer and consumer work in the same topic15:48
kgiustigsantomaggio: so in kafka's case 'mandatory' is always on, since there will always be a destination (topic)15:49
kgiustigsantomaggio: ?15:49
gsantomaggio@kgiusti  well you cloud try to write in a not-existing partition, but let's stay on track :)15:51
kgiustigsantomaggio: I'm sorry - I'm bikeshedding a bit here.15:51
gsantomaggio@kgiusti  don't worry, I mean we are here to share the different knowledge15:52
kgiustigsantomaggio: I'm just trying to see if this can be done in a more abstract way - or, actually in a way that doesn't preclude use of a particular backend15:53
kgiustigsantomaggio: so what if I propose this:15:53
*** iurygregory has quit IRC15:54
kgiustigsantomaggio: we define a set of transport options -15:54
kgiustigsantomaggio: and each driver can either support the option's behavior or raise NotImplemented...15:55
kgiustigsantomaggio: we would define 'mandatory' which in the case of rabbitmq would cause that callback to be invoked if no routing match15:55
kgiustigsantomaggio: and amqp1 would do the same behavior (just different at the protocol level)15:56
kgiustigsantomaggio: and if kafka cannot make that guarantee (callback if no 'topic') then it raises not implemented15:56
kgiustigsantomaggio: in the end, we're limited to what kombu allows us to do to some extent, right?  I mean we can't influence all features of the protocol because kombu won't let us change them15:58
gsantomaggio@kgiusti  ok, what about something like this:16:01
gsantomaggio```16:01
gsantomaggio transport_options = oslo_messaging.get_transport(transport, mandatory=True)16:01
gsantomaggioclient = oslo_messaging.RPCClient(transport, target, transport_options)16:01
gsantomaggio``16:01
gsantomaggio@kgiusti  ok, what about something like this:16:01
gsantomaggio```16:01
gsantomaggiotransport_options = oslo_messaging.get_transport(transport, mandatory=True)16:01
gsantomaggioclient = oslo_messaging.RPCClient(transport, target, transport_options)16:01
gsantomaggio```16:01
gsantomaggioor maybe better16:02
gsantomaggio```16:03
gsantomaggiotransport_options = oslo_messaging.get_transport_options(transport, mandatory=True)16:03
gsantomaggioclient = oslo_messaging.RPCClient(transport, target, transport_options)16:03
gsantomaggio```16:03
gsantomaggioso we can implement the `transport_options` for each single _driver, how does it sound ?16:04
kgiustigsantomaggio: interesting, so what would .get_transport_options(...) return in the case of rabbitmq?  {'mandatory:'True} would be my guess16:06
gsantomaggio@kgiusti  by default for the moment) `{'mandatory:'False,'publish_confirm': True, 'transaction': False}`16:08
gsantomaggiothen you can override it16:08
*** pcaruana|afk| has joined #openstack-oslo16:09
kgiustigsantomaggio: ah!  So get_transport_option() takes a set of keyword parameters which lets the driver translate that into driver specific parameters for the call?16:10
kgiustigsantomaggio: like get_transport_options(t, mandatory=True) could return {'send-unsettled: True} for amqp1 driver?16:11
kgiustigsantomaggio: which would give us the same behavior16:11
gsantomaggio@kgiusti  something like that, maybe we can call them with a more "abstract" names16:12
gsantomaggioI'd start with "mandatory", then we will see the others16:13
kgiustigsantomaggio: bravo!  Yes _that's_ perfect - you're able to express that well.16:13
kgiustigsantomaggio: +216:13
gsantomaggio@kgiusti  @bnemec  @hberaud  @ansmith_  we agree ?16:14
gsantomaggio3...16:14
gsantomaggio2...16:14
gsantomaggio1...16:14
bnemecI'm just catching up, but this all sounds reasonable to me.16:14
kgiustiyay!16:14
gsantomaggio0...16:14
gsantomaggioCool! thank you guys ! will work on it, does it make sense to close the current review  and start with a new one ? @kgiusti16:15
gsantomaggioor use the same one to take the story?16:16
hberaud+116:16
bnemecgsantomaggio: I'd stick with the same one so we have a history of the discussion that led us to this design.16:16
kgiustigsantomaggio: +116:16
gsantomaggiook great!16:17
gsantomaggioleaving ! great progress today ! :)!16:17
bnemecgsantomaggio: If you want to start the commit over from scratch, you can just copy the Change-Id line into the new commit message and it will get pushed to gerrit as the same change.16:17
hberaudgsantomaggio: w00t!16:17
bnemecgsantomaggio: Thanks for sticking with this!16:17
kgiustigsantomaggio: yes indeed - thanks!16:19
*** e0ne has quit IRC16:44
*** tosky has joined #openstack-oslo17:05
*** ianychoi has quit IRC17:25
*** hberaud is now known as hberaud|afk17:34
*** e0ne has joined #openstack-oslo18:10
*** e0ne has quit IRC18:12
*** e0ne has joined #openstack-oslo18:12
*** e0ne has quit IRC18:17
*** e0ne has joined #openstack-oslo18:19
*** e0ne has quit IRC18:35
*** tesseract has quit IRC18:54
*** e0ne has joined #openstack-oslo19:23
*** e0ne has quit IRC19:26
*** tosky has quit IRC19:26
*** ralonsoh has quit IRC19:50
*** hoonetorg has quit IRC19:51
*** hoonetorg has joined #openstack-oslo20:03
*** hberaud|afk is now known as hberaud20:05
*** ansmith_ has quit IRC20:50
*** kgiusti has left #openstack-oslo21:06
*** boden has quit IRC21:10
*** pcaruana|afk| has quit IRC21:16
openstackgerritMerged openstack/oslo.log master: Fix guidelines w.r.t. translation of log messages  https://review.opendev.org/66485521:31
*** raildo has quit IRC21:47
*** notq has quit IRC22:12
*** ansmith_ has joined #openstack-oslo22:38
*** rcernin has joined #openstack-oslo22:41
*** lifeless has quit IRC23:05

Generated by irclog2html.py 2.15.3 by Marius Gedminas - find it at mg.pov.lt!