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

YuJue Li updated IGNITE-22437:
------------------------------
    Description: 
start 2 node by ignite.sh

execute the following SQL:
create table dwd_t_order_loan_apply (
order_id varchar,
identity_no varchar,
loan_date varchar,
primary key (order_id,identity_no)
) WITH 
"template=partitioned,affinity_key=identity_no,CACHE_NAME=dwd_t_order_loan_apply";

create table dim_current_x_day (
id int,
biz_type int,
PRIMARY KEY (id)
) WITH "TEMPLATE=replicated,CACHE_NAME=dim_current_x_day";

INSERT INTO DWD_T_ORDER_LOAN_APPLY (ORDER_ID,IDENTITY_NO,LOAN_DATE) VALUES 
('100000081','510322','2023-11-09 15:05:04');

INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (1,1);
INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (3,1);
INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (7,1);
INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (15,1);
INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (30,1);
 
execute following query some times:
 
SELECT b.id,
max(last_trade) "last_trade"
from
(select max(loan_date) last_trade
from dwd_t_order_loan_apply where identity_no='510322'
) a JOIN dim_current_x_day b
GROUP BY b.id;
 
execute following command :
jmap -dump:format=b,file=/data/ignite.bin <ignite pid>
 
open ignite.bin by eclipse MAT:
At this point, you will see that there is data in the res instance object in 
MapNodeResults, which can lead to a serious memory leak issue, which is a 
serious vulnerability.
The normal SQL execution process involves releasing the resources held in the 
res instance object in MapNodeResults after a SQL query is executed.

  was:
start 2 node by ignite.sh

execute the following SQL:
create table dwd_t_order_loan_apply (
order_id varchar,
identity_no varchar,
loan_date varchar,
primary key (order_id,identity_no)
) WITH 
"template=partitioned,affinity_key=identity_no,CACHE_NAME=dwd_t_order_loan_apply";

create table dim_current_x_day (
id int,
biz_type int,
PRIMARY KEY (id)
) WITH "TEMPLATE=replicated,CACHE_NAME=dim_current_x_day";

INSERT INTO DWD_T_ORDER_LOAN_APPLY (ORDER_ID,IDENTITY_NO,LOAN_DATE) VALUES 
('100000081','510322199908266091','2023-11-09 15:05:04');

INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (1,1);
INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (3,1);
INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (7,1);
INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (15,1);
INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (30,1);
 
execute following query some times:
 
SELECT b.id,
max(last_trade) "last_trade"
from
(select max(loan_date) last_trade
from dwd_t_order_loan_apply where identity_no='510322199908266091'
) a JOIN dim_current_x_day b
GROUP BY b.id;
 
execute following command :
jmap -dump:format=b,file=/data/ignite.bin <ignite pid>
 
open ignite.bin by eclipse MAT:
At this point, you will see that there is data in the res instance object in 
MapNodeResults, which can lead to a serious memory leak issue, which is a 
serious vulnerability.
The normal SQL execution process involves releasing the resources held in the 
res instance object in MapNodeResults after a SQL query is executed.


> Memory leak in MapNodeResults
> -----------------------------
>
>                 Key: IGNITE-22437
>                 URL: https://issues.apache.org/jira/browse/IGNITE-22437
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>    Affects Versions: 2.16
>            Reporter: YuJue Li
>            Assignee: YuJue Li
>            Priority: Critical
>             Fix For: 2.17
>
>         Attachments: memoryleak.jpg
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> start 2 node by ignite.sh
> execute the following SQL:
> create table dwd_t_order_loan_apply (
> order_id varchar,
> identity_no varchar,
> loan_date varchar,
> primary key (order_id,identity_no)
> ) WITH 
> "template=partitioned,affinity_key=identity_no,CACHE_NAME=dwd_t_order_loan_apply";
> create table dim_current_x_day (
> id int,
> biz_type int,
> PRIMARY KEY (id)
> ) WITH "TEMPLATE=replicated,CACHE_NAME=dim_current_x_day";
> INSERT INTO DWD_T_ORDER_LOAN_APPLY (ORDER_ID,IDENTITY_NO,LOAN_DATE) VALUES 
> ('100000081','510322','2023-11-09 15:05:04');
> INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (1,1);
> INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (3,1);
> INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (7,1);
> INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (15,1);
> INSERT INTO DIM_CURRENT_X_DAY (ID,BIZ_TYPE) VALUES (30,1);
>  
> execute following query some times:
>  
> SELECT b.id,
> max(last_trade) "last_trade"
> from
> (select max(loan_date) last_trade
> from dwd_t_order_loan_apply where identity_no='510322'
> ) a JOIN dim_current_x_day b
> GROUP BY b.id;
>  
> execute following command :
> jmap -dump:format=b,file=/data/ignite.bin <ignite pid>
>  
> open ignite.bin by eclipse MAT:
> At this point, you will see that there is data in the res instance object in 
> MapNodeResults, which can lead to a serious memory leak issue, which is a 
> serious vulnerability.
> The normal SQL execution process involves releasing the resources held in the 
> res instance object in MapNodeResults after a SQL query is executed.



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

Reply via email to