Monday, 2017-04-10

*** zhurong has joined #openstack-glance00:33
*** nicolasbock has joined #openstack-glance01:10
*** zhurong has quit IRC01:58
*** zhurong has joined #openstack-glance02:10
*** nicolasbock has quit IRC02:53
*** catintheroof has joined #openstack-glance03:43
*** catintheroof has quit IRC03:51
*** markvoelker has joined #openstack-glance04:05
*** udesale has joined #openstack-glance04:20
*** Dinesh_Bhor has joined #openstack-glance04:22
*** adisky_ has joined #openstack-glance04:22
*** dharinic has quit IRC04:54
*** ratailor has joined #openstack-glance05:02
*** rcernin has joined #openstack-glance05:25
*** mosulica has joined #openstack-glance05:30
*** groen692 has joined #openstack-glance05:43
*** gcb has joined #openstack-glance05:57
*** pcaruana has joined #openstack-glance06:01
*** mosulica has quit IRC06:02
*** hieulq has quit IRC06:07
*** ratailor is now known as Guest543206:14
*** mosulica has joined #openstack-glance06:24
*** namnh has joined #openstack-glance06:43
*** tesseract has joined #openstack-glance06:48
*** jaosorior has joined #openstack-glance06:49
*** mosulica has quit IRC06:54
*** mosulica has joined #openstack-glance06:57
*** markvoelker has quit IRC07:12
*** markvoelker has joined #openstack-glance07:15
*** ezoszed has joined #openstack-glance07:20
*** daidv has joined #openstack-glance07:35
*** mosulica has quit IRC07:36
*** gcb has quit IRC07:46
*** mosulica has joined #openstack-glance07:48
*** zzzeek has quit IRC08:00
*** zzzeek has joined #openstack-glance08:01
*** hieulq has joined #openstack-glance08:06
*** gcb has joined #openstack-glance08:12
*** knangia has quit IRC09:01
*** haplo37 has quit IRC09:44
*** dalgaaf has quit IRC09:46
*** tovin07 has left #openstack-glance09:47
*** dalgaaf has joined #openstack-glance09:48
*** haplo37 has joined #openstack-glance09:53
*** aarefiev_afk is now known as aarefiev09:59
openstackgerritXieYingYun proposed openstack/glance master: Add Apache License Content in index.rst  https://review.openstack.org/45520310:08
*** gcb has quit IRC10:16
*** hieulq has quit IRC10:19
*** nicolasbock has joined #openstack-glance10:22
*** hieulq has joined #openstack-glance10:33
*** daidv has quit IRC10:33
*** namnh has quit IRC10:37
*** udesale has quit IRC10:37
*** jamielennox|away is now known as jamielennox11:25
*** aavraham has joined #openstack-glance11:25
*** belmoreira has joined #openstack-glance11:36
*** smatzek has joined #openstack-glance11:48
*** mtanino has joined #openstack-glance11:51
*** markvoelker has quit IRC12:10
*** markvoelker has joined #openstack-glance12:25
*** zhurong has quit IRC12:26
*** aavraham has quit IRC12:33
*** catintheroof has joined #openstack-glance12:36
*** gcb has joined #openstack-glance12:50
*** Guest5432 has quit IRC12:53
*** jdillaman has joined #openstack-glance13:07
*** mtanino has quit IRC13:28
*** chlong has joined #openstack-glance13:31
openstackgerritHao Li proposed openstack/glance master: Fix some bugs in db/sqlalchemy  https://review.openstack.org/45532213:32
*** openstackgerrit has quit IRC13:33
*** smatzek has quit IRC13:35
*** wuyanjun has quit IRC13:35
*** wuyanjun has joined #openstack-glance13:35
*** openstackgerrit has joined #openstack-glance13:47
openstackgerritJesse J. Cook proposed openstack/glance-specs master: Eliminate Redundant Downloads of Uncached Images  https://review.openstack.org/20612013:47
*** Elaine_wu has joined #openstack-glance13:50
*** wuyanjun has quit IRC13:52
*** smatzek has joined #openstack-glance13:59
*** hongbin has joined #openstack-glance14:01
*** adisky_ has quit IRC14:09
*** mtanino has joined #openstack-glance14:16
*** lucasxu has joined #openstack-glance14:27
jcookstevelle rosmaita multihash updated and commented.14:27
jcookalso LMK if there is anything you need me to review14:27
*** dillaman has joined #openstack-glance14:45
*** belmoreira has quit IRC14:46
openstackgerritHemanth Makkapati proposed openstack/glance master: Dev Docs for Writing E-M-C Migrations  https://review.openstack.org/44374115:02
*** rcernin has quit IRC15:03
*** TravT_ has quit IRC15:06
*** udesale has joined #openstack-glance15:09
*** TravT has joined #openstack-glance15:09
*** dharinic has joined #openstack-glance15:10
*** dosaboy has quit IRC15:10
*** TravT has quit IRC15:12
*** TravT has joined #openstack-glance15:13
*** mosulica has quit IRC15:16
*** udesale has quit IRC15:18
*** ezoszed has quit IRC15:22
*** dosaboy has joined #openstack-glance15:23
*** aarefiev is now known as aarefiev_afk15:27
*** cmart has joined #openstack-glance15:53
*** lucasxu has quit IRC16:00
*** groen692 has quit IRC16:06
*** jokke__ has joined #openstack-glance16:11
*** jokke__ has quit IRC16:11
*** gyee has joined #openstack-glance16:14
jokke_specs reviews done16:17
jokke_time to fix those darn iir patches next16:17
*** knangia has joined #openstack-glance16:29
*** jaosorior is now known as jaosorior_away16:51
*** tesseract has quit IRC16:52
*** lucasxu has joined #openstack-glance17:02
dharinicrosmaita: stevelle: hemanthm: I wanted opinion on the possible ways to handle a partial download request coming for an image stored in a non-random-read supported store.17:09
dharinicCurrently it is a 206 and a full image.17:09
openstackgerritMerged openstack/glance master: Dev Docs for Writing E-M-C Migrations  https://review.openstack.org/44374117:12
openstackgerritMerged openstack/glance-specs master: Update spec template for db migrations  https://review.openstack.org/44810717:20
hemanthmdharinic: 416?17:22
hemanthmthat's one possibility17:22
hemanthmthat request is valid in this case though, so it's not necessarily a client-side error17:23
hemanthmHence 4xx doesn't make sense. That's one argument17:23
dharinicyeah. A 416 means the request range is not satisfiable17:24
dharinicYeah. Its arguable..17:24
hemanthmI said 416 because we are throwing that for multi-range requests17:24
hemanthmbut there at least we can document that multi-ranges are not supported. At which point it is a client-side error17:25
rosmaitadharinic: i think 206 + full image is ok, but you have to have a Content-Range response indicating the entire thing17:25
rosmaitamy reading of the standard is that 206 response must have a content-range header17:26
stevelle206 reads as the wrong choice, but I'm not really engaged17:26
dharinicyes. Currently for a non-random-read store, the content-range is set. But wrongly. i.e., the actual bits requested.. though we return full image17:26
timburkefwiw, it seems like the spec lets you 200 and return the whole thing17:27
stevelle^17:27
rosmaitayeah, so my problem isn't with the 206 or the full image, it's that the content range is incorrect in the response17:27
hemanthmwhy not 200 + full image?17:27
dharinicI was thinking of 200 + full image too.17:28
hemanthmThat's a clear indication that we ignore the range request.17:28
stevelle^ w/o content-range17:28
dharinicYes. But I kind of like rosmaita's suggestion too. 206 + full image (as it is now). But with the correct content-range response17:28
dharinictimburke: Can you please tell me which spec?17:29
stevelle206 looks wrong to me17:31
stevelleif given full img17:31
hemanthm+117:31
dharinicThe 206 (Partial Content) status code indicates that the server is17:31
dharinic   successfully fulfilling a range request for the target resource by17:31
dharinic   transferring one or more parts of the selected representation that17:31
dharinic   correspond to the satisfiable ranges found in the request's Range17:32
dharinic   header field (Section 3.1).17:32
dharinicYeah, 206 is indeed not right17:32
dharinicas per rfc723317:32
stevelleunless the range request results in the full image being requested, it isn't successfully fulfilling a range request17:33
dharinicYes.17:33
stevelleif the range happens to cover the full image, don't try to notice and return 200 though17:33
hemanthmI feel response code is a much stronger indication than content-range because we know virtually all clients read the response code17:33
stevellecontent-range should only appear on a 206, was my reading17:34
stevellenever any other time17:34
rosmaitathat's what my reading is too17:34
hemanthmstevelle: yes, I was referring to 2-6 + full image + content range header17:34
dharinicYes stevelle. Thats right.17:34
rosmaitaok, i agree about the 200 (with no content-range)17:34
hemanthm*20617:34
rosmaitahere's from the section about an alternative to 416:17:35
rosmaitaNote: Because servers are free to ignore Range, many implementations will simply respond with the entire selected representation in a 200 (OK) response.  That is partly because most clients are prepared to receive a 200 (OK) to complete the task (albeit less efficiently) and partly because clients might not stop making an invalid partial request until they have17:35
rosmaita received acomplete representation.  Thusv, clients cannot depend on receiving a 416 (Range Not Satisfiable) response even when it is most appropriate.17:35
timburkedharinic: https://tools.ietf.org/html/rfc7233#section-3.1 -- "A server MAY ignore the Range header field."17:35
rosmaitaso clients have to expect a 200 could be a possibility17:35
timburkeif we ignore it, then there should be a 200, no content-range17:35
hemanthmyep17:35
stevelleok, I think we all agree now17:35
rosmaitatimburke: agreed17:36
dharinicyes.17:36
dharinicSo if a range request for a full image download in a non-random-read store comes, we still ignore it, send full image + 200 + no content-range right?17:36
hemanthm+117:37
stevellethis is different from the multi-range request, where we decided not to return 200 + full img. instead we choose 400. I'm still mostly ok with that but this is what I wanted there too.17:37
dharinicalthough that could possible be returned a 206 cos the request is actually satisfied..?17:37
stevelleno, if you don't return all the data asked for you didn't satisfy it17:38
stevelle1 of 2 blocks of bits isn't satisfying17:38
stevellethe full image includes all requested blocks though :)17:38
dharinica range request like "bytes=0-" will be served with a  full image anyway stevelle17:38
dharinicthough it was a non-random-read store17:38
hemanthmthat's a full range :)17:38
dharinicyep.17:38
stevelledharinic: as I suggested before, "if the range happens to cover the full image, don't try to notice and return 200 though"17:39
dharinicbut currently we return 2-6 for it cos technically we are satifying the range though it is for a full image17:39
stevelleagreed17:39
hemanthmI agree with stevelle.17:39
stevellethis is where sigmavirus would remind us that RFCs are terrible.17:40
dharinicI did not understand the "and" there stevelle. did it mean do not try to notice it, send 200 or did it mean do not try to notice it, do not send 200.17:40
hemanthmthe rfc has no mention of the server evaluating the ranges anyway17:40
dharinicsorry about that ^17:40
hemanthmdharinic: he's saying don't evaluate the ranges to return 200 for requests that request full range17:41
dharinicokay cool.17:41
stevellethat17:41
stevelle206, content-range, the range of data that happens to represent the full img17:42
dharinicokay great. thanks for clarifying stevelle17:43
stevellenext cycle, we play with If-Range headers17:43
dharinicsure. :)17:43
hemanthmextending this topic further: what happens when I try the same partial image download again?17:44
hemanthmthe first time I get 200 + full image17:44
hemanthmat this point, the image is cached17:44
hemanthmnext time for the same request I get 206 + partial image + content-range header17:44
hemanthmbecause we server the content from cache (assuming dharinic's spec is implemented)17:45
stevelleI haven't given a + on that lite spec yet :P17:45
hemanthm*serve17:45
stevelledon't confuse me17:45
stevelleI had to check to see if it merged there17:46
hemanthmsorry17:46
stevelle:D17:46
hemanthmI should have established the context17:46
hemanthmI just downgraded my vote based on that concern17:46
stevelleSo, before we do that work maybe we add support for proper range requests to glance client?17:47
stevellethat way nova can get the benefit17:48
dharinichemanthm: we were discussing about glance root app17:48
dharinicif the request came to glance root app17:48
hemanthmdharinic: yes17:48
hemanthmI'm discussing your lite-spec17:48
dharinicokayy17:48
* hemanthm should learn to set the context17:49
dharinicSo the concern is that once one would get 200 + full image but later get 206 + partial image?17:49
rosmaitahemanthm: what's your concern about that?17:49
dharinicI brought up this topic after seeing the comment on the lite-spec :D17:50
hemanthmrosmaita: what dharinic said above17:50
hemanthmdharinic: yes17:50
rosmaitahemanthm: how far above?17:50
hemanthmrosmaita: once one would get 200 + full image but later get 206 + partial image17:50
dharinicHmmm. is there much we can do there? The store does not support random-read. so the first request simply cant get a 206 and partial image. But once it is available, we serve what we have to17:50
dharinicI understand it might be wierd for the user to see that the same request got different responses at 2 different times17:51
dharinicbut I am not sure we should keep giving him the full image once it is cached and we can actually satisfy his exact request17:52
rosmaitathat's why i suggested always serving range requests from the cache17:52
dharinicalways?17:52
rosmaitayes17:52
rosmaitain order to support range requests, you must have the cache enabled17:53
rosmaitaotherwise, no range request support17:53
rosmaitathat way, we support all back ends in the same way17:53
hemanthmwhy don't we remove range request support from cache instead?17:53
hemanthmlet the root app serve all range requests17:53
rosmaitabecause it can't for all backends17:54
dhariniccache can for all backends17:54
hemanthmcache is an optional middleware17:54
rosmaitayes, so no cache -> no range requests17:54
dharinicyeah. We cant expect everyone to have cache to use partial downloads i guess17:55
dharinicbut i understand rosmaita's point17:55
rosmaitaif you dont' need the cache, then you probably don't need partial downloads17:55
dharinicOr we go with the lite-spec. First req will get 200 + full image. but second will get 206 + partial image.17:55
hemanthmI see that but it's weird to see that connection17:55
hemanthmdharinic: that's the sign of an unstable API17:56
hemanthmor some weird statefulness between requests17:56
dharinicHmmmm. Agreed.17:57
dharinicIf eliminate redundant downloads merged, this issue would be solved probably.17:58
dhariniceven if we do "use cache if u want range requests", we will still depend on the image to first be cached18:00
hemanthmyes18:00
hemanthmor we expect cache middleware to first cache the image18:00
dharinicor like hemanthm said, never care about range requests in cache. Always go to root app. But that way, even if it is there in cache..we are uneccsarily going to store18:01
dharinicyeah thats a part of the eliminate redundant download spec proposal hemanthm18:01
hemanthmI see, I didn't review that yet.18:01
dharinicHmmm. would u like to review it and then we can rethink about this maybe?18:02
hemanthmAre we putting too much in the middleware?18:02
dharinicMaybe18:02
dharinichttps://review.openstack.org/#/c/206120/18:02
dharinicFor now I will hold on to the lite-spec18:03
rosmaitai think it makes sense to support range requests out of the cache ... if you make one range request, there is a high likelihood you are going to make another18:03
rosmaitai mean, no one *really* wants just a few bytes of an image18:03
rosmaitayou really need the whole thing18:04
dharinicHmmm18:05
* hemanthm is wondering if we should deal with this when the need arises18:06
stevelleI don't agree with the idea that we have a need to treat all back ends the same way, or that we have to treat serial requests for the same image the same way, FWIW18:07
stevellewe should document clearly whatever comes about though for users, and then explain again in admin guide the implications of each store and of using cache18:08
stevellee.g. If you request a partial image using Range, you may get the segment you asked for with a 206, content-range or you may get the full image with a 200, depending on how your cloud is configured.18:09
rosmaitagood point, just explicitly say you must be prepared for both, leaves us room to improve things later18:10
stevelleand the only case I can see for range requests really being used is in the case of an interrupted download you want to resume18:10
*** dharinic has quit IRC18:10
rosmaitaor if you know you have a unreliable network18:11
stevelleI see that as the same case18:11
stevelleperhaps there is something I am missing18:12
rosmaitanot really, if you know you have a crappy network, you may never try to get the whole image, just have a client that grabs 5 meg at a time18:12
rosmaitaso you only make range requests18:12
stevelleI would assume you lay down bits as you go, when it dies you resume from the failure point wherever that was.18:12
stevellebut the first request starts from 0 and doesn't need a Range heaer18:13
stevellegood enough, though18:13
rosmaitawell, the other thing is you can make parallel requests for 5 meg segments and write them to the correct place in the file you're constructing18:14
stevellethere is a better protocol for that, but we've discussed it before, no need to retread that18:15
stevelleIn time I imagine that use case might appear if we get some solid behavior on Range18:15
hemanthmstevelle: aren't you supposed to be taking sick day? :)18:17
stevelleyes18:17
*** cmart has quit IRC18:33
*** cmart has joined #openstack-glance18:33
*** dharinic has joined #openstack-glance18:50
dharinicrosmaita: Out of the cache as in, only out of the cache?18:52
rosmaitadharinic: sorry, lost the context for that19:00
dharinicNo problem rosmaita. W.r.t to your previous message, I was asking if you were suggesting that we support range requests only from cache and never from root app.19:05
*** edmondsw_ has joined #openstack-glance19:15
*** edmondsw_ has quit IRC19:15
*** cmart has quit IRC19:23
*** TravT has quit IRC19:27
rosmaitadharinic: sorry, was in a meeting19:38
rosmaitadharinic: yes, that was my thought, here is my reasoning19:38
rosmaitaif we're going to support range requests at all from the cache, then we are not limited to supporting them only for specific backends19:39
rosmaitabut, we are giving a 400 for those backends that don't support range requests19:39
rosmaitaso, we could move all range requests into the cache19:39
rosmaitathen, it doesn't matter any more what backend you are using, you can still have range requests satisfied19:40
rosmaitabut ... the cache is optional middleware19:40
rosmaitaso, maybe the thing to do is: only support range requests from the cache19:40
rosmaitabut, is that too restrictive? maybe, but i think that the clouds where people "need" range requests probably overlap with clouds that use caching19:41
rosmaitabecause a really small cloud on a really small network, you won't have any problems downloading an entire image each time19:41
*** cmart has joined #openstack-glance19:42
rosmaitaanyway, that's my thinking19:43
rosmaitanot 100% sure it is a good idea, but not convinced it's a bad idea either19:43
dharinicI understand your point rosmaita. While it makes sense, just as you point out, it might seem like restricting a feature only to cache.  Other option is to leave it as is now..but fix how we handle range reqs for non random-read stores (for which we all agreed upon something).19:45
dharinicWill wait to see what other have to say19:45
dharinicand proceed accordingly19:45
hemanthmI don't have a strong opinion yet.19:54
hemanthmMaking partial image downloads depend on cache seems like an implementation constraint to me.19:55
hemanthmIf I want cache, I get partial image downloads too.19:55
hemanthmIf I just want to partial image downloads, I must enable cache.19:55
hemanthmWe can add config to isolate them.19:57
hemanthmBut, like I said, we seem to be placing an artificial constraint.19:57
dharinicTo still support partial reqs for certain stores alone without cache?19:58
hemanthmIf I have to take a side now, I'll probably go with 206 first and then 20019:59
hemanthmbut I haven't made up my mind yet19:59
dharinicI am not fixed on one solution now too. Need to think more and decide what is best19:59
hemanthmoops, 200 first and then 20620:00
hemanthmyeah, let's think a bit more.20:00
dharinicokay20:00
rosmaitathat's why we have specs!  this is a good discussion20:16
*** knangia has quit IRC20:31
*** smatzek has quit IRC20:33
*** cmart has quit IRC20:34
dharinicrosmaita: hemanthm: This was the patch to enable experimental multi node grenade for glance and it was merged. https://review.openstack.org/#/c/414326/20:37
dharinicHowever https://review.openstack.org/#/c/426428/ has to actually merge to make it "multi-node". Cos glance services were not enabled on the sub (second) node by default.20:38
rosmaitayeah, what's changed since february is that now only v2 runs in devstack by default, so i think this should be ok now20:41
dharinicWe need to merge the second one, to have g-api on the second node20:42
dharinicfor the gate job20:42
dharinics/we/they :D20:42
rosmaitawell, it's a non-voting job, so what the heck20:42
dharinicWas just discussing w.r.t rolling upgrades priority20:43
rosmaitaok, i +1d it, will follow up tomorrow if an infra core doesn't see it20:44
*** cmart has joined #openstack-glance20:51
*** pcaruana has quit IRC21:15
*** catintheroof has quit IRC21:25
*** cmart has quit IRC21:25
*** cmart has joined #openstack-glance21:28
hemanthmdharinic: will look at it21:31
dharinicThanks hemanthm21:31
*** lucasxu has quit IRC21:40
*** Sukhdev has joined #openstack-glance21:41
openstackgerritCyril Roelandt proposed openstack/glance_store master: Implement update_capabilities for the filesystem store  https://review.openstack.org/45545421:42
*** smatzek has joined #openstack-glance22:02
*** smatzek has quit IRC22:06
*** hoonetorg has quit IRC22:16
*** Elaine_wu has quit IRC22:23
*** Elaine_wu has joined #openstack-glance22:23
*** knangia has joined #openstack-glance22:24
*** catintheroof has joined #openstack-glance22:27
*** hoonetorg has joined #openstack-glance22:39
*** dharinic has quit IRC23:15
*** dharinic has joined #openstack-glance23:40

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