HBASE-2905 NPE when inserting mass data via REST interface
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@983699 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
af09891840
commit
a95f1ed4f6
|
@ -472,6 +472,8 @@ Release 0.21.0 - Unreleased
|
|||
HBASE-2823 Entire Row Deletes not stored in Row+Col Bloom
|
||||
(Alexander Georgiev via Stack)
|
||||
HBASE-2897 RowResultGenerator should handle NoSuchColumnFamilyException
|
||||
HBASE-2905 NPE when inserting mass data via REST interface (Sandy Yin via
|
||||
Andrew Purtell)
|
||||
|
||||
IMPROVEMENTS
|
||||
HBASE-1760 Cleanup TODOs in HTable
|
||||
|
|
|
@ -24,8 +24,6 @@ import java.io.IOException;
|
|||
import java.io.OutputStream;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
|
@ -47,7 +45,7 @@ import org.apache.hadoop.hbase.rest.Constants;
|
|||
public class PlainTextMessageBodyProducer
|
||||
implements MessageBodyWriter<Object> {
|
||||
|
||||
private Map<Object, byte[]> buffer = new WeakHashMap<Object, byte[]>();
|
||||
private ThreadLocal<byte[]> buffer = new ThreadLocal<byte[]>();
|
||||
|
||||
@Override
|
||||
public boolean isWriteable(Class<?> arg0, Type arg1, Annotation[] arg2,
|
||||
|
@ -58,9 +56,9 @@ public class PlainTextMessageBodyProducer
|
|||
@Override
|
||||
public long getSize(Object object, Class<?> type, Type genericType,
|
||||
Annotation[] annotations, MediaType mediaType) {
|
||||
byte[] bytes = object.toString().getBytes();
|
||||
buffer.put(object, bytes);
|
||||
return bytes.length;
|
||||
byte[] bytes = object.toString().getBytes();
|
||||
buffer.set(bytes);
|
||||
return bytes.length;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -68,6 +66,8 @@ public class PlainTextMessageBodyProducer
|
|||
Annotation[] annotations, MediaType mediaType,
|
||||
MultivaluedMap<String, Object> httpHeaders, OutputStream outStream)
|
||||
throws IOException, WebApplicationException {
|
||||
outStream.write(buffer.remove(object));
|
||||
byte[] bytes = buffer.get();
|
||||
outStream.write(bytes);
|
||||
buffer.remove();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,8 +25,6 @@ import java.io.IOException;
|
|||
import java.io.OutputStream;
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.WebApplicationException;
|
||||
|
@ -49,7 +47,7 @@ import org.apache.hadoop.hbase.rest.ProtobufMessageHandler;
|
|||
public class ProtobufMessageBodyProducer
|
||||
implements MessageBodyWriter<ProtobufMessageHandler> {
|
||||
|
||||
private Map<Object, byte[]> buffer = new WeakHashMap<Object, byte[]>();
|
||||
private ThreadLocal<byte[]> buffer = new ThreadLocal<byte[]>();
|
||||
|
||||
@Override
|
||||
public boolean isWriteable(Class<?> type, Type genericType,
|
||||
|
@ -67,7 +65,7 @@ public class ProtobufMessageBodyProducer
|
|||
return -1;
|
||||
}
|
||||
byte[] bytes = baos.toByteArray();
|
||||
buffer.put(m, bytes);
|
||||
buffer.set(bytes);
|
||||
return bytes.length;
|
||||
}
|
||||
|
||||
|
@ -75,6 +73,8 @@ public class ProtobufMessageBodyProducer
|
|||
Annotation[] annotations, MediaType mediaType,
|
||||
MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream)
|
||||
throws IOException, WebApplicationException {
|
||||
entityStream.write(buffer.remove(m));
|
||||
byte[] bytes = buffer.get();
|
||||
entityStream.write(bytes);
|
||||
buffer.remove();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue