[ 
https://issues.apache.org/jira/browse/IMPALA-11401?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Quanlong Huang resolved IMPALA-11401.
-------------------------------------
    Fix Version/s: Impala 4.2.0
       Resolution: Fixed

> Catalogd should log the table names causing OOM on array limit
> --------------------------------------------------------------
>
>                 Key: IMPALA-11401
>                 URL: https://issues.apache.org/jira/browse/IMPALA-11401
>             Project: IMPALA
>          Issue Type: Improvement
>          Components: Catalog
>            Reporter: Quanlong Huang
>            Assignee: Quanlong Huang
>            Priority: Critical
>             Fix For: Impala 4.2.0
>
>
> Catalogd could throw OOM errors when serializing thrift objects larger than 
> the 2GB byte array limit, e.g. in serializing responses of execDdl, 
> getPartialCatalogObject requests. Such kind of OOM errors are table-level 
> failures. They don't mean the server is running out of memory. Catalogd is 
> still able to process other RPC requests.
> To improve the supportability of catalogd, it should log the table name and 
> some details of the request when throwing such OOM errors. Currently the log 
> contains no details:
> {noformat}
> I0617 04:00:24.341722 534809 jni-util.cc:288] java.lang.OutOfMemoryError
>         at 
> java.io.ByteArrayOutputStream.hugeCapacity(ByteArrayOutputStream.java:123)
>         at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:117)
>         at 
> java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:93)
>         at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:153)
>         at 
> org.apache.thrift.transport.TIOStreamTransport.write(TIOStreamTransport.java:145)
>         at 
> org.apache.thrift.protocol.TBinaryProtocol.writeString(TBinaryProtocol.java:202)
>         at 
> org.apache.hadoop.hive.metastore.api.FieldSchema$FieldSchemaStandardScheme.write(FieldSchema.java:531)
>         at 
> org.apache.hadoop.hive.metastore.api.FieldSchema$FieldSchemaStandardScheme.write(FieldSchema.java:480)
>         at 
> org.apache.hadoop.hive.metastore.api.FieldSchema.write(FieldSchema.java:418)
>         at 
> org.apache.hadoop.hive.metastore.api.StorageDescriptor$StorageDescriptorStandardScheme.write(StorageDescriptor.java:1451)
>         at 
> org.apache.hadoop.hive.metastore.api.StorageDescriptor$StorageDescriptorStandardScheme.write(StorageDescriptor.java:1278)
>         at 
> org.apache.hadoop.hive.metastore.api.StorageDescriptor.write(StorageDescriptor.java:1144)
>         at 
> org.apache.hadoop.hive.metastore.api.Partition$PartitionStandardScheme.write(Partition.java:1414)
>         at 
> org.apache.hadoop.hive.metastore.api.Partition$PartitionStandardScheme.write(Partition.java:1238)
>         at 
> org.apache.hadoop.hive.metastore.api.Partition.write(Partition.java:1099)
>         at 
> org.apache.impala.thrift.TPartialPartitionInfo$TPartialPartitionInfoStandardScheme.write(TPartialPartitionInfo.java:862)
>         at 
> org.apache.impala.thrift.TPartialPartitionInfo$TPartialPartitionInfoStandardScheme.write(TPartialPartitionInfo.java:759)
>         at 
> org.apache.impala.thrift.TPartialPartitionInfo.write(TPartialPartitionInfo.java:665)
>         at 
> org.apache.impala.thrift.TPartialTableInfo$TPartialTableInfoStandardScheme.write(TPartialTableInfo.java:914)
>         at 
> org.apache.impala.thrift.TPartialTableInfo$TPartialTableInfoStandardScheme.write(TPartialTableInfo.java:790)
>         at 
> org.apache.impala.thrift.TPartialTableInfo.write(TPartialTableInfo.java:688)
>         at 
> org.apache.impala.thrift.TGetPartialCatalogObjectResponse$TGetPartialCatalogObjectResponseStandardScheme.write(TGetPartialCatalogObjectResponse.java:977)
>         at 
> org.apache.impala.thrift.TGetPartialCatalogObjectResponse$TGetPartialCatalogObjectResponseStandardScheme.write(TGetPartialCatalogObjectResponse.java:857)
>         at 
> org.apache.impala.thrift.TGetPartialCatalogObjectResponse.write(TGetPartialCatalogObjectResponse.java:739)
>         at org.apache.thrift.TSerializer.serialize(TSerializer.java:79)
>         at 
> org.apache.impala.service.JniCatalog.getPartialCatalogObject(JniCatalog.java:254)
> I0617 04:00:24.341833 534809 status.cc:129] OutOfMemoryError: null
>     @           0xc1d7f3
>     @          0x13a8679
>     @           0xc05bf3
>     @           0xbf3433
>     @           0xd133c4
>     @           0xd07d33
>     @           0xd1f3a2
>     @          0x10d214a
>     @          0x10c5702
>     @          0x144de71
>     @          0x144f2ea
>     @          0x1c9f8d1
>     @     0x7ff6aca68ea4
>     @     0x7ff6a9540b0c
> E0617 04:00:24.341909 534809 catalog-server.cc:209] OutOfMemoryError: null
> {noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to