[ https://issues.apache.org/jira/browse/HBASE-15430?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15192584#comment-15192584 ]
Matteo Bertozzi commented on HBASE-15430: ----------------------------------------- that's a good point. It wasn't particularly slow on my machine ~5sec but yeah it may be faster. I think TEST_UTIL.createLocalHRegion() is writing on fs anyway, less than the SnapshotMock because with the createLocalHRegion we end up with a snapshot of empty regions. It will be nice to exercise the normal write path as SnapshotMock does. An InMemoryFilesystem for testing will do the trick. but I don't think we have one, so that needs to be added (and it will probably be useful in many other places). any other alternatives? even changes to the SnapshotManifest class to allow testing without writing as much are welcome. if no other option we can do the Manifest manually. the createLocalHRegion() is not needed since that is used only for the HRegionInfo, which can be create alone. and then use ProtobufUtil toTableName() for tableName conversion. > Failed taking snapshot - Manifest proto-message too large > --------------------------------------------------------- > > Key: HBASE-15430 > URL: https://issues.apache.org/jira/browse/HBASE-15430 > Project: HBase > Issue Type: Bug > Components: snapshots > Affects Versions: 0.98.11 > Reporter: JunHo Cho > Assignee: JunHo Cho > Priority: Critical > Fix For: 0.98.18 > > Attachments: HBASE-15430-v4.patch, hbase-15430-v1.patch, > hbase-15430-v2.patch, hbase-15430-v3.branch.0.98.patch, hbase-15430.patch > > > the size of a protobuf message is 64MB (default). but the size of snapshot > meta is over 64MB. > Caused by: com.google.protobuf.InvalidProtocolBufferException via Failed > taking snapshot { ss=snapshot_xxx table=xxx type=FLUSH } due to > exception:Protocol message was too large. May be malicious. Use > CodedInputStream.setSizeLimit() to increase the size > limit.:com.google.protobuf.InvalidProtocolBufferException: Protocol message > was too large. May be malicious. Use CodedInputStream.setSizeLimit() to > increase the size limit. > at > org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher.rethrowException(ForeignExceptionDispatcher.java:83) > at > org.apache.hadoop.hbase.master.snapshot.TakeSnapshotHandler.rethrowExceptionIfFailed(TakeSnapshotHandler.java:307) > at > org.apache.hadoop.hbase.master.snapshot.SnapshotManager.isSnapshotDone(SnapshotManager.java:341) > ... 10 more > Caused by: com.google.protobuf.InvalidProtocolBufferException: Protocol > message was too large. May be malicious. Use > CodedInputStream.setSizeLimit() to increase the size limit. > at > com.google.protobuf.InvalidProtocolBufferException.sizeLimitExceeded(InvalidProtocolBufferException.java:110) > at > com.google.protobuf.CodedInputStream.refillBuffer(CodedInputStream.java:755) > at > com.google.protobuf.CodedInputStream.readRawBytes(CodedInputStream.java:811) > at > com.google.protobuf.CodedInputStream.readBytes(CodedInputStream.java:329) > at > org.apache.hadoop.hbase.protobuf.generated.HBaseProtos$RegionInfo.<init>(HBaseProtos.java:3767) > at > org.apache.hadoop.hbase.protobuf.generated.HBaseProtos$RegionInfo.<init>(HBaseProtos.java:3699) > at > org.apache.hadoop.hbase.protobuf.generated.HBaseProtos$RegionInfo$1.parsePartialFrom(HBaseProtos.java:3815) > at > org.apache.hadoop.hbase.protobuf.generated.HBaseProtos$RegionInfo$1.parsePartialFrom(HBaseProtos.java:3810) > at > com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:309) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotRegionManifest.<init>(SnapshotProtos.java:1152) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotRegionManifest.<init>(SnapshotProtos.java:1094) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotRegionManifest$1.parsePartialFrom(SnapshotProtos.java:1201) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotRegionManifest$1.parsePartialFrom(SnapshotProtos.java:1196) > at > com.google.protobuf.CodedInputStream.readMessage(CodedInputStream.java:309) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotDataManifest.<init>(SnapshotProtos.java:3858) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotDataManifest.<init>(SnapshotProtos.java:3792) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotDataManifest$1.parsePartialFrom(SnapshotProtos.java:3894) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotDataManifest$1.parsePartialFrom(SnapshotProtos.java:3889) > at > com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:200) > at > com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:217) > at > com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:223) > at > com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:49) > at > org.apache.hadoop.hbase.protobuf.generated.SnapshotProtos$SnapshotDataManifest.parseFrom(SnapshotProtos.java:4094) > at > org.apache.hadoop.hbase.snapshot.SnapshotManifest.readDataManifest(SnapshotManifest.java:433) > at > org.apache.hadoop.hbase.snapshot.SnapshotManifest.load(SnapshotManifest.java:273) > at > org.apache.hadoop.hbase.snapshot.SnapshotManifest.open(SnapshotManifest.java:119) > at > org.apache.hadoop.hbase.master.snapshot.MasterSnapshotVerifier.verifySnapshot(MasterSnapshotVerifier.java:106 -- This message was sent by Atlassian JIRA (v6.3.4#6332)