Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
af650690
Commit
af650690
authored
Dec 05, 2012
by
Shivji Kumar Jha
Browse files
Options
Browse Files
Download
Plain Diff
BUG#12359942 - REPLICATION TEST FROM ENGINE SUITE RPL_ROW_UNTIL TIMES OUT
bzr merge 5.1->5.5
parents
8bdde97f
8f3465b3
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
157 additions
and
271 deletions
+157
-271
mysql-test/suite/engines/funcs/r/rpl_row_until.result
mysql-test/suite/engines/funcs/r/rpl_row_until.result
+50
-201
mysql-test/suite/engines/funcs/t/disabled.def
mysql-test/suite/engines/funcs/t/disabled.def
+0
-2
mysql-test/suite/engines/funcs/t/rpl_row_until.test
mysql-test/suite/engines/funcs/t/rpl_row_until.test
+103
-67
mysql-test/suite/rpl/t/disabled.def
mysql-test/suite/rpl/t/disabled.def
+0
-1
sql/sql_repl.cc
sql/sql_repl.cc
+4
-0
No files found.
mysql-test/suite/engines/funcs/r/rpl_row_until.result
View file @
af650690
stop slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
reset master;
reset slave;
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
start slave;
stop slave;
create table t1(n int not null auto_increment primary key);
insert into t1 values (1),(2),(3),(4);
drop table t1;
create table t2(n int not null auto_increment primary key);
insert into t2 values (1),(2);
insert into t2 values (3),(4);
drop table t2;
start slave until master_log_file='master-bin.000001', master_log_pos=311;
select * from t1;
include/master-slave.inc
[connection master]
CREATE TABLE t1(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO t1 VALUES (1),(2),(3),(4);
DROP TABLE t1;
CREATE TABLE t2(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
INSERT INTO t2 VALUES (1),(2);
INSERT INTO t2 VALUES (3),(4);
DROP TABLE t2;
include/stop_slave.inc
RESET SLAVE;
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_drop_t1
include/wait_for_slave_sql_to_stop.inc
SELECT * FROM t1;
n
1
2
3
4
show slave status;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_MYPORT
Connect_Retry 1
Master_Log_File master-bin.000001
Read_Master_Log_Pos #
Relay_Log_File slave-relay-bin.000004
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
Slave_IO_Running #
Slave_SQL_Running No
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition Master
Until_Log_File master-bin.000001
Until_Log_Pos 311
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master #
Master_SSL_Verify_Server_Cert No
Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
Replicate_Ignore_Server_Ids
Master_Server_Id 1
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
select * from t1;
n 1
n 2
n 3
n 4
show slave status;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_MYPORT
Connect_Retry 1
Master_Log_File master-bin.000001
Read_Master_Log_Pos #
Relay_Log_File slave-relay-bin.000004
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
Slave_IO_Running #
Slave_SQL_Running No
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition Master
Until_Log_File master-no-such-bin.000001
Until_Log_Pos 291
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master #
Master_SSL_Verify_Server_Cert No
Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
Replicate_Ignore_Server_Ids
Master_Server_Id 1
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=728;
select * from t2;
show slave status;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_MYPORT
Connect_Retry 1
Master_Log_File master-bin.000001
Read_Master_Log_Pos #
Relay_Log_File slave-relay-bin.000004
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
Slave_IO_Running #
Slave_SQL_Running No
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition Relay
Until_Log_File slave-relay-bin.000004
Until_Log_Pos 728
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master #
Master_SSL_Verify_Server_Cert No
Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
Replicate_Ignore_Server_Ids
Master_Server_Id 1
start slave;
stop slave;
start slave until master_log_file='master-bin.000001', master_log_pos=740;
show slave status;
Slave_IO_State #
Master_Host 127.0.0.1
Master_User root
Master_Port MASTER_MYPORT
Connect_Retry 1
Master_Log_File master-bin.000001
Read_Master_Log_Pos #
Relay_Log_File slave-relay-bin.000004
Relay_Log_Pos #
Relay_Master_Log_File master-bin.000001
Slave_IO_Running Yes
Slave_SQL_Running No
Replicate_Do_DB
Replicate_Ignore_DB
Replicate_Do_Table
Replicate_Ignore_Table
Replicate_Wild_Do_Table
Replicate_Wild_Ignore_Table
Last_Errno 0
Last_Error
Skip_Counter 0
Exec_Master_Log_Pos #
Relay_Log_Space #
Until_Condition Master
Until_Log_File master-bin.000001
Until_Log_Pos 740
Master_SSL_Allowed No
Master_SSL_CA_File
Master_SSL_CA_Path
Master_SSL_Cert
Master_SSL_Cipher
Master_SSL_Key
Seconds_Behind_Master #
Master_SSL_Verify_Server_Cert No
Last_IO_Errno 0
Last_IO_Error
Last_SQL_Errno 0
Last_SQL_Error
Replicate_Ignore_Server_Ids
Master_Server_Id 1
start slave until master_log_file='master-bin', master_log_pos=561;
include/check_slave_param.inc [Exec_Master_Log_Pos]
START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS;
include/wait_for_slave_sql_to_stop.inc
SELECT * FROM t1;
n
1
2
3
4
include/check_slave_param.inc [Exec_Master_Log_Pos]
START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=relay_pos_insert1_t2
include/wait_for_slave_sql_to_stop.inc
SELECT * FROM t2;
n
1
2
include/check_slave_param.inc [Exec_Master_Log_Pos]
START SLAVE;
include/wait_for_slave_to_start.inc
include/stop_slave.inc
START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=master_pos_create_t2
include/wait_for_slave_param.inc [Until_Log_Pos]
include/wait_for_slave_sql_to_stop.inc
include/check_slave_param.inc [Exec_Master_Log_Pos]
START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=MASTER_LOG_POS;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12
;
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS, RELAY_LOG_POS=RELAY_LOG_POS
;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until master_log_file
='master-bin.000001';
START SLAVE UNTIL MASTER_LOG_FILE
='master-bin.000001';
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until relay_log_file='slave-relay-bin.000002
';
START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000009
';
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561
;
START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=MASTER_LOG_POS
;
ERROR HY000: Incorrect parameter or combination of parameters for START SLAVE UNTIL
start slave sql_thread
;
start slave until master_log_file='master-bin.000001', master_log_pos=740
;
START SLAVE
;
START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=MASTER_LOG_POS
;
Warnings:
Level Note
Code 1254
Message Slave is already running
Note 1254 Slave is already running
include/stop_slave.inc
RESET SLAVE;
include/rpl_end.inc
mysql-test/suite/engines/funcs/t/disabled.def
View file @
af650690
...
...
@@ -70,7 +70,6 @@ rpl_replicate_ignore_db : Result Difference Due To Change In .inc file
rpl000017 : Result Difference Due To Change In .inc file
rpl_skip_error : Result Difference Due To Change In .inc file
rpl_row_until : Test Present in rpl suite as well . Test Fails table with t2 table not found.
rpl_loaddata_s : Test Present in rpl suite as well . Test Fails due to bin log truncation.
rpl_log_pos : Test Present in rpl suite as well . Test Fails due to bin log truncation.
rpl_row_NOW : Result Difference Due To Change In .inc file
...
...
@@ -96,4 +95,3 @@ rpl_relayspace : Result Difference Due To Change In .inc file
rpl_row_inexist_tbl : Result Difference Due To Change In .inc file
rpl_sp : Result Difference Due To Change In .inc file
rpl_rbr_to_sbr : Result Difference Due To Change In .inc file
rpl_row_until : Test Timesout
mysql-test/suite/engines/funcs/t/rpl_row_until.test
View file @
af650690
...
...
@@ -2,90 +2,126 @@
--
source
include
/
have_binlog_format_row
.
inc
--
source
include
/
master
-
slave
.
inc
#
T
est is dependent on binlog positions
#
Note: The t
est is dependent on binlog positions
# prepare version for substitutions
let
$VERSION
=
`select version()`
;
# Create some events on master
connection
master
;
CREATE
TABLE
t1
(
n
INT
NOT
NULL
AUTO_INCREMENT
PRIMARY
KEY
);
INSERT
INTO
t1
VALUES
(
1
),(
2
),(
3
),(
4
);
DROP
TABLE
t1
;
# Save master log position for query DROP TABLE t1
save_master_pos
;
let
$master_pos_drop_t1
=
query_get_value
(
SHOW
BINLOG
EVENTS
,
Pos
,
7
);
let
$master_log_file
=
query_get_value
(
SHOW
BINLOG
EVENTS
,
Log_name
,
7
);
# stop slave before he will start replication also sync with master
#
for avoiding undetermenistic behaviour
CREATE
TABLE
t2
(
n
INT
NOT
NULL
AUTO_INCREMENT
PRIMARY
KEY
);
#
Save master log position for query CREATE TABLE t2
save_master_pos
;
connection
slave
;
sync_with_master
;
stop
slave
;
let
$master_pos_create_t2
=
query_get_value
(
SHOW
BINLOG
EVENTS
,
Pos
,
8
);
INSERT
INTO
t2
VALUES
(
1
),(
2
);
save_master_pos
;
# Save master log position for query INSERT INTO t2 VALUES (1),(2);
let
$master_pos_insert1_t2
=
query_get_value
(
SHOW
BINLOG
EVENTS
,
End_log_pos
,
12
);
sync_slave_with_master
;
# Save relay log position for query INSERT INTO t2 VALUES (1),(2);
let
$relay_pos_insert1_t2
=
query_get_value
(
show
slave
status
,
Relay_Log_Pos
,
1
);
connection
master
;
# create some events on master
create
table
t1
(
n
int
not
null
auto_increment
primary
key
);
insert
into
t1
values
(
1
),(
2
),(
3
),(
4
);
drop
table
t1
;
create
table
t2
(
n
int
not
null
auto_increment
primary
key
);
insert
into
t2
values
(
1
),(
2
);
insert
into
t2
values
(
3
),(
4
);
drop
table
t2
;
# try to replicate all queries until drop of t1
INSERT
INTO
t2
VALUES
(
3
),(
4
);
DROP
TABLE
t2
;
# Save master log position for query INSERT INTO t2 VALUES (1),(2);
let
$master_pos_drop_t2
=
query_get_value
(
SHOW
BINLOG
EVENTS
,
End_log_pos
,
17
);
sync_slave_with_master
;
--
source
include
/
stop_slave
.
inc
# Reset slave.
RESET
SLAVE
;
--
disable_query_log
eval
CHANGE
MASTER
TO
MASTER_USER
=
'root'
,
MASTER_CONNECT_RETRY
=
1
,
MASTER_HOST
=
'127.0.0.1'
,
MASTER_PORT
=
$MASTER_MYPORT
;
--
enable_query_log
# Try to replicate all queries until drop of t1
connection
slave
;
start
slave
until
master_log_file
=
'master-bin.000001'
,
master_log_pos
=
311
;
sleep
2
;
wait_for_slave_to_stop
;
# here table should be still not deleted
select
*
from
t1
;
--
vertical_results
--
replace_result
$MASTER_MYPORT
MASTER_MYPORT
--
replace_column
1
# 7 # 9 # 11 # 22 # 23 # 33 #
show
slave
status
;
# this should fail right after start
start
slave
until
master_log_file
=
'master-no-such-bin.000001'
,
master_log_pos
=
291
;
echo
START
SLAVE
UNTIL
MASTER_LOG_FILE
=
'$master_log_file'
,
MASTER_LOG_POS
=
master_pos_drop_t1
;
--
disable_query_log
eval
START
SLAVE
UNTIL
MASTER_LOG_FILE
=
'$master_log_file'
,
MASTER_LOG_POS
=
$master_pos_drop_t1
;
--
enable_query_log
--
source
include
/
wait_for_slave_sql_to_stop
.
inc
# Here table should be still not deleted
SELECT
*
FROM
t1
;
--
let
$slave_param
=
Exec_Master_Log_Pos
--
let
$slave_param_value
=
$master_pos_drop_t1
--
source
include
/
check_slave_param
.
inc
# This should fail right after start
--
replace_result
291
MASTER_LOG_POS
START
SLAVE
UNTIL
MASTER_LOG_FILE
=
'master-no-such-bin.000001'
,
MASTER_LOG_POS
=
291
;
--
source
include
/
wait_for_slave_sql_to_stop
.
inc
# again this table should be still not deleted
select
*
from
t1
;
sleep
2
;
wait_for_slave_to_stop
;
--
vertical_results
--
replace_result
$MASTER_MYPORT
MASTER_MYPORT
--
replace_column
1
# 7 # 9 # 11 # 22 # 23 # 33 #
show
slave
status
;
# try replicate all up to and not including the second insert to t2;
start
slave
until
relay_log_file
=
'slave-relay-bin.000004'
,
relay_log_pos
=
728
;
sleep
2
;
wait_for_slave_to_stop
;
select
*
from
t2
;
--
vertical_results
--
replace_result
$MASTER_MYPORT
MASTER_MYPORT
--
replace_column
1
# 7 # 9 # 11 # 22 # 23 # 33 #
show
slave
status
;
SELECT
*
FROM
t1
;
--
let
$slave_param
=
Exec_Master_Log_Pos
--
let
$slave_param_value
=
$master_pos_drop_t1
--
source
include
/
check_slave_param
.
inc
# Try replicate all up to and not including the second insert to t2
;
echo
START
SLAVE
UNTIL
RELAY_LOG_FILE
=
'slave-relay-bin.000002'
,
RELAY_LOG_POS
=
relay_pos_insert1_t2
;
--
disable_query_log
eval
START
SLAVE
UNTIL
RELAY_LOG_FILE
=
'slave-relay-bin.000002'
,
RELAY_LOG_POS
=
$relay_pos_insert1_t2
;
--
enable_query_log
--
source
include
/
wait_for_slave_sql_to_stop
.
inc
SELECT
*
FROM
t2
;
--
let
$slave_param
=
Exec_Master_Log_Pos
--
let
$slave_param_value
=
$master_pos_insert1_t2
--
source
include
/
check_slave_param
.
inc
# clean up
start
slave
;
START
SLAVE
;
--
source
include
/
wait_for_slave_to_start
.
inc
connection
master
;
save_master_pos
;
connection
slave
;
sync_with_master
;
stop
slave
;
sync_slave_with_master
;
--
source
include
/
stop_slave
.
inc
# this should stop immediately as we are already there
start
slave
until
master_log_file
=
'master-bin.000001'
,
master_log_pos
=
740
;
sleep
2
;
wait_for_slave_to_stop
;
# This should stop immediately as we are already there
echo
START
SLAVE
SQL_THREAD
UNTIL
MASTER_LOG_FILE
=
'$master_log_file'
,
MASTER_LOG_POS
=
master_pos_create_t2
;
--
disable_query_log
eval
START
SLAVE
SQL_THREAD
UNTIL
MASTER_LOG_FILE
=
'$master_log_file'
,
MASTER_LOG_POS
=
$master_pos_create_t2
;
--
enable_query_log
let
$slave_param
=
Until_Log_Pos
;
let
$slave_param_value
=
$master_pos_create_t2
;
--
source
include
/
wait_for_slave_param
.
inc
--
source
include
/
wait_for_slave_sql_to_stop
.
inc
# here the sql slave thread should be stopped
--
vertical_results
--
replace_result
$MASTER_MYPORT
MASTER_MYPORT
bin
.
000005
bin
.
000004
bin
.
000006
bin
.
000004
bin
.
000007
bin
.
000004
--
replace_column
1
# 7 # 9 # 22 # 23 # 33 #
show
slave
status
;
--
let
$slave_param
=
Exec_Master_Log_Pos
--
let
$slave_param_value
=
$master_pos_drop_t2
--
source
include
/
check_slave_param
.
inc
#testing various error conditions
--
replace_result
561
MASTER_LOG_POS
--
error
1277
start
slave
until
master_log_file
=
'master-bin'
,
master_log_pos
=
561
;
START
SLAVE
UNTIL
MASTER_LOG_FILE
=
'master-bin'
,
MASTER_LOG_POS
=
561
;
--
replace_result
561
MASTER_LOG_POS
12
RELAY_LOG_POS
--
error
1277
start
slave
until
master_log_file
=
'master-bin.000001'
,
master_log_pos
=
561
,
relay_log_pos
=
12
;
START
SLAVE
UNTIL
MASTER_LOG_FILE
=
'master-bin.000001'
,
MASTER_LOG_POS
=
561
,
RELAY_LOG_POS
=
12
;
--
error
1277
start
slave
until
master_log_file
=
'master-bin.000001'
;
START
SLAVE
UNTIL
MASTER_LOG_FILE
=
'master-bin.000001'
;
--
error
1277
start
slave
until
relay_log_file
=
'slave-relay-bin.000002'
;
START
SLAVE
UNTIL
RELAY_LOG_FILE
=
'slave-relay-bin.000009'
;
--
replace_result
561
MASTER_LOG_POS
--
error
1277
start
slave
until
relay_log_file
=
'slave-relay-bin.000002'
,
master_log_pos
=
561
;
START
SLAVE
UNTIL
RELAY_LOG_FILE
=
'slave-relay-bin.000002'
,
MASTER_LOG_POS
=
561
;
# Warning should be given for second command
start
slave
sql_thread
;
start
slave
until
master_log_file
=
'master-bin.000001'
,
master_log_pos
=
740
;
START
SLAVE
;
--
replace_result
740
MASTER_LOG_POS
START
SLAVE
UNTIL
MASTER_LOG_FILE
=
'master-bin.000001'
,
MASTER_LOG_POS
=
740
;
--
source
include
/
stop_slave
.
inc
# Clear slave IO error.
RESET
SLAVE
;
--
let
$rpl_only_running_threads
=
1
--
source
include
/
rpl_end
.
inc
mysql-test/suite/rpl/t/disabled.def
View file @
af650690
...
...
@@ -13,5 +13,4 @@
rpl_row_create_table : Bug#11759274 2010-02-27 andrei failed different way than earlier with bug#45576
rpl_spec_variables : BUG#11755836 2009-10-27 jasonh rpl_spec_variables fails on PB2 hpux
rpl_get_master_version_and_clock : Bug#11766137 Jan 05 2011 joro Valgrind warnings rpl_get_master_version_and_clock
rpl_row_until : BUG#59543 Jan 26 2011 alfranio Replication test from eits suite rpl_row_until times out
rpl_stm_until : BUG#59543 Jan 26 2011 alfranio Replication test from eits suite rpl_row_until times out
sql/sql_repl.cc
View file @
af650690
...
...
@@ -1116,6 +1116,8 @@ int start_slave(THD* thd , Master_info* mi, bool net_report)
if
(
thd
->
lex
->
mi
.
pos
)
{
if
(
thd
->
lex
->
mi
.
relay_log_pos
)
slave_errno
=
ER_BAD_SLAVE_UNTIL_COND
;
mi
->
rli
.
until_condition
=
Relay_log_info
::
UNTIL_MASTER_POS
;
mi
->
rli
.
until_log_pos
=
thd
->
lex
->
mi
.
pos
;
/*
...
...
@@ -1127,6 +1129,8 @@ int start_slave(THD* thd , Master_info* mi, bool net_report)
}
else
if
(
thd
->
lex
->
mi
.
relay_log_pos
)
{
if
(
thd
->
lex
->
mi
.
pos
)
slave_errno
=
ER_BAD_SLAVE_UNTIL_COND
;
mi
->
rli
.
until_condition
=
Relay_log_info
::
UNTIL_RELAY_POS
;
mi
->
rli
.
until_log_pos
=
thd
->
lex
->
mi
.
relay_log_pos
;
strmake
(
mi
->
rli
.
until_log_name
,
thd
->
lex
->
mi
.
relay_log_name
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment