MoreFreeze

Results 16 comments of MoreFreeze

I actually add docker-machine ip to `/etc/hosts` as `dockerhost` and use it in `hbase-site.xml`

@YueLinHo Sorry, I thought you have edit the picture and merge PR. It's my mistake.

I absolutely perfer new image but also respect Scott original naming. 1. New naming is more clear for readers 1. Scott is familiar with original naming without doubt I'm appreciate...

> 感谢提问 > > 正常情况下,Path 是由 PathOri 经过规范化(normalize)得来的,但 MOSN 中允许上层 filter 修改 Path 的内容,例如在一些路由场景中,可能会进行 path-rewrite,把请求的原始 path 修改为其它值。这个测试用例就反映了这种情况,因此出现 Path 和 PathOri 不一致的现象。 > > MOSN 处理请求 Path 的原则是:如果用户修改了Path,那么使用修改后的Path;如果没有修改,则原封不动的使用原始 Path > >...

@antJack 我又更新了上面的答复,现在看来判断用户是否修改过path要考虑Path本身是归一后的情况。我现在对mosn path rewrite不是很熟,也没想出比较好的修改办法,可以一起看看

我觉得也是fasthttp 先unescape了,然后再remove dup slash的问题。那这里mosn是不是先兼容下,unescapedPath用fasthttp.URI{}.SetPath 得到的结果和path进行比较?没问题的话我提个mr

另外发现一个问题 https://github.com/mosn/mosn/blob/master/pkg/stream/http/stream_test.go#L69 这里的三个值都不可能不带 `/` 吧,因为是fasthttp.URI取的,首位一定是`/`,我刚才修改后跑单测发现的

我回过头来想了下,感觉可能是mosn这边判断有点不妥。这个path 应该是从fasthttp.Path + filter(如果有) 修改后得到的,那在判断是否被修改时应该还用fasthttp.Path,不应该用原生包 url.PathUnescape,因为无法知道fasthttp 在里面做了什么。 再举个例子,在现在版本下,PathUnescape("/.././") 得到的还是"/.././" 但path 应该只是 "/",这样也会导致res得不到想要的结果(期望原样 "/.././") 所以是不是把原来的if直接替换成path == fasthttpPath 就行了 (个人感觉让fasthttp 来兼容原来url的unescape挺难的,因为怎么做是他的自由)

> 直接用 fasthttp 的话,是不是处理不了这种情况: pathOri = "/%2F%2F%2Fsample",然后用户把 path 改成了 "/sample" > > 现在官方 url 包跟 fasthttp 包似乎都有 bad case,得看看怎么处理最好。MR 当前状态对既有代码影响小,就先合了 这个你期望是说用户 改了path,所以要用path吗? 现在mosn问题是没有(或者做不到)记录是否真的rewrite,按现在尝试比较的方法来看,肯定会有精心构造的bad case

> @zxmrlc 我fork了cache项目,修复了这个问题,你可以直接 > `https://github.com/axengine/cache` 尝试了你的项目github.com/axengine/cache v1.2.0,写了一段测试代码类似 ```go store := persistence.NewInMemoryStore(time.Second * 2) apiR.GET("/xxx", cache.CachePage(store, time.Second*2, GetSth)) ``` 然后用`for i in {1..20}; do echo $i; curl www.abc.com/xxx > $i &...