[jira] [Commented] (KUDU-3201) Support gzipped HMS notifications (GzipJSONMessageEncoder)

2020-10-09 Thread ASF subversion and git services (Jira)


[ 
https://issues.apache.org/jira/browse/KUDU-3201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17211417#comment-17211417
 ] 

ASF subversion and git services commented on KUDU-3201:
---

Commit 6b20440f4c51a6b69c1382db51139bf8d3467b05 in kudu's branch 
refs/heads/master from Grant Henke
[ https://gitbox.apache.org/repos/asf?p=kudu.git;h=6b20440 ]

KUDU-3201: [hms] Support gzipped HMS notifications (GzipJSONMessageEncoder)

This patch adds support for HMS notification messages encoded
via the GzipJSONMessageEncoder that was added in
HIVE-20679. It does this by decoding the base64 encoding
and decompressing the messages sent with the `gzip(json-2.0)`
format.

Because HIVE-20679 is only in Hive 4 which is unreleased,
I created a static encoded message to test the gzip functionality.
I also  manually tested this functionality on a real cluster that has
HIVE-20679.

While testing this patch I found and fixed a bug in our zlib.cc
Uncompress method. Without the fix zlib would
return a BUF_ERROR when the decompressed data fits
in the output buffer on the first call to `inflate`.

For reference I used the following post to help understand
the expected usage of `inflate`:
https://zlib.net/zlib_how.html

Change-Id: I0f94e2446255e1fafb1dac9bf9ce23b81d6c0960
Reviewed-on: http://gerrit.cloudera.org:8080/16565
Tested-by: Grant Henke 
Reviewed-by: Andrew Wong 


> Support gzipped HMS notifications (GzipJSONMessageEncoder)
> --
>
> Key: KUDU-3201
> URL: https://issues.apache.org/jira/browse/KUDU-3201
> Project: Kudu
>  Issue Type: Improvement
>  Components: hms
>Affects Versions: 1.13.0
>Reporter: Grant Henke
>Assignee: Grant Henke
>Priority: Major
>
> In HIVE-20679 a new message encoder was added to Hive that gzips and based64 
> encodes notification messages. In HIVE-21307 the default encoder was changed 
> to use the gzip encoder, GzipJSONMessageEncoder.
> Though Hive 4 is not released, failures as a result of this new message 
> format were reported in IMPALA-8751. We should add support for the gzip 
> format to prevent future HMS sync issues.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Resolved] (KUDU-3201) Support gzipped HMS notifications (GzipJSONMessageEncoder)

2020-10-09 Thread Grant Henke (Jira)


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

Grant Henke resolved KUDU-3201.
---
Fix Version/s: 1.14.0
   Resolution: Fixed

> Support gzipped HMS notifications (GzipJSONMessageEncoder)
> --
>
> Key: KUDU-3201
> URL: https://issues.apache.org/jira/browse/KUDU-3201
> Project: Kudu
>  Issue Type: Improvement
>  Components: hms
>Affects Versions: 1.13.0
>Reporter: Grant Henke
>Assignee: Grant Henke
>Priority: Major
> Fix For: 1.14.0
>
>
> In HIVE-20679 a new message encoder was added to Hive that gzips and based64 
> encodes notification messages. In HIVE-21307 the default encoder was changed 
> to use the gzip encoder, GzipJSONMessageEncoder.
> Though Hive 4 is not released, failures as a result of this new message 
> format were reported in IMPALA-8751. We should add support for the gzip 
> format to prevent future HMS sync issues.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Comment Edited] (KUDU-3197) Tablet keeps all history schemas in memory may result in high memory consumption

2020-10-09 Thread Andrew Wong (Jira)


[ 
https://issues.apache.org/jira/browse/KUDU-3197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17211340#comment-17211340
 ] 

Andrew Wong edited comment on KUDU-3197 at 10/9/20, 8:16 PM:
-

You're right in that the scanner creates a schema to represent its projection. 
However, the underlying iterators may take references to the current schema 
while iterating, the tablet service might take references while preparing to 
scan, etc. While most if not all of these accesses are short-lived, we need to 
be careful not to destruct the schemas while these references still exist.

Grepping around to audit current usages (with some false positives for copies 
and log messages):
{code:java}
~/Repositories/kudu/src/kudu > grep -r "meta.*[^_]schema()" .
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet_metadata.cc:if (!(*metadata)->schema().Equals(schema)) {
./tablet/tablet_metadata.cc:"match expected schema ($1)", 
(*metadata)->schema().ToString(),
./tablet/diff_scan-test.cc:  SchemaBuilder 
builder(tablet->metadata()->schema());
./tablet/tablet_replica-test.cc:  
ASSERT_OK(SchemaToPB(SchemaBuilder(tablet()->metadata()->schema()).Build(), 
&orig_schema_pb));
./tablet/tablet_replica-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet_replica-test.cc:  
ASSERT_OK(SchemaToPB(SchemaBuilder(tablet()->metadata()->schema()).Build(), 
&orig_schema_pb));
./tablet/tablet_replica-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet.cc:  : key_schema_(metadata->schema().CreateKeyProjection()),
./tablet/tablet.cc:  metadata_->SetSchema(*op_state->schema(), 
op_state->schema_version());
./tablet/tablet.cc:  RollingDiskRowSetWriter drsw(metadata_.get(), 
merge->schema(), DefaultBloomSizing(),
./tablet/rowset_metadata.h:return tablet_metadata_->schema();
./tablet/tablet.h:return &metadata_->schema();
./tablet/all_types-scan-correctness-test.cc:SchemaBuilder 
builder(tablet()->metadata()->schema());
./tools/kudu-tool-test.cc:  .PartitionDebugString(meta->partition(), 
meta->schema());
./tools/kudu-tool-test.cc:  debug_str = meta->schema().ToString();
./tools/kudu-tool-test.cc:.PartitionDebugString(meta->partition(), 
meta->schema());
./tools/kudu-tool-test.cc:debug_str = meta->schema().ToString();
./tools/tool_action_local_replica.cc:const auto& col_idx = 
meta->schema().find_column_by_id(col_id);
./tools/tool_action_local_replica.cc:
meta->schema().column(col_idx).name() : "?");
./tools/tool_action_local_replica.cc:  Schema schema = meta->schema();
./tools/tool_action_local_replica.cc:  const Schema& schema = meta->schema();
./tools/tool_action_local_replica.cc:   
 meta->schema())
./tserver/tablet_service.cc:Schema tablet_schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  const auto& schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  
CHECK_OK(SchemaToPB(replica->tablet_metadata()->schema(),
./tserver/tablet_service.cc:  const auto& schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  Schema tablet_schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  const auto& schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  const Schema& tablet_schema = 
replica->tablet_metadata()->schema();
./tserver/scanners.cc:
spec().lower_bound_key()->Stringify(tablet_metadata->schema();
./tserver/scanners.cc:
spec().exclusive_upper_bound_key()->Stringify(tablet_metadata->schema();
./tserver/tserver_path_handlers.cc: 
tmeta->schema());
./tserver/tserver_path_handlers.cc:  const Schema& schema = tmeta->schema();
./master/sys_catalog.cc:  if (!metadata->schema().Equals(BuildTableSchema())) {
./master/sys_catalog.cc:return(Status::Corruption("Unexpected schema", 
metadata->schema().ToString()));
./client/scan_token-internal.cc:
RETURN_NOT_OK(SchemaFromPB(metadata.schema(), &schema));
./client/client-test.cc:Schema schema = 
tablet_replica->tablet()->metadata()->schema();
./client/client-test.cc:Schema schema = 
tablet_replica->tablet()->metadata()->schema();
./client/client-test.cc:Schema schema = 
tablet_replica->tablet()->metadata()->schema();
./client/client-test.cc:Schema schema = 
tablet_replica->tablet()->metada

[jira] [Commented] (KUDU-3197) Tablet keeps all history schemas in memory may result in high memory consumption

2020-10-09 Thread Andrew Wong (Jira)


[ 
https://issues.apache.org/jira/browse/KUDU-3197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17211340#comment-17211340
 ] 

Andrew Wong commented on KUDU-3197:
---

You're right in that the scanner creates a schema to represent its projection. 
However, the underlying iterators may take references to the current schema 
while iterating, the tablet service might take references while preparing to 
scan, etc. While most if not all of these accesses are short-lived, we need to 
be careful not to destruct the schemas while these references still exist.

Grepping around to audit current usages (with some false positives for copies 
and log messages):
{code:java}
~/Repositories/kudu/src/kudu > grep -r "meta.*[^_]schema()" .
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet-schema-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet_metadata.cc:if (!(*metadata)->schema().Equals(schema)) {
./tablet/tablet_metadata.cc:"match expected schema ($1)", 
(*metadata)->schema().ToString(),
./tablet/diff_scan-test.cc:  SchemaBuilder 
builder(tablet->metadata()->schema());
./tablet/tablet_replica-test.cc:  
ASSERT_OK(SchemaToPB(SchemaBuilder(tablet()->metadata()->schema()).Build(), 
&orig_schema_pb));
./tablet/tablet_replica-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet_replica-test.cc:  
ASSERT_OK(SchemaToPB(SchemaBuilder(tablet()->metadata()->schema()).Build(), 
&orig_schema_pb));
./tablet/tablet_replica-test.cc:  SchemaBuilder 
builder(tablet()->metadata()->schema());
./tablet/tablet.cc:  : key_schema_(metadata->schema().CreateKeyProjection()),
./tablet/tablet.cc:  metadata_->SetSchema(*op_state->schema(), 
op_state->schema_version());
./tablet/tablet.cc:  RollingDiskRowSetWriter drsw(metadata_.get(), 
merge->schema(), DefaultBloomSizing(),
./tablet/rowset_metadata.h:return tablet_metadata_->schema();
./tablet/tablet.h:return &metadata_->schema();
./tablet/all_types-scan-correctness-test.cc:SchemaBuilder 
builder(tablet()->metadata()->schema());
./tools/kudu-tool-test.cc:  .PartitionDebugString(meta->partition(), 
meta->schema());
./tools/kudu-tool-test.cc:  debug_str = meta->schema().ToString();
./tools/kudu-tool-test.cc:.PartitionDebugString(meta->partition(), 
meta->schema());
./tools/kudu-tool-test.cc:debug_str = meta->schema().ToString();
./tools/tool_action_local_replica.cc:const auto& col_idx = 
meta->schema().find_column_by_id(col_id);
./tools/tool_action_local_replica.cc:
meta->schema().column(col_idx).name() : "?");
./tools/tool_action_local_replica.cc:  Schema schema = meta->schema();
./tools/tool_action_local_replica.cc:  const Schema& schema = meta->schema();
./tools/tool_action_local_replica.cc:   
 meta->schema())
./tserver/tablet_service.cc:Schema tablet_schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  const auto& schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  
CHECK_OK(SchemaToPB(replica->tablet_metadata()->schema(),
./tserver/tablet_service.cc:  const auto& schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  Schema tablet_schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  const auto& schema = 
replica->tablet_metadata()->schema();
./tserver/tablet_service.cc:  const Schema& tablet_schema = 
replica->tablet_metadata()->schema();
./tserver/scanners.cc:
spec().lower_bound_key()->Stringify(tablet_metadata->schema();
./tserver/scanners.cc:
spec().exclusive_upper_bound_key()->Stringify(tablet_metadata->schema();
./tserver/tserver_path_handlers.cc: 
tmeta->schema());
./tserver/tserver_path_handlers.cc:  const Schema& schema = tmeta->schema();
./master/sys_catalog.cc:  if (!metadata->schema().Equals(BuildTableSchema())) {
./master/sys_catalog.cc:return(Status::Corruption("Unexpected schema", 
metadata->schema().ToString()));
./client/scan_token-internal.cc:
RETURN_NOT_OK(SchemaFromPB(metadata.schema(), &schema));
./client/client-test.cc:Schema schema = 
tablet_replica->tablet()->metadata()->schema();
./client/client-test.cc:Schema schema = 
tablet_replica->tablet()->metadata()->schema();
./client/client-test.cc:Schema schema = 
tablet_replica->tablet()->metadata()->schema();
./client/client-test.cc:Schema schema = 
tablet_replica->tablet()->metadata()->schema();
./client/client-test.cc:Schema 

[jira] [Resolved] (KUDU-3198) Unable to delete a full row from a table with 64 columns when using java client

2020-10-09 Thread Alexey Serbin (Jira)


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

Alexey Serbin resolved KUDU-3198.
-
Resolution: Fixed

Fixed with the patch mentioned in the prior comment.

Thank you [~zhangyifan27] for debugging and fixing the issue!

> Unable to delete a full row from a table with 64 columns when using java 
> client
> ---
>
> Key: KUDU-3198
> URL: https://issues.apache.org/jira/browse/KUDU-3198
> Project: Kudu
>  Issue Type: Bug
>  Components: java
>Affects Versions: 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.11.1, 1.13.0
>Reporter: YifanZhang
>Priority: Major
> Fix For: 1.14.0
>
>
> We recently got an error when deleted full rows from a table with 64 columns 
> using sparkSQL, however if we delete a column from the table, this error will 
> not appear. The error is:
> {code:java}
> Failed to write at least 1000 rows to Kudu; Sample errors: Not implemented: 
> Unknown row operation type (error 0){code}
> I tested this by deleting a full row from a table with 64 column using java 
> client 1.12.0/1.13.0, if the row is set NULL for some columns, I got an error:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, 
> server=d584b3407ea444519e91b32f2744b162, status=Invalid argument: DELETE 
> should not have a value for column: c63 STRING NULLABLE (error 0)
> {code}
> if the row is set values for all columns , I got an error like:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, server=null, 
> status=Corruption: Not enough data for column: c63 STRING NULLABLE (error 0)
> {code}
> I also tested this with tables with different number of columns. The weird 
> thing is I could delete full rows from a table with 8/16/32/63/65 columns,  
> but couldn't do this if the table has 64/128 columns.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (KUDU-3198) Unable to delete a full row from a table with 64 columns when using java client

2020-10-09 Thread Alexey Serbin (Jira)


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

Alexey Serbin updated KUDU-3198:

Fix Version/s: 1.14.0

> Unable to delete a full row from a table with 64 columns when using java 
> client
> ---
>
> Key: KUDU-3198
> URL: https://issues.apache.org/jira/browse/KUDU-3198
> Project: Kudu
>  Issue Type: Bug
>  Components: java
>Affects Versions: 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.11.1, 1.13.0
>Reporter: YifanZhang
>Priority: Major
> Fix For: 1.14.0
>
>
> We recently got an error when deleted full rows from a table with 64 columns 
> using sparkSQL, however if we delete a column from the table, this error will 
> not appear. The error is:
> {code:java}
> Failed to write at least 1000 rows to Kudu; Sample errors: Not implemented: 
> Unknown row operation type (error 0){code}
> I tested this by deleting a full row from a table with 64 column using java 
> client 1.12.0/1.13.0, if the row is set NULL for some columns, I got an error:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, 
> server=d584b3407ea444519e91b32f2744b162, status=Invalid argument: DELETE 
> should not have a value for column: c63 STRING NULLABLE (error 0)
> {code}
> if the row is set values for all columns , I got an error like:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, server=null, 
> status=Corruption: Not enough data for column: c63 STRING NULLABLE (error 0)
> {code}
> I also tested this with tables with different number of columns. The weird 
> thing is I could delete full rows from a table with 8/16/32/63/65 columns,  
> but couldn't do this if the table has 64/128 columns.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (KUDU-3198) Unable to delete a full row from a table with 64 columns when using java client

2020-10-09 Thread Alexey Serbin (Jira)


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

Alexey Serbin updated KUDU-3198:

Affects Version/s: 1.10.0
   1.10.1
   1.11.0
   1.11.1

> Unable to delete a full row from a table with 64 columns when using java 
> client
> ---
>
> Key: KUDU-3198
> URL: https://issues.apache.org/jira/browse/KUDU-3198
> Project: Kudu
>  Issue Type: Bug
>  Components: java
>Affects Versions: 1.10.0, 1.10.1, 1.11.0, 1.12.0, 1.11.1, 1.13.0
>Reporter: YifanZhang
>Priority: Major
>
> We recently got an error when deleted full rows from a table with 64 columns 
> using sparkSQL, however if we delete a column from the table, this error will 
> not appear. The error is:
> {code:java}
> Failed to write at least 1000 rows to Kudu; Sample errors: Not implemented: 
> Unknown row operation type (error 0){code}
> I tested this by deleting a full row from a table with 64 column using java 
> client 1.12.0/1.13.0, if the row is set NULL for some columns, I got an error:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, 
> server=d584b3407ea444519e91b32f2744b162, status=Invalid argument: DELETE 
> should not have a value for column: c63 STRING NULLABLE (error 0)
> {code}
> if the row is set values for all columns , I got an error like:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, server=null, 
> status=Corruption: Not enough data for column: c63 STRING NULLABLE (error 0)
> {code}
> I also tested this with tables with different number of columns. The weird 
> thing is I could delete full rows from a table with 8/16/32/63/65 columns,  
> but couldn't do this if the table has 64/128 columns.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (KUDU-3198) Unable to delete a full row from a table with 64 columns when using java client

2020-10-09 Thread ASF subversion and git services (Jira)


[ 
https://issues.apache.org/jira/browse/KUDU-3198?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17211307#comment-17211307
 ] 

ASF subversion and git services commented on KUDU-3198:
---

Commit ea48c9b181e3256cb96940c8d6bbf2f5ec3c3607 in kudu's branch 
refs/heads/master from zhangyifan27
[ https://gitbox.apache.org/repos/asf?p=kudu.git;h=ea48c9b ]

KUDU-3198: fix encodeRow() when encoding delete operations

Before this patch, not all non-key columns are cleared when
encoding delete row operations. If users delele with full row
from a 64 column table, the operation would fail.

Change-Id: I144e1998b99be3e660b7f320c55e4b1c9753a61f
Reviewed-on: http://gerrit.cloudera.org:8080/16571
Reviewed-by: Grant Henke 
Tested-by: Grant Henke 
Reviewed-by: Alexey Serbin 


> Unable to delete a full row from a table with 64 columns when using java 
> client
> ---
>
> Key: KUDU-3198
> URL: https://issues.apache.org/jira/browse/KUDU-3198
> Project: Kudu
>  Issue Type: Bug
>  Components: java
>Affects Versions: 1.12.0, 1.13.0
>Reporter: YifanZhang
>Priority: Major
>
> We recently got an error when deleted full rows from a table with 64 columns 
> using sparkSQL, however if we delete a column from the table, this error will 
> not appear. The error is:
> {code:java}
> Failed to write at least 1000 rows to Kudu; Sample errors: Not implemented: 
> Unknown row operation type (error 0){code}
> I tested this by deleting a full row from a table with 64 column using java 
> client 1.12.0/1.13.0, if the row is set NULL for some columns, I got an error:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, 
> server=d584b3407ea444519e91b32f2744b162, status=Invalid argument: DELETE 
> should not have a value for column: c63 STRING NULLABLE (error 0)
> {code}
> if the row is set values for all columns , I got an error like:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, server=null, 
> status=Corruption: Not enough data for column: c63 STRING NULLABLE (error 0)
> {code}
> I also tested this with tables with different number of columns. The weird 
> thing is I could delete full rows from a table with 8/16/32/63/65 columns,  
> but couldn't do this if the table has 64/128 columns.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (KUDU-3198) Unable to delete a full row from a table with 64 columns when using java client

2020-10-09 Thread YifanZhang (Jira)


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

YifanZhang updated KUDU-3198:
-
Description: 
We recently got an error when deleted full rows from a table with 64 columns 
using sparkSQL, however if we delete a column from the table, this error will 
not appear. The error is:
{code:java}
Failed to write at least 1000 rows to Kudu; Sample errors: Not implemented: 
Unknown row operation type (error 0){code}
I tested this by deleting a full row from a table with 64 column using java 
client 1.12.0/1.13.0, if the row is set NULL for some columns, I got an error:
{code:java}
Row error for primary key=[-128, 0, 0, 1], tablet=null, 
server=d584b3407ea444519e91b32f2744b162, status=Invalid argument: DELETE should 
not have a value for column: c63 STRING NULLABLE (error 0)
{code}
if the row is set values for all columns , I got an error like:
{code:java}
Row error for primary key=[-128, 0, 0, 1], tablet=null, server=null, 
status=Corruption: Not enough data for column: c63 STRING NULLABLE (error 0)
{code}
I also tested this with tables with different number of columns. The weird 
thing is I could delete full rows from a table with 8/16/32/63/65 columns,  but 
couldn't do this if the table has 64/128 columns.

  was:
We recently got an error when deleted full rows from a table with 64 columns 
using sparkSQL, however if we delete a column, this error will not appear. The 
error is:
{code:java}
Failed to write at least 1000 rows to Kudu; Sample errors: Not implemented: 
Unknown row operation type (error 0){code}
I tested this by deleting a full row from a table with 64 column using java 
client 1.12.0/1.13.0, if the row is set NULL for some columns, I got an error:
{code:java}
Row error for primary key=[-128, 0, 0, 1], tablet=null, 
server=d584b3407ea444519e91b32f2744b162, status=Invalid argument: DELETE should 
not have a value for column: c63 STRING NULLABLE (error 0)
{code}
if the row is set values for all columns , I got an error like:
{code:java}
Row error for primary key=[-128, 0, 0, 1], tablet=null, server=null, 
status=Corruption: Not enough data for column: c63 STRING NULLABLE (error 0)
{code}
I also tested this with tables with different number of columns. The weird 
thing is I could delete full rows from a table with 8/16/32/63/65 columns,  but 
couldn't do this if the table has 64/128 columns.


> Unable to delete a full row from a table with 64 columns when using java 
> client
> ---
>
> Key: KUDU-3198
> URL: https://issues.apache.org/jira/browse/KUDU-3198
> Project: Kudu
>  Issue Type: Bug
>  Components: java
>Affects Versions: 1.12.0, 1.13.0
>Reporter: YifanZhang
>Priority: Major
>
> We recently got an error when deleted full rows from a table with 64 columns 
> using sparkSQL, however if we delete a column from the table, this error will 
> not appear. The error is:
> {code:java}
> Failed to write at least 1000 rows to Kudu; Sample errors: Not implemented: 
> Unknown row operation type (error 0){code}
> I tested this by deleting a full row from a table with 64 column using java 
> client 1.12.0/1.13.0, if the row is set NULL for some columns, I got an error:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, 
> server=d584b3407ea444519e91b32f2744b162, status=Invalid argument: DELETE 
> should not have a value for column: c63 STRING NULLABLE (error 0)
> {code}
> if the row is set values for all columns , I got an error like:
> {code:java}
> Row error for primary key=[-128, 0, 0, 1], tablet=null, server=null, 
> status=Corruption: Not enough data for column: c63 STRING NULLABLE (error 0)
> {code}
> I also tested this with tables with different number of columns. The weird 
> thing is I could delete full rows from a table with 8/16/32/63/65 columns,  
> but couldn't do this if the table has 64/128 columns.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Issue Comment Deleted] (KUDU-3197) Tablet keeps all history schemas in memory may result in high memory consumption

2020-10-09 Thread wangningito (Jira)


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

wangningito updated KUDU-3197:
--
Comment: was deleted

(was: With deeper look into existing code, I get a little doubt with the 
scanners. 
I saw two methods in tablet_service.cc, `HandleNewScanRequest` and 
`HandleContinueScanRequest` charges almost all scan requests. And it use 
projection schema to serialize the scan result.
In `HandleNewScanRequest` it create projection schema of scanner in scanner 
manager, and serialize the result by the projection.
In `HandleContinueScanRequest`, it get scanner with scanner_id from scanner 
manager, the projection schema is kept in scanner, so it may be irrelevant to 
the schema kept by tablet_metadata.
So I'm wondering it may not have to much impact on deleting old old_schemas_.

BTW, it took me some time to thinking about ref-counted approach, as I 
understand, I considered two approach, 
1. Change change schema_ kept by tablet_metadata to shared_ptr wrapped one, and 
add a lock in SetSchema() and Schema() cause previously atomic swap is broken. 
It may hurts the perform a lot.
2. Add a atomic counter as Schema field, and decrease ref in scanner dtor, it 
may also hurt the performance when getting Schema().
)

> Tablet keeps all history schemas in memory may result in high memory 
> consumption
> 
>
> Key: KUDU-3197
> URL: https://issues.apache.org/jira/browse/KUDU-3197
> Project: Kudu
>  Issue Type: Improvement
>  Components: tablet
>Affects Versions: 1.12.0
>Reporter: wangningito
>Assignee: wangningito
>Priority: Minor
> Attachments: image-2020-09-25-14-45-33-402.png, 
> image-2020-09-25-14-49-30-913.png, image-2020-09-25-15-05-44-948.png
>
>
> In case of high frequency of updating table, memory consumption of 
> kudu-tserver may be very high, and the memory in not tracked in the memory 
> page. 
> This is the memory usage of a tablet, the memory consumption of tablet-xxx‘s 
> peak is 3.6G, but none of its' childrens' memory can reach.
> !image-2020-09-25-14-45-33-402.png!
> So I use pprof to get the heap sampling. The tserver started for long but the 
> memory is still consuming by TabletBootstrap:PlayAlterSchemaRequest. 
> !image-2020-09-25-14-49-30-913.png!
> I change the `old_schemas_` in tablet_metadata.h to a fixed size vector, 
>     // Previous values of 'schema_'.
> // These are currently kept alive forever, under the assumption that
> // a given tablet won't have thousands of "alter table" calls.
> // They are kept alive so that callers of schema() don't need to
> // worry about reference counting or locking.
> std::vector old_schemas_;
> The heap sampling then becomes
>  !image-2020-09-25-15-05-44-948.png! 
> So, to make application layer more flexible, it could be better to make the 
> size of the old_schemas configurable.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (KUDU-3197) Tablet keeps all history schemas in memory may result in high memory consumption

2020-10-09 Thread wangningito (Jira)


[ 
https://issues.apache.org/jira/browse/KUDU-3197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17210744#comment-17210744
 ] 

wangningito commented on KUDU-3197:
---

With deeper look into existing code, I get a little doubt with the scanners. 
I saw two methods in tablet_service.cc, `HandleNewScanRequest` and 
`HandleContinueScanRequest` charges almost all scan requests. And it use 
projection schema to serialize the scan result.
In `HandleNewScanRequest` it create projection schema of scanner in scanner 
manager, and serialize the result by the projection.
In `HandleContinueScanRequest`, it get scanner with scanner_id from scanner 
manager, the projection schema is kept in scanner, so it may be irrelevant to 
the schema kept by tablet_metadata.
So I'm wondering it may not have to much impact on deleting old old_schemas_.

BTW, it took me some time to thinking about ref-counted approach, as I 
understand, I considered two approach, 
1. Change change schema_ kept by tablet_metadata to shared_ptr wrapped one, and 
add a lock in SetSchema() and Schema() cause previously atomic swap is broken. 
It may hurts the perform a lot.
2. Add a atomic counter as Schema field, and decrease ref in scanner dtor, it 
may also hurt the performance when getting Schema().


> Tablet keeps all history schemas in memory may result in high memory 
> consumption
> 
>
> Key: KUDU-3197
> URL: https://issues.apache.org/jira/browse/KUDU-3197
> Project: Kudu
>  Issue Type: Improvement
>  Components: tablet
>Affects Versions: 1.12.0
>Reporter: wangningito
>Assignee: wangningito
>Priority: Minor
> Attachments: image-2020-09-25-14-45-33-402.png, 
> image-2020-09-25-14-49-30-913.png, image-2020-09-25-15-05-44-948.png
>
>
> In case of high frequency of updating table, memory consumption of 
> kudu-tserver may be very high, and the memory in not tracked in the memory 
> page. 
> This is the memory usage of a tablet, the memory consumption of tablet-xxx‘s 
> peak is 3.6G, but none of its' childrens' memory can reach.
> !image-2020-09-25-14-45-33-402.png!
> So I use pprof to get the heap sampling. The tserver started for long but the 
> memory is still consuming by TabletBootstrap:PlayAlterSchemaRequest. 
> !image-2020-09-25-14-49-30-913.png!
> I change the `old_schemas_` in tablet_metadata.h to a fixed size vector, 
>     // Previous values of 'schema_'.
> // These are currently kept alive forever, under the assumption that
> // a given tablet won't have thousands of "alter table" calls.
> // They are kept alive so that callers of schema() don't need to
> // worry about reference counting or locking.
> std::vector old_schemas_;
> The heap sampling then becomes
>  !image-2020-09-25-15-05-44-948.png! 
> So, to make application layer more flexible, it could be better to make the 
> size of the old_schemas configurable.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (KUDU-3197) Tablet keeps all history schemas in memory may result in high memory consumption

2020-10-09 Thread wangningito (Jira)


[ 
https://issues.apache.org/jira/browse/KUDU-3197?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17210745#comment-17210745
 ] 

wangningito commented on KUDU-3197:
---

With deeper look into existing code, I get a little doubt with the scanners. 
I saw two methods in tablet_service.cc, `HandleNewScanRequest` and 
`HandleContinueScanRequest` charges almost all scan requests. And it use 
projection schema to serialize the scan result.
In `HandleNewScanRequest` it create projection schema of scanner in scanner 
manager, and serialize the result by the projection.
In `HandleContinueScanRequest`, it get scanner with scanner_id from scanner 
manager, the projection schema is kept in scanner, so it may be irrelevant to 
the schema kept by tablet_metadata.
So I'm wondering it may not have to much impact on deleting old old_schemas_.

BTW, it took me some time to thinking about ref-counted approach, as I 
understand, I considered two approach, 
1. Change change schema_ kept by tablet_metadata to shared_ptr wrapped one, and 
add a lock in SetSchema() and Schema() cause previously atomic swap is broken. 
It may hurts the perform a lot.
2. Add a atomic counter as Schema field, and decrease ref in scanner dtor, it 
may also hurt the performance when getting Schema().


> Tablet keeps all history schemas in memory may result in high memory 
> consumption
> 
>
> Key: KUDU-3197
> URL: https://issues.apache.org/jira/browse/KUDU-3197
> Project: Kudu
>  Issue Type: Improvement
>  Components: tablet
>Affects Versions: 1.12.0
>Reporter: wangningito
>Assignee: wangningito
>Priority: Minor
> Attachments: image-2020-09-25-14-45-33-402.png, 
> image-2020-09-25-14-49-30-913.png, image-2020-09-25-15-05-44-948.png
>
>
> In case of high frequency of updating table, memory consumption of 
> kudu-tserver may be very high, and the memory in not tracked in the memory 
> page. 
> This is the memory usage of a tablet, the memory consumption of tablet-xxx‘s 
> peak is 3.6G, but none of its' childrens' memory can reach.
> !image-2020-09-25-14-45-33-402.png!
> So I use pprof to get the heap sampling. The tserver started for long but the 
> memory is still consuming by TabletBootstrap:PlayAlterSchemaRequest. 
> !image-2020-09-25-14-49-30-913.png!
> I change the `old_schemas_` in tablet_metadata.h to a fixed size vector, 
>     // Previous values of 'schema_'.
> // These are currently kept alive forever, under the assumption that
> // a given tablet won't have thousands of "alter table" calls.
> // They are kept alive so that callers of schema() don't need to
> // worry about reference counting or locking.
> std::vector old_schemas_;
> The heap sampling then becomes
>  !image-2020-09-25-15-05-44-948.png! 
> So, to make application layer more flexible, it could be better to make the 
> size of the old_schemas configurable.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)