PostgreSQL Error While Rebuilding

Hello,

When i-rebuild my discourse today via ./launcher rebuild app. i’m receiving this errors:

root@discourse:/opt# cd /var/discourse_docker/
root@discourse:/var/discourse_docker# ./launcher rebuild app
Ensuring launcher is up to date
Fetching origin
Launcher is up-to-date
cd /pups && git pull && /pups/bin/pups --stdin
Already up to date.
I, [2020-07-15T16:31:19.389969 #1]  INFO -- : Loading --stdin
I, [2020-07-15T16:31:19.397738 #1]  INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-15T16:31:19.442371 #1]  INFO -- : Generating locales (this might take a while)...
Generation complete.

I, [2020-07-15T16:31:19.442561 #1]  INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-15T16:31:19.445577 #1]  INFO -- :
I, [2020-07-15T16:31:19.445781 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-15T16:31:19.449166 #1]  INFO -- :
I, [2020-07-15T16:31:19.449376 #1]  INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-15T16:31:19.452432 #1]  INFO -- :
I, [2020-07-15T16:31:19.452626 #1]  INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-15T16:31:19.456077 #1]  INFO -- :
I, [2020-07-15T16:31:19.456274 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-15T16:31:19.459496 #1]  INFO -- :
I, [2020-07-15T16:31:19.459722 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
2020/07/15 16:31:19 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
I, [2020-07-15T16:31:19.466033 #1]  INFO -- :
I, [2020-07-15T16:31:19.466190 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-15T16:31:19.470412 #1]  INFO -- :
I, [2020-07-15T16:31:19.470594 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-15T16:31:19.474721 #1]  INFO -- :
I, [2020-07-15T16:31:19.474886 #1]  INFO -- : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-07-15T16:31:19.477948 #1]  INFO -- :
I, [2020-07-15T16:31:19.478165 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp
I, [2020-07-15T16:31:19.481360 #1]  INFO -- :
I, [2020-07-15T16:31:19.488377 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
I, [2020-07-15T16:31:19.494864 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
I, [2020-07-15T16:31:19.501433 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
I, [2020-07-15T16:31:19.508030 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
I, [2020-07-15T16:31:19.508311 #1]  INFO -- : > chown -R root /var/lib/postgresql/12/main
I, [2020-07-15T16:31:22.627505 #1]  INFO -- :
I, [2020-07-15T16:31:22.627827 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0
I, [2020-07-15T16:31:22.631480 #1]  INFO -- :
I, [2020-07-15T16:31:22.631656 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
I, [2020-07-15T16:31:22.649989 #1]  INFO -- :
I, [2020-07-15T16:31:22.650148 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
I, [2020-07-15T16:31:22.653807 #1]  INFO -- :
I, [2020-07-15T16:31:22.654052 #1]  INFO -- : > /root/upgrade_postgres
I, [2020-07-15T16:31:22.660478 #1]  INFO -- :
I, [2020-07-15T16:31:22.660651 #1]  INFO -- : > rm /root/upgrade_postgres
I, [2020-07-15T16:31:22.663338 #1]  INFO -- :
I, [2020-07-15T16:31:22.663767 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/12/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.664582 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.666768 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.668210 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.669770 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.671341 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.673141 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
I, [2020-07-15T16:31:22.676724 #1]  INFO -- :
I, [2020-07-15T16:31:22.677097 #1]  INFO -- : Replacing (?-mix:#?max_wal_senders *=.*) with max_wal_senders = $db_max_wal_senders in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.677542 #1]  INFO -- : Replacing (?-mix:#?wal_level *=.*) with wal_level = $db_wal_level in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.679169 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.680967 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.682498 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/12/main/postgresql.conf
I, [2020-07-15T16:31:22.684043 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/12/main/pg_hba.conf
I, [2020-07-15T16:31:22.684445 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/12/main/pg_hba.conf
I, [2020-07-15T16:31:22.685537 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/12/bin/postmaster -D /etc/postgresql/12/main
I, [2020-07-15T16:31:22.687451 #1]  INFO -- : > sleep 5
2020-07-15 16:31:22.703 GMT [49] LOG:  syntax error in file "/etc/postgresql/12/main/postgresql.conf" line 193, near token "$"
2020-07-15 16:31:22.703 GMT [49] LOG:  syntax error in file "/etc/postgresql/12/main/postgresql.conf" line 286, near token "$"
2020-07-15 16:31:22.703 GMT [49] FATAL:  configuration file "/etc/postgresql/12/main/postgresql.conf" contains errors
I, [2020-07-15T16:31:27.690822 #1]  INFO -- :
I, [2020-07-15T16:31:27.691358 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
I, [2020-07-15T16:31:27.755611 #1]  INFO -- :
I, [2020-07-15T16:31:27.755836 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
I, [2020-07-15T16:31:27.811853 #1]  INFO -- :
I, [2020-07-15T16:31:27.812171 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
I, [2020-07-15T16:31:27.865404 #1]  INFO -- :
I, [2020-07-15T16:31:27.865605 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
I, [2020-07-15T16:31:27.917261 #1]  INFO -- :
I, [2020-07-15T16:31:27.917634 #1]  INFO -- : Terminating async processes


FAILED
--------------------
Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return #<Process::Status: pid 61 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
7670f9fb0161c9f213e14e09345518109b1ec04131d0428375f112ffccb98337
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Also tried to just git clone again GitHub - discourse/discourse_docker: A Docker image for Discourse and error still persist? any help? discourse_doctor doesn’t help.

Tried to fresh install discourse and error still persist.

1 Like

Is this a PostgreSQL 12 upgrade error @Falco?

Same issue for a fresh install on EC2 (Ubuntu 18.04.4 LTS) following the cloud installation instructions just now:

    I, [2020-07-15T16:37:49.240541 #1]  INFO -- : > mkdir -p /shared/postgres_run
    I, [2020-07-15T16:37:49.242993 #1]  INFO -- :
    I, [2020-07-15T16:37:49.243332 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run
    I, [2020-07-15T16:37:49.245340 #1]  INFO -- :
    I, [2020-07-15T16:37:49.245758 #1]  INFO -- : > chmod 775 /shared/postgres_run
    I, [2020-07-15T16:37:49.247483 #1]  INFO -- :
    I, [2020-07-15T16:37:49.247744 #1]  INFO -- : > rm -fr /var/run/postgresql
    I, [2020-07-15T16:37:49.249718 #1]  INFO -- :
    I, [2020-07-15T16:37:49.250109 #1]  INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
    I, [2020-07-15T16:37:49.251780 #1]  INFO -- :
    I, [2020-07-15T16:37:49.252044 #1]  INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1
    2020/07/15 16:37:49 socat[26] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): No such file or directory
    I, [2020-07-15T16:37:49.255669 #1]  INFO -- :
    I, [2020-07-15T16:37:49.255932 #1]  INFO -- : > rm -fr /shared/postgres_run/.s*
    I, [2020-07-15T16:37:49.258317 #1]  INFO -- :
    I, [2020-07-15T16:37:49.258498 #1]  INFO -- : > rm -fr /shared/postgres_run/*.pid
    I, [2020-07-15T16:37:49.260852 #1]  INFO -- :
    I, [2020-07-15T16:37:49.261155 #1]  INFO -- : > mkdir -p /shared/postgres_run/12-main.pg_stat_tmp
    I, [2020-07-15T16:37:49.263194 #1]  INFO -- :
    I, [2020-07-15T16:37:49.263496 #1]  INFO -- : > chown postgres:postgres /shared/postgres_run/12-main.pg_stat_tmp
    I, [2020-07-15T16:37:49.265228 #1]  INFO -- :
    I, [2020-07-15T16:37:49.269169 #1]  INFO -- : File > /etc/service/postgres/run  chmod: +x  chown:
    I, [2020-07-15T16:37:49.272879 #1]  INFO -- : File > /etc/service/postgres/log/run  chmod: +x  chown:
    I, [2020-07-15T16:37:49.276415 #1]  INFO -- : File > /etc/runit/3.d/99-postgres  chmod: +x  chown:
    I, [2020-07-15T16:37:49.280134 #1]  INFO -- : File > /root/upgrade_postgres  chmod: +x  chown:
    I, [2020-07-15T16:37:49.280510 #1]  INFO -- : > chown -R root /var/lib/postgresql/12/main
    I, [2020-07-15T16:37:51.389258 #1]  INFO -- :
    I, [2020-07-15T16:37:51.389481 #1]  INFO -- : > [ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/12/bin/initdb -D /shared/postgres_data || exit 0
    I, [2020-07-15T16:37:51.393651 #1]  INFO -- :
    I, [2020-07-15T16:37:51.393783 #1]  INFO -- : > chown -R postgres:postgres /shared/postgres_data
    I, [2020-07-15T16:37:51.401336 #1]  INFO -- :
    I, [2020-07-15T16:37:51.405711 #1]  INFO -- : > chown -R postgres:postgres /var/run/postgresql
    I, [2020-07-15T16:37:51.409068 #1]  INFO -- :
    I, [2020-07-15T16:37:51.409759 #1]  INFO -- : > /root/upgrade_postgres
    I, [2020-07-15T16:37:51.417131 #1]  INFO -- :
    I, [2020-07-15T16:37:51.417936 #1]  INFO -- : > rm /root/upgrade_postgres
    I, [2020-07-15T16:37:51.420632 #1]  INFO -- :
    I, [2020-07-15T16:37:51.421270 #1]  INFO -- : Replacing data_directory = '/var/lib/postgresql/12/main' with data_directory = '/shared/postgres_data' in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.421970 #1]  INFO -- : Replacing (?-mix:#?listen_addresses *=.*) with listen_addresses = '*' in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.423148 #1]  INFO -- : Replacing (?-mix:#?synchronous_commit *=.*) with synchronous_commit = $db_synchronous_commit in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.424102 #1]  INFO -- : Replacing (?-mix:#?shared_buffers *=.*) with shared_buffers = $db_shared_buffers in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.425086 #1]  INFO -- : Replacing (?-mix:#?work_mem *=.*) with work_mem = $db_work_mem in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.426032 #1]  INFO -- : Replacing (?-mix:#?default_text_search_config *=.*) with default_text_search_config = '$db_default_text_search_config' in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.426983 #1]  INFO -- : > install -d -m 0755 -o postgres -g postgres /shared/postgres_backup
    I, [2020-07-15T16:37:51.430084 #1]  INFO -- :
    I, [2020-07-15T16:37:51.430573 #1]  INFO -- : Replacing (?-mix:#?max_wal_senders *=.*) with max_wal_senders = $db_max_wal_senders in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.431292 #1]  INFO -- : Replacing (?-mix:#?wal_level *=.*) with wal_level = $db_wal_level in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.433312 #1]  INFO -- : Replacing (?-mix:#?checkpoint_segments *=.*) with checkpoint_segments = $db_checkpoint_segments in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.434127 #1]  INFO -- : Replacing (?-mix:#?logging_collector *=.*) with logging_collector = $db_logging_collector in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.435128 #1]  INFO -- : Replacing (?-mix:#?log_min_duration_statement *=.*) with log_min_duration_statement = $db_log_min_duration_statement in /etc/postgresql/12/main/postgresql.conf
    I, [2020-07-15T16:37:51.436084 #1]  INFO -- : Replacing (?-mix:^#local +replication +postgres +peer$) with local replication postgres  peer in /etc/postgresql/12/main/pg_hba.conf
    I, [2020-07-15T16:37:51.436566 #1]  INFO -- : Replacing (?-mix:^host.*all.*all.*127.*$) with host all all 0.0.0.0/0 md5 in /etc/postgresql/12/main/pg_hba.conf
    I, [2020-07-15T16:37:51.437521 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/12/bin/postmaster -D /etc/postgresql/12/main
    I, [2020-07-15T16:37:51.440165 #1]  INFO -- : > sleep 5
    2020-07-15 16:37:51.457 GMT [49] LOG:  syntax error in file "/etc/postgresql/12/main/postgresql.conf" line 193, near token "$"
    2020-07-15 16:37:51.457 GMT [49] LOG:  syntax error in file "/etc/postgresql/12/main/postgresql.conf" line 286, near token "$"
    2020-07-15 16:37:51.457 GMT [49] FATAL:  configuration file "/etc/postgresql/12/main/postgresql.conf" contains errors
    I, [2020-07-15T16:37:56.451144 #1]  INFO -- :
    I, [2020-07-15T16:37:56.451405 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
    Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
    I, [2020-07-15T16:37:56.503071 #1]  INFO -- :
    I, [2020-07-15T16:37:56.503968 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
    Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
    I, [2020-07-15T16:37:56.550717 #1]  INFO -- :
    I, [2020-07-15T16:37:56.550930 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
    Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
    I, [2020-07-15T16:37:56.612944 #1]  INFO -- :
    I, [2020-07-15T16:37:56.613161 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
    Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
    I, [2020-07-15T16:37:56.665397 #1]  INFO -- :
    I, [2020-07-15T16:37:56.665800 #1]  INFO -- : Terminating async processes


    FAILED
    --------------------
    Pups::ExecError: su postgres -c 'psql discourse -c "alter schema public owner to discourse;"' failed with return #<Process::Status: pid 61 exit 1>
    Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
    exec failed with the params "su postgres -c 'psql $db_name -c \"alter schema public owner to $db_user;\"'"
1 Like

Exactly the same problem on fresh DO server

1 Like

I am receiving this when rebuilding.

I was able to rebuild by adding the following params to templates/postgres.template.yml:

db_wal_level: minimal
db_max_wal_senders: 0
3 Likes

Yes. the new commit on master removed this line on all postgresql

https://github.com/discourse/discourse_docker/pull/472/commits/d1a78b1f78c63b217fb8dbcb370da201b1ba3c74

A smoke test will be enough to check this PR if it broke master branch.

1 Like

Fix confirmed for fresh install. Thank you!

templates/postgres.template.yml:

params:
  db_synchronous_commit: "off"
  db_shared_buffers: "256MB"
  db_work_mem: "10MB"
  db_default_text_search_config: "pg_catalog.english"
  db_name: discourse
  db_user: discourse
  db_checkpoint_segments: 6
  db_logging_collector: off
  db_log_min_duration_statement: 100
  db_wal_level: minimal
  db_max_wal_senders: 0
1 Like

It looks like this didn’t do it. I’ve got that commit and I still get:

Oh. I might be confused.

I, [2020-07-15T17:11:53.608333 #1]  INFO -- : > HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/12/bin/postmaster -D /etc/postgresql/12/main
I, [2020-07-15T17:11:53.610211 #1]  INFO -- : > sleep 5
2020-07-15 17:11:53.641 GMT [49] LOG:  syntax error in file "/etc/postgresql/12/main/postgresql.conf" line 193, near token "$" 
2020-07-15 17:11:53.642 GMT [49] LOG:  syntax error in file "/etc/postgresql/12/main/postgresql.conf" line 286, near token "$"
2020-07-15 17:11:53.643 GMT [49] FATAL:  configuration file "/etc/postgresql/12/main/postgresql.conf" contains errors
I, [2020-07-15T17:11:58.619578 #1]  INFO -- :
I, [2020-07-15T17:11:58.619911 #1]  INFO -- : > su postgres -c 'createdb discourse' || true
Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
I, [2020-07-15T17:11:58.700776 #1]  INFO -- :
I, [2020-07-15T17:11:58.701730 #1]  INFO -- : > su postgres -c 'psql discourse -c "create user discourse;"' || true
Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
I, [2020-07-15T17:11:58.775094 #1]  INFO -- :
I, [2020-07-15T17:11:58.776049 #1]  INFO -- : > su postgres -c 'psql discourse -c "grant all privileges on database discourse to discourse;"' || true
Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
I, [2020-07-15T17:11:58.847143 #1]  INFO -- :
I, [2020-07-15T17:11:58.848265 #1]  INFO -- : > su postgres -c 'psql discourse -c "alter schema public owner to discourse;"'
Error: invalid line 193 in /etc/postgresql/12/main/postgresql.conf: wal_level = $db_wal_level
I, [2020-07-15T17:11:58.918991 #1]  INFO -- :
I, [2020-07-15T17:11:58.920088 #1]  INFO -- : Terminating async processes

But it looks like that got merged and

https://github.com/discourse/discourse_docker/blob/master/templates/postgres.template.yml#L174-L177

needs to have $db_wal_level defined.

2 Likes

Sorry about that! That was meant to be removed entirely. Fixed.

4 Likes

The new commit fixed it. thanks mate. also test your thing first before merging it to master branch :+1: