sijie closed pull request #1911: OffloadIndex should have metadata len
immediately before metadata
URL: https://github.com/apache/incubator-pulsar/pull/1911
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/s3offload/impl/OffloadIndexBlockImpl.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/s3offload/impl/OffloadIndexBlockImpl.java
index d0e7239b42..e910150c79 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/s3offload/impl/OffloadIndexBlockImpl.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/s3offload/impl/OffloadIndexBlockImpl.java
@@ -167,8 +167,8 @@ public long getDataBlockHeaderLength() {
/**
* Get the content of the index block as InputStream.
* Read out in format:
- * | index_magic_header | index_block_len | index_entry_count |
- * |segment_metadata_len | segment metadata | index entries |
+ * | index_magic_header | index_block_len | data_object_len |
data_header_len |
+ * | index_entry_count | segment_metadata_len | segment metadata |
index entries... |
*/
@Override
public OffloadIndexBlock.IndexInputStream toStream() throws IOException {
@@ -180,8 +180,8 @@ public long getDataBlockHeaderLength() {
+ 4 /* index block length */
+ 8 /* data object length */
+ 8 /* data header length */
- + 4 /* segment metadata length */
+ 4 /* index entry count */
+ + 4 /* segment metadata length */
+ segmentMetadataLength
+ indexEntryCount * (8 + 4 + 8); /* messageEntryId + blockPartId +
blockOffset */
@@ -191,9 +191,8 @@ public long getDataBlockHeaderLength() {
.writeInt(indexBlockLength)
.writeLong(dataObjectLength)
.writeLong(dataHeaderLength)
- .writeInt(segmentMetadataLength)
- .writeInt(indexEntryCount);
-
+ .writeInt(indexEntryCount)
+ .writeInt(segmentMetadataLength);
// write metadata
out.writeBytes(ledgerMetadataByte);
@@ -331,8 +330,8 @@ private OffloadIndexBlock fromStream(InputStream stream)
throws IOException {
int indexBlockLength = dis.readInt();
this.dataObjectLength = dis.readLong();
this.dataHeaderLength = dis.readLong();
- int segmentMetadataLength = dis.readInt();
int indexEntryCount = dis.readInt();
+ int segmentMetadataLength = dis.readInt();
byte[] metadataBytes = new byte[segmentMetadataLength];
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/s3offload/impl/OffloadIndexTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/s3offload/impl/OffloadIndexTest.java
index cff404582e..445ba011e3 100644
---
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/s3offload/impl/OffloadIndexTest.java
+++
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/s3offload/impl/OffloadIndexTest.java
@@ -165,8 +165,8 @@ public void offloadIndexBlockImplTest() throws Exception {
int indexBlockLength = wrapper.readInt();
long dataObjectLength = wrapper.readLong();
long dataHeaderLength = wrapper.readLong();
- int segmentMetadataLength = wrapper.readInt();
int indexEntryCount = wrapper.readInt();
+ int segmentMetadataLength = wrapper.readInt();
// verify counter
assertEquals(magic, OffloadIndexBlockImpl.getIndexMagicWord());
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services