bluegitter / xmemcached

Automatically exported from code.google.com/p/xmemcached
0 stars 0 forks source link

xmemcached链接Tokyo Tyrant时不能取到非String类型的对象值 #68

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
tyrant自动忽略了flags参数
复杂对象缓存时是经过压缩的,同时flags参数变为1,再取出��
�tyrant忽略了flags参数。

Original issue reported on code.google.com by yanwt1980@gmail.com on 27 Nov 2009 at 3:55

GoogleCodeExporter commented 9 years ago
这是tt特性决定的,两个方案:
1、使用KestrelCommandFactory,在每个value之前自动加上4个字节的f
lag,对应用来说是透明的,但是仅支持
set,get

2、自己实现Transcoder,在value前加4个字节flag.

Original comment by killme2...@gmail.com on 27 Nov 2009 at 3:59

GoogleCodeExporter commented 9 years ago
1.2.1版本将添加一个TokyoTyrantTranscoder,在value前加4个字节flag��
�对应用来说处理是透明的

Original comment by killme2...@gmail.com on 1 Dec 2009 at 7:31

GoogleCodeExporter commented 9 years ago
1.2.1已经发布。

Original comment by killme2...@gmail.com on 4 Dec 2009 at 4:45

GoogleCodeExporter commented 9 years ago
更新速度很快嘛,前两天刚自己写了一个。

Original comment by yanwt1980@gmail.com on 4 Dec 2009 at 5:10

GoogleCodeExporter commented 9 years ago
刚测试了一下,在大并发下有问题
java.io.StreamCorruptedException: invalid stream header: 878CE4BD
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783) 
[na:1.6.0_16]
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280) [na:1.6.0_16]
    at net.rubyeye.xmemcached.transcoders.BaseSerializingTranscoder.deserialize
(BaseSerializingTranscoder.java:87) [xmemcached-1.2.1.jar:na]
    at net.rubyeye.xmemcached.transcoders.SerializingTranscoder.decode
(SerializingTranscoder.java:87) [xmemcached-1.2.1.jar:na]
    at net.rubyeye.xmemcached.transcoders.TokyoTyrantTranscoder.decode
(TokyoTyrantTranscoder.java:55) [xmemcached-1.2.1.jar:na]
    at net.rubyeye.xmemcached.XMemcachedClient.fetch0(XMemcachedClient.java:470) 
[xmemcached-1.2.1.jar:na]
    at net.rubyeye.xmemcached.XMemcachedClient.get0(XMemcachedClient.java:804) 
[xmemcached-1.2.1.jar:na]
    at net.rubyeye.xmemcached.XMemcachedClient.get(XMemcachedClient.java:762) 
[xmemcached-1.2.1.jar:na]
    at net.rubyeye.xmemcached.XMemcachedClient.get(XMemcachedClient.java:773) 
[xmemcached-1.2.1.jar:na]
    at net.rubyeye.xmemcached.XMemcachedClient.get(XMemcachedClient.java:795) 
[xmemcached-1.2.1.jar:na]

Original comment by yanwt1980@gmail.com on 4 Dec 2009 at 5:58

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago
将你的测试代码发过来看看,我测试没有问题。

Original comment by killme2...@gmail.com on 4 Dec 2009 at 6:49

GoogleCodeExporter commented 9 years ago
[deleted comment]
GoogleCodeExporter commented 9 years ago

Original comment by killme2...@gmail.com on 4 Dec 2009 at 9:57

GoogleCodeExporter commented 9 years ago
我在大并发的时候也出现了这个问题。。。 怎么办那
[ERROR] 2010-03-10 10:08:54 
[net.rubyeye.xmemcached.transcoders.BaseSerializingTranscoder:93] - Caught 
IOException decoding 12700 bytes of data
java.io.StreamCorruptedException: invalid stream header
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:753)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:268)

Original comment by litianyi...@gmail.com on 10 Mar 2010 at 2:51

GoogleCodeExporter commented 9 years ago
能不能将你的测试代码发过来看看。

Original comment by killme2...@gmail.com on 12 Mar 2010 at 2:22

GoogleCodeExporter commented 9 years ago
已经经修复。
这个问题的发生是由于xmemcached的优化策略引起的,在多个相�
��key连续get的情况下,xmc内部
会优化成一个get操作,那么对于tt来说,这个优化会引起多次
decode同一个CachedData,每次
Decode都会改变CachedData中的数据,导致数据不正确,现已修正�
��并在1.2.4版本中发布。

1.2.4已经发布。

Original comment by killme2...@gmail.com on 15 Mar 2010 at 5:46