Skip to content

Commit e0427fa

Browse files
committed
bugfix: fix stats cmd to work w/ newer server versions
1 parent 75dc6dc commit e0427fa

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

src/com/danga/MemCached/MemCachedClient.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ else if ( NOTFOUND.equals( line ) ) {
476476
}
477477
else {
478478
log.error( "++++ error deleting key: " + key );
479-
log.error( line );
479+
log.error( "++++ server response: " + line );
480480
}
481481
}
482482
catch ( IOException e ) {
@@ -811,10 +811,8 @@ private boolean set( String cmdname, String key, Object value, Date expiry, Inte
811811

812812
// now write the data to the cache server
813813
try {
814-
String cmd = cmdname + " " + key + " " + flags + " "
815-
+ expiry.getTime() / 1000 + " " + val.length;
814+
String cmd = String.format( "%s %s %d %d %d\r\n", cmdname, key, flags, (expiry.getTime() / 1000), val.length );
816815
sock.write( cmd.getBytes() );
817-
sock.write( "\r\n".getBytes() );
818816
sock.write( val );
819817
sock.write( "\r\n".getBytes() );
820818
sock.flush();
@@ -834,7 +832,7 @@ else if ( NOTSTORED.equals( line ) ) {
834832
}
835833
else {
836834
log.error( "++++ error storing data in cache for key: " + key + " -- length: " + val.length );
837-
log.error( line );
835+
log.error( "++++ server response: " + line );
838836
}
839837
}
840838
catch ( IOException e ) {
@@ -1129,7 +1127,7 @@ private long incrdecr( String cmdname, String key, long inc, Integer hashCode )
11291127
return -1;
11301128

11311129
try {
1132-
String cmd = cmdname + " " + key + " " + inc + "\r\n";
1130+
String cmd = String.format( "%s %s %d\r\n", cmdname, key, inc );
11331131
log.debug( "++++ memcache incr/decr command: " + cmd );
11341132

11351133
sock.write( cmd.getBytes() );
@@ -1158,7 +1156,8 @@ else if ( NOTFOUND.equals( line ) ) {
11581156
log.info( "++++ key not found to incr/decr for key: " + key );
11591157
}
11601158
else {
1161-
log.error( "error incr/decr key: " + key );
1159+
log.error( "++++ error incr/decr key: " + key );
1160+
log.error( "++++ server response: " + line );
11621161
}
11631162
}
11641163
catch ( IOException e ) {
@@ -1264,8 +1263,8 @@ public Object get( String key, Integer hashCode, boolean asString ) {
12641263
return null;
12651264

12661265
try {
1267-
String cmd = "get " + key + "\r\n";
1268-
log.debug("++++ memcache get command: " + cmd);
1266+
String cmd = String.format( "get %s\r\n", key );
1267+
log.debug( "++++ memcache get command: " + cmd );
12691268

12701269
sock.write( cmd.getBytes() );
12711270
sock.flush();
@@ -1782,8 +1781,8 @@ public Map statsSlabs( String[] servers ) {
17821781
* @param slabNumber the item number of the cache dump
17831782
* @return Stats map
17841783
*/
1785-
public Map statsCacheDump( int slabNumber ) {
1786-
return statsCacheDump( null, slabNumber );
1784+
public Map statsCacheDump( int slabNumber, int limit ) {
1785+
return statsCacheDump( null, slabNumber, limit );
17871786
}
17881787

17891788
/**
@@ -1797,8 +1796,8 @@ public Map statsCacheDump( int slabNumber ) {
17971796
* @param slabNumber the item number of the cache dump
17981797
* @return Stats map
17991798
*/
1800-
public Map statsCacheDump( String[] servers, int slabNumber ) {
1801-
return stats( servers, "stats cachedump " + String.valueOf( slabNumber ) + "\r\n", ITEM );
1799+
public Map statsCacheDump( String[] servers, int slabNumber, int limit ) {
1800+
return stats( servers, String.format( "stats cachedump %d %d\r\n", slabNumber, limit ), ITEM );
18021801
}
18031802

18041803
private Map stats( String[] servers, String command, String lineStart ) {
@@ -1869,6 +1868,11 @@ else if ( END.equals( line ) ) {
18691868
log.debug( "++++ finished reading from cache server" );
18701869
break;
18711870
}
1871+
else if ( line.startsWith( ERROR ) || line.startsWith( CLIENT_ERROR ) || line.startsWith( SERVER_ERROR ) ) {
1872+
log.error( "++++ failed to query stats" );
1873+
log.error( "++++ server response: " + line );
1874+
break;
1875+
}
18721876

18731877
statsMaps.put( servers[i], stats );
18741878
}

0 commit comments

Comments
 (0)