Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 7BCE5200D08 for ; Thu, 21 Sep 2017 22:47:08 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 7A1F51609DB; Thu, 21 Sep 2017 20:47:08 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 50BDA1609E1 for ; Thu, 21 Sep 2017 22:47:06 +0200 (CEST) Received: (qmail 56065 invoked by uid 500); 21 Sep 2017 20:47:05 -0000 Mailing-List: contact user-help@hawq.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hawq.incubator.apache.org Delivered-To: mailing list user@hawq.incubator.apache.org Received: (qmail 55936 invoked by uid 99); 21 Sep 2017 20:47:05 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 21 Sep 2017 20:47:05 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 776A2D728E for ; Thu, 21 Sep 2017 20:47:04 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.799 X-Spam-Level: X-Spam-Status: No, score=0.799 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, KAM_LINEPADDING=1.2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-2.8, RCVD_IN_SORBS_SPAM=0.5, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd1-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id PJVXtV4EXNQb for ; Thu, 21 Sep 2017 20:47:01 +0000 (UTC) Received: from mail-io0-f178.google.com (mail-io0-f178.google.com [209.85.223.178]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id 19A3F5FDD9 for ; Thu, 21 Sep 2017 20:47:01 +0000 (UTC) Received: by mail-io0-f178.google.com with SMTP id d16so13715559ioj.3 for ; Thu, 21 Sep 2017 13:47:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=9O9a2fX6zJSbDC/jmFhZMtTSwSNyW3lAf32+N3UDSng=; b=WiIzAsMWC2e6MrK5UGe91rW+gs6VU+uuJaV2ivPhG4+mV0zLBLy+Qf9a+/AaT81SP9 CsiLnCfcXWcOKOKXnuMdiZ0mUCzrIPDjUNo34DWz8p6cv+PwSiD8obEerlqsAXL42Q8x EchSjx1/aEv4mxb3HbUiN7uNUz3l2kvyH8cHf1e4CXzVV4TQ0vkViHP2iAq0dWzYBEq4 cGBR+IyEYIQjWmsC8OH1JQNrVvXgTi15tDn3wQ6FAJr6GKnH0h+x9F2tWziuPsiGl7F2 0emlhY1zV41eVpoYEx1KFqEoc9ayTNCpMMA7DonweHINPS1RqmmprRavSO2fn3D3GFf+ 0gzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=9O9a2fX6zJSbDC/jmFhZMtTSwSNyW3lAf32+N3UDSng=; b=HAFdDSTcVspZBkEuoJlHuvT1SM1P+n45fbBrwuL6462/HByL3CQpqqTJBnRXcp1Fj9 KzrSoMRqEjtQkgwi9feAjJrbXZ31R1wkdkIm+6JoqI55A4ZHT0SYGffBDRuHGLyHyqeA teez3vygfzEXACsy2NOvqtH9QBHSL3+hdaI51IkYLgB4mGpPcfvv/5WHP/7ZB8R8owfx Xvz3Mwdwcl6b2/KCd/en1B4a5lu1oChSgizzDuRLDJx7gzZmJdfDTkW4JAk4dmMstbjo 88xstCJcQbxdodZ5fmvfR0ODv6k/iIJnMeCEemLy789ircKUY/+7MKFFQryJINl5QK+3 u9Hw== X-Gm-Message-State: AHPjjUgvH5GPRmmSp7pwWuOWehO0oeRTzXfiYtu7GbxBeJuSfy1Ou7hS DfSu5txZua42l239BLcgufjWI7m3TzJr9druxX0NzA== X-Google-Smtp-Source: AOwi7QCyVBBFISiIavPh4vT3kiAvMP2fQ7vfxHWxs1n6SKtuEy1KZ6DC6Z+0BKTK/9B9aym8PXx/gYECuGNiJTZjATA= X-Received: by 10.202.78.207 with SMTP id c198mr3572983oib.2.1506026819588; Thu, 21 Sep 2017 13:46:59 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.13.130 with HTTP; Thu, 21 Sep 2017 13:46:58 -0700 (PDT) In-Reply-To: References: From: Yi JIN Date: Fri, 22 Sep 2017 06:46:58 +1000 Message-ID: Subject: Re: Lock is retained on a table To: user@hawq.incubator.apache.org Content-Type: multipart/related; boundary="001a11c16f189b57e40559b931cc" archived-at: Thu, 21 Sep 2017 20:47:08 -0000 --001a11c16f189b57e40559b931cc Content-Type: multipart/alternative; boundary="001a11c16f189b57e10559b931cb" --001a11c16f189b57e10559b931cb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Grant, Did you check on master if the working process exists? For example, ps -ef | grep postgres | grep 393937 If you can find the pid in pg_locks, I think the process should still be there. So maybe you can pstack that process to check the stack, maybe we can find more hints. Best, Yi On Thu, Sep 21, 2017 at 7:50 PM, Grant Krieger wrote: > Hi All, > > > > Just to add. > > > > It appears lock still held but there are no active querys running on tabl= e > > > > select * from pg_stat_activity > > where procpid =3D 335492 > > > > > > 1075919 edw_performance3 335492 342 > 10 gpadmin drop table public.test_prod_dim3 > true 2017/09/21 10:51:22 AM 2017/09/21 8:58:55 AM > 10.1.3.201 61257 2017/09/21 10:51:22 AM > false > > > > select * from pg_stat_activity > > where current_query like '%test_prod_dim3%' > > > > > > 1075919 edw_performance3 335492 342 > 10 gpadmin drop table public.test_prod_dim3 > > true 2017/09/21 10:51:22 AM 2017/09/21 8:58:55 > AM 10.1.3.201 61257 2017/09/= 21 > 10:51:22 AM false > > 1075919 edw_performance3 376465 550 > 10 gpadmin select * from pg_stat_activity where > current_query like '%test_prod_dim3%' false 2017/09/21 > 11:24:51 AM 2017/09/21 10:14:33 AM > 10.1.3.201 62030 2017/09/21 11:24:51 > AM false > > > > The problem seems to exist when we have pids in pg_locks which don=E2=80= =99t exist > in pg_stat_activity. See query below > > > > select b.relname,a.* from pg_locks a > > join pg_class b > > on a.relation =3D b.relfilenode > > where pid not in > > ( > > select procpid from pg_stat_activity > > ) > > and b.relname =3D 'test_prod_dim3' > > > > test_prod_dim3 relation 1075919 > 1710089 (null) (null) (null) (null) > (null) (null) 109830069 393937 > AccessShareLock true 647 false -10000 > > > > > > So this dont work > > > > SELECT pg_terminate_backend(393937) > > > > > > Thanks > > > > > > *From:* Grant Krieger > *Sent:* 21 September 2017 11:01 AM > *To:* user@hawq.incubator.apache.org > *Subject:* RE: Lock is retained on a table > > > > Hi Guys, > > > > Thanks all for your help. > > > > I have scanned the log and there is no fatal message. > > > > On simulation via psql via putty there seems to be no problem however it > appears to exist when connecting via JDBC. If I close the JDBC client via > Aqua data studio on the last select statement the lock remains. Maybe it= =E2=80=99s > a JDBC setting I need to change. > > > > Below is a test script which loads data then a test query > > > > --- loading dummy data > > > > DROP > > TABLE if EXISTS PUBLIC.test_prod_dim3; > > CREATE > > TABLE PUBLIC.test_prod_dim3 > > ( > > productid int4 NULL, > > description text NULL > > ) > > WITH > > ( > > APPENDONLY =3D TRUE, > > COMPRESSTYPE =3D SNAPPY, > > OIDS =3D FALSE > > ) > > DISTRIBUTED RANDOMLY; > > INSERT > > INTO > > PUBLIC.test_prod_dim3 > > SELECT > > 1 AS productid, > > '1 desc' AS description > > FROM > > generate_series(1,100000000); > > DROP > > TABLE if EXISTS PUBLIC.test_table_fact3; > > CREATE > > TABLE PUBLIC.test_table_fact3 > > ( > > productid int4 NULL, > > value1 int4 NULL > > ) > > WITH > > ( > > APPENDONLY =3D TRUE, > > COMPRESSTYPE =3D SNAPPY, > > OIDS =3D FALSE > > ) > > DISTRIBUTED RANDOMLY; > > INSERT > > INTO > > PUBLIC.test_table_fact3 > > SELECT > > 1 AS productid, > > 1 AS value1 > > FROM > > generate_series(1,100000000); > > --End loading dummy data > > > > > > --Starting test query. Note this only works when I close JDBC clien= t > with CTRL ALT DELETE when this step is running > > > > SELECT > > * > > FROM > > ( SELECT > > a.*, > > b.description > > FROM > > PUBLIC.test_table_fact3 a > > JOIN PUBLIC.test_prod_dim3 b > > ON a.productid =3D b.productid ) AS q LIMIT 10000; > > > > > > --Then in a new session > > > > drop table public.test_prod_dim3; > > > > select * from pg_stat_activity > > where procpid =3D 335492 > > > > 1075919 edw_performance3 335492 342 10 gpadmin drop > table public.test_prod_dim3 true 2017/09/21 10:51:22 AM 2017/09/21 > 8:58:55 AM 10.1.3.201 61257 2017/09/21 10:51:22 AM false > > > > select * from pg_locks > > where pid =3D 335492 > > > > relation 1075919 1710089 (null) (null) (null) > (null) (null) (null) 109830156 335492 > AccessExclusiveLock false 342 false -10000 > > transactionid (null) (null) (null) (null) > 109830156 (null) (null) (null) 109830156 335492 > ExclusiveLock true 342 false -10000 > > relation 1075919 1259 (null) (null) (null) > (null) (null) (null) 109830156 335492 > RowExclusiveLock true 342 false -10000 > > relation 1075919 2608 (null) (null) (null) > (null) (null) (null) 109830156 335492 > RowExclusiveLock true 342 false -10000 > > relation 1075919 1247 (null) (null) (null) > (null) (null) (null) 109830156 335492 > RowExclusiveLock true 342 false -10000 > > > > > > > > *From:* Shubham Sharma [mailto:ssharma@pivotal.io ] > *Sent:* 20 September 2017 11:52 PM > *To:* user@hawq.incubator.apache.org > *Subject:* Re: Lock is retained on a table > > > > Hi Grant, > > > > Will it be feasible for you to share a reproducible case where you see > this behavior. I have tried the following and don't see the behavior as y= ou > decribed > > > > [gpadmin@hdp3 ~]$ cat simple_select_query.sql > > select * from t1 > > psql -c "select * from pg_locks"; > > locktype | database | relation | page | tuple | transactionid | > classid | objid | objsubid | transaction | pid | mode | > granted | mppsessionid | mppiswriter | gp_segment_id > > ---------------+----------+----------+------+-------+------- > --------+---------+-------+----------+-------------+-------- > +-----------------+---------+--------------+-------------+--------------- > > transactionid | | | | | 1639719 | > | | | 1639719 | 748151 | ExclusiveLock | t = | > 1720 | f | -10000 > > relation | 1311369 | 10335 | | | | > | | | 1639719 | 748151 | AccessShareLock | t = | > 1720 | f | -10000 > > (2 rows) > > > > [gpadmin@hdp3 ~]$ nohup psql -f simple_select_query.sql & > > [1] 748153 > > [gpadmin@hdp3 ~]$ kill -9 748153 > > > > [gpadmin@hdp3 ~]$ psql -c "select * from pg_locks"; > > locktype | database | relation | page | tuple | transactionid | > classid | objid | objsubid | transaction | pid | mode | > granted | mppsessionid | mppiswriter | gp_segment_id > > ---------------+----------+----------+------+-------+------- > --------+---------+-------+----------+-------------+-------- > +-----------------+---------+--------------+-------------+--------------- > > relation | 1311369 | 10335 | | | | > | | | 1639725 | 748410 | AccessShareLock | t = | > 1723 | f | -10000 > > transactionid | | | | | 1639725 | > | | | 1639725 | 748410 | ExclusiveLock | t = | > 1723 | f | -10000 > > (2 rows) > > > > I don't see a dangling exclusive lock. Is that something similar what you > mentioned in your approach. > > > > On Wed, Sep 20, 2017 at 6:10 AM, Yi JIN wrote: > > Hi Grant, > > > > Most likely it is a bug. Can you have a look the master log files, to > check if there are some FATAL logs? And could you extract those FATAL lin= es > out ? > > > > Best, > > Yi > > > > On Wed, Sep 20, 2017 at 10:18 PM, Grant Krieger wrote= : > > Hi , > > > > I have come across a funny in hawq 2.2.0.0. If we do a long running simpl= e > select only query on a table and we illegally terminate the client sessio= n > (Just close the query tool window without cancelling) an exclusive lock i= s > held on the underlying table until a server restart is done. > > This is even when the query has completed on the server. > > The terminate backend or Linux kill has no effect > > > > Any ideas? > > > > Thanks > > > > Grant Krieger > > > > [image: Mr PriceGroup Limited] > > *Grant Krieger * > *Portfolio Lead * > mrp IT > *T:* +27313108478 <+27%2031%20310%208478> > *E:* gkrieger@mrpg.com > *W:* http://www.mrpricegroup.com > > > > The information contained in this communication from gkrieger@mrpg.com is > confidential and may be legally privileged. This email is intended solely > for use by the addressee and others authorized to receive it, and should > not be read if delivered in error. If you are not the addressee you are > hereby notified that any disclosure, copying, distribution or action take= n > or omitted in reliance of the contents of this information is strictly > prohibited and may be unlawful. Please notify the sender immediately if t= he > e-mail has unintentionally reached you. The email legal notice that gover= ns > the transmission of this electronic communication is available online at = Mr > Price Group Limited (http://www.mrpricegroup.com/LegalNotice.aspx). If > you cannot access the legal notice, kindly contact us on +27 800 21 2535 > and a copy will be provided to you. > > Mr Price Group is an Authorised Financial Services and Credit Provider: > FSP31450 and NCRCP46. > > PPlease consider the environment before printing this email. > > > > > > > > -- > > Regards, > > Shubham Sharma > > Staff Customer Engineer > > Pivotal Global Support Services > > ssharma@pivotal.io > > Direct Tel: +1(510)-304-8201 <(510)%20304-8201> > > Office Hours: Mon-Fri 9:00 am to 5:00 pm PDT > > Out of Office Hours Contact +1 877-477-2269 <(877)%20477-2269> > --001a11c16f189b57e10559b931cb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Grant,

Did you check on master if th= e working process exists? For example, ps -ef | grep postgres | grep 393937=

If you can find the pid in pg_locks, I think the = process should still be there.=C2=A0 So maybe you can pstack that process t= o check the stack, maybe we can find more hints.

B= est,
Yi

On Thu, Sep 21, 2017 at 7:50 PM, Grant Krieger <GKrieger@mrpg.= com> wrote:

Hi All,

=C2=A0

Just to add.

=C2=A0

It appears lock still held but there = are no active querys running on table

=C2=A0

select * from pg_stat_activity=

where procpid =3D 335492

=C2=A0

=C2=A0

1075919=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 edw_performanc= e3=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 335492=C2=A0 342=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 10=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 gpadmin=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 drop table public.test_prod_dim3=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 true=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2017/09/21 10:51:22 AM=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= 2017/09/21 8:58:55 AM=C2=A0 10.1.3.201=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 61257=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= 2017/09/21 10:51:22 AM=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 false=

=C2=A0

select * from pg_stat_activity=

where current_query like '%test_p= rod_dim3%'

=C2=A0

=C2=A0

1075919=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 edw_performanc= e3=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 335492=C2=A0 342=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 10=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 gpadmin=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 drop table public.test_prod_dim3=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 true=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 2017/09/21 10:51:22 AM=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2017/09/21 8:58:55 AM=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 10.1.3.201=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 61257=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2017/09/21 10:51:22 AM= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 false

1075919=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 edw_p= erformance3=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 376465=C2=A0 550=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 10=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 gpadmin=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 select * from pg_stat_activity where current_query like '%test_prod_dim3%'=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 false= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2017/09/21 11:24:51 AM=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 2017/09/21 = 10:14:33 AM=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 10.1.3.201=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 62030=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= 2017/09/21 11:24:51 AM=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 false

=C2=A0

The problem seems to exist when we ha= ve pids in pg_locks which don=E2=80=99t exist in pg_stat_activity. See quer= y below

=C2=A0

select b.relname,a.* from pg_locks a<= u>

join pg_class b<= /p>

on a.relation =3D b.relfilenode

where pid not in

(

select procpid from pg_stat_activity<= u>

)

and b.relname =3D 'test_prod_dim3= '

=C2=A0

test_prod_dim3=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 relation 10= 75919=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 1710089=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2= =A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2= =A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 109830069=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 393937=C2=A0 AccessShareLock=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 true=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 647=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 f= alse=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 -10000

=C2=A0

=C2=A0

So this dont work

=C2=A0

SELECT pg_terminate_backend(393937)

=C2=A0

=C2=A0

Thanks

=C2=A0

=C2=A0

From: = Grant Krieger
Sent: 21 September 2017 11:01 AM
To: user@hawq.incubator.apache.org
Subject: RE: Lock is retained on a table

=C2=A0

Hi Guys,

=C2=A0

Thanks all for your help.

=C2=A0

I have scanned the log and there is n= o fatal message.

=C2=A0

On simulation via psql via putty ther= e seems to be no problem however it appears to exist when connecting via JD= BC. If I close the JDBC client via Aqua data studio on the last select statement the lock rem= ains. Maybe it=E2=80=99s a JDBC setting I need to change.

=C2=A0

Below is a test script which loads da= ta then a test query

=C2=A0

--- loading dummy data<= /span>

=C2=A0

DROP

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 TABLE if EXISTS PUBLIC.test= _prod_dim3;

CREATE

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 TABLE PUBLIC.test_prod_dim3

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 productid int4 NULL,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 description text NULL

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 )

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 WITH

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 APPENDONLY =3D TRUE,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 COMPRESSTYPE =3D SNAPPY,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 OIDS =3D FALSE

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 )

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 DISTRIBUTED RANDOMLY;

INSERT

INTO

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PUBLIC.test_prod_dim3

SELECT

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 AS productid,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 '1 desc' AS descrip= tion

FROM

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 generate_series(1,100000000= );

DROP

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 TABLE if EXISTS PUBLIC.test= _table_fact3;

CREATE

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 TABLE PUBLIC.test_table_fac= t3

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 productid int4 NULL,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 value1 int4 NULL

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 )

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 WITH

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 APPENDONLY =3D TRUE,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 COMPRESSTYPE =3D SNAPPY,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 OIDS =3D FALSE

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 )

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 DISTRIBUTED RANDOMLY;

INSERT

INTO

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PUBLIC.test_table_fact3<= /u>

SELECT

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1 AS productid,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 1 AS value1

FROM

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 generate_series(1,100000000= );

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --End loading dummy data=

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --Starting test query. Note= this only works when I close JDBC client with CTRL ALT DELETE when this st= ep is running

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0

SELECT

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *

FROM

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (=C2=A0=C2=A0=C2=A0=C2=A0 S= ELECT

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 a.*,

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 b.description

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 FROM

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 PUBLIC.test_table_fact3 a

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 JOIN PUBLIC.test_prod_dim3 b

=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 ON a.productid =3D b.producti= d ) AS q LIMIT 10000;

=C2=A0

=C2=A0

--Then in a new session

=C2=A0

drop table public.test_prod_dim3;

=C2=A0

select * from pg_stat_activity

where procpid =3D 335492

=C2=A0

1075919=C2=A0=C2=A0=C2=A0=C2=A0 edw_performance3=C2=A0 335= 492=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 342=C2=A0=C2=A0 10=C2=A0=C2=A0=C2=A0 gpad= min=C2=A0=C2=A0=C2=A0=C2=A0 drop table public.test_prod_dim3=C2=A0=C2=A0 tr= ue=C2=A0 2017/09/21 10:51:22 AM=C2=A0 2017/09/21 8:58:55 AM=C2=A0=C2=A0 10.1.3.201=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 61257=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 2017/09/21 10:51:22 AM=C2=A0 false

=C2=A0

select * from pg_locks

where pid =3D 335492

=C2=A0

relation=C2=A0=C2=A0=C2=A0 1075919=C2=A0=C2=A0=C2=A0=C2=A0= 1710089=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null= )=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 109830156=C2=A0=C2=A0 335492=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 AccessExclusiveLock=C2=A0=C2=A0=C2=A0=C2=A0 false 342=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 false -10000<= /p>

transactionid=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 109830156=C2=A0=C2= =A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 109830156=C2=A0=C2=A0 335492=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 ExclusiveLock=C2=A0=C2=A0=C2=A0=C2=A0 true=C2=A0 342=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 false -10000

relation=C2=A0=C2=A0=C2=A0 1075919=C2=A0=C2=A0=C2=A0=C2=A0= 1259=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 109830156=C2=A0=C2=A0 335492=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Row= ExclusiveLock=C2=A0 true=C2=A0 342=C2=A0=C2=A0 false -10000

relation=C2=A0=C2=A0=C2=A0 1075919=C2=A0=C2=A0=C2=A0=C2=A0= 2608=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 109830156=C2=A0=C2=A0 335492=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Row= ExclusiveLock=C2=A0 true=C2=A0 342=C2=A0=C2=A0 false -10000

relation=C2=A0=C2=A0=C2=A0 1075919=C2=A0=C2=A0=C2=A0=C2=A0= 1247=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 (null)=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0 109830156=C2=A0=C2=A0 335492=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Row= ExclusiveLock=C2=A0 true=C2=A0 342=C2=A0=C2=A0 false -10000

=C2=A0

=C2=A0

=C2=A0

From: = Shubham Sharma [mai= lto:ssharma@pivotal.io]
Sent: 20 September 2017 11:52 PM
To: user@hawq.incubator.apache.org
Subject: Re: Lock is retained on a table

=C2=A0

Hi Grant,

=C2=A0

Will it be feasible for you to share a reproducible = case where you see this behavior. I have tried the following and don't = see the behavior as you decribed

=C2=A0

[gpadmin@hdp3 ~]$ cat simple_select_query.sql=C2=A0

select * from t1

psql -c "select * from pg_locks";<= /u>

=C2=A0=C2=A0 locktype=C2=A0 =C2=A0 | database | relation = | page | tuple | transactionid | classid | objid | objsubid | transaction |= =C2= =A0 pid =C2=A0 |=C2=A0 =C2=A0 =C2=A0 mode =C2=A0 =C2=A0 =C2=A0 | granted | mppsession= id | mppiswriter | gp_segment_id=C2=A0

---------------+----------+----------+------+-------+---= ------------+---------+-------+----------+-------------+--------<= wbr>+-----------------+---------+--------------+-------------+---= ------------

=C2=A0transactionid |=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 1639719 | =C2=A0 =C2=A0 = =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 | =C2=A0 =C2=A0 1639719 | 748151 | Exc= lusiveLock =C2=A0 | t =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 = =C2=A0 1720 | f =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 -10000

=C2=A0relation=C2=A0 =C2=A0 =C2=A0 |=C2=A0 1311369 |=C2=A0 =C2=A0 10335 |=C2=A0 =C2=A0 =C2= =A0 | =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 = =C2=A0 | =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 | =C2=A0 =C2=A0 1639719 | 748151 | Acc= essShareLock | t =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 = =C2=A0 1720 | f =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 -10000

(2 rows)

=C2=A0

[gpadmin@hdp3 ~]$ nohup psql -f simple_select_query.sql &=

[1] 748153

[gpadmin@hdp3 ~]$ kill -9 748153

=C2=A0

[gpadmin@hdp3 ~]$ psql -c "select * from pg_locks";=

=C2=A0=C2=A0 locktype=C2=A0 =C2=A0 | database | relation = | page | tuple | transactionid | classid | objid | objsubid | transaction |= =C2= =A0 pid =C2=A0 |=C2=A0 =C2=A0 =C2=A0 mode =C2=A0 =C2=A0 =C2=A0 | granted | mppsession= id | mppiswriter | gp_segment_id=C2=A0

---------------+----------+----------+------+-------+---= ------------+---------+-------+----------+-------------+--------<= wbr>+-----------------+---------+--------------+-------------+---= ------------

=C2=A0relation=C2=A0 =C2=A0 =C2=A0 |=C2=A0 1311369 |=C2=A0 =C2=A0 10335 |=C2=A0 =C2=A0 =C2= =A0 | =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 = =C2=A0 | =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 | =C2=A0 =C2=A0 1639725 | 748410 | Acc= essShareLock | t =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 = =C2=A0 1723 | f =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 -10000

=C2=A0transactionid |=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 1639725 | =C2=A0 =C2=A0 = =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 | =C2=A0 =C2=A0 1639725 | 748410 | Exc= lusiveLock =C2=A0 | t =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 = =C2=A0 1723 | f =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2= =A0 -10000

(2 rows)

=C2=A0

I don't see a dangling exclusive lock. Is that something = similar what you mentioned in your approach.

=C2=A0

On Wed, Sep 20, 2017 at 6:10 AM, Yi JIN <jinyi.apache@gmail.com= > wrote:

Hi Grant,

=C2=A0

Most likely it is a bug. Can you have a look the mas= ter log files, to check if there are some FATAL logs? And could you extract= those FATAL lines out ?

=C2=A0

Best,

Yi

=C2=A0

On Wed, Sep 20, 2017 at 10:18 PM, Grant Krieger <= GKrieger@mrpg.com> wrote:

Hi ,

=C2=A0

I have come across a funny in hawq 2.2.0.0. If we do= a long running simple select only query on a table and we illegally termin= ate the client session (Just close the query tool window without cancelling) an exclusive lock is held on the underlying tab= le until a server restart is done.

This is even when the query has completed on the ser= ver.

The terminate backend or Linux kill has no effect=

=C2=A0

Any ideas?

=C2=A0

Thanks

=C2=A0

Grant Krieger

=C2=A0<= /p>

3D"Mr

Grant Krieger
Portfolio Lead
mrp IT
T: +27313108= 478
E: gkrieger@m= rpg.com
W: http://= www.mrpricegroup.com

=C2=A0<= /p>

The information con= tained in this communication from gkrieger@mrpg.com is confidential and may be legally privileged. This email is intended sol= ely for use by the addressee and others authorized to receive it, and shoul= d not be read if delivered in error. If you are not the addressee you are hereby notified that any disclosure, = copying, distribution or action taken or omitted in reliance of the content= s of this information is strictly prohibited and may be unlawful. Please no= tify the sender immediately if the e-mail has unintentionally reached you. The email legal notice that govern= s the transmission of this electronic communication is available online at = Mr Price Group Limited (http://www.mrpricegroup.com/LegalNotice.aspx). If you cannot access the legal notice, kindly contact us on +27 800 21 253= 5 and a copy will be provided to you.

Mr Price Group is a= n Authorised Financial Services and Credit Provider: FSP31450 and NCRCP46.<= u>

PPlease consider the environment = before printing this email.<= /u>

=C2=A0



=C2=A0

--


--001a11c16f189b57e10559b931cb-- --001a11c16f189b57e40559b931cc Content-Type: image/gif; name="image001.gif" Content-Disposition: inline; filename="image001.gif" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: a42cfc911e50c70a_0.1 R0lGODlhsgBfAPf/APvo6dswON05QP39/fjZ2vzw8Pvm59w2Peh6fvKytcXFxeZwddbW1ud1euqF iVxdW9opMbW2teHh4dsuNemBheuNkf319d9ITtkiKpmameNgZul+g/b29o6PjeZDSvTCxPfQ0tge JuyRlfXIyuFRV+VsceRlatghKffO0Pn5+aWmpfT09OuLj+6fo31+fd5CSaGioeRnbPK1uOXl5fGw sr29vfO6vOBOVPzu7q6urfjW2PbKzNnZ2YWGhd9GTfCqreJaYOBMUtcaIrm5ufr6+vbMzvDw8Prf 4dw4P+FTWeVobu2WmvXFx/TAwuNdYvO4uuJWXO+mqdvc2+2ZncrKyuFUWvGuseNeZO+gpPjV1tDQ 0G1ubVVWVUFCQPXGyDk6OImKiOfn55KSkfS+wD4/Pd5ARnFxcFFSUUZGRTY3NXp7eWlpaOJYXmNs amFiYYKDgeqIjJWWlbCxsE1OTXV2dUpLSUJEQmZnZdcZITQ1M/76+/739//9/frj5NgdJPrl5tkk K9ccJP77/NosM/3x8jc4Nujo6G9wbvrk5XN0cktMSvS9v/na2/zs7eVrcNgeJdonL+d4fP/8/N9E S/nc3dklLP74+P3z9PfT1OZvdN4/RvbMzf75+frg4ffS0/3y8909RPO8v5+gn/76+j9APvnd3vne 30RFQ+6doPHy8fLy8v329vri49sxOd0+RdkmLfzr7PO7vtknLuBLUerq6vzt7tsvNvrh4u6cn+np 6dw0O907QtwzOoSEg9PT09LS0e3t7e3u7fK0t2BhX6+wr2xsa+yPk1hZWPGsr++kpzg5N5SUk99K UPnb3O6eoedyd0dIRvTDxeyUl09QTt7f3mhoZ93d3e+jpjw9O+/v76qurb/Av+d3fOrq6eRhZ87P zvfU1YiIh56enVNUUvCoq2NkYldYVru8u3Bwb39/fnyDgbG0s6OjooCGhXh5eENGRHt8el5fXfCn qjs8OnR0c0BBP/Hx8ZubmlpkYmtsaqurqqusq5CQj1BRT++ipf///yH/C1hNUCBEYXRhWE1QPD94 cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1w bWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4w LWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4 bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8 cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2Jl LmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu MC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv MS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bXBNTTpP cmlnaW5hbERvY3VtZW50SUQ9InV1aWQ6NjVFNjM5MDY4NkNGMTFEQkE2RTJEODg3Q0VBQ0I0MDci IHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzMwNDU1OUJDN0NDMTFFNEJBRTlCNjRGOUIyNjM1 MEEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzMwNDU1OUFDN0NDMTFFNEJBRTlCNjRGOUIy NjM1MEEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgSWxsdXN0cmF0b3IgQ1M2IChNYWNpbnRvc2gp Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NUM3NzhCN0Qy MUY1MTFFNDlEQkRFNDRCRDJBMzY5MTMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NUM3NzhC N0UyMUY1MTFFNDlEQkRFNDRCRDJBMzY5MTMiLz4gPGRjOnRpdGxlPiA8cmRmOkFsdD4gPHJkZjps aSB4bWw6bGFuZz0ieC1kZWZhdWx0Ij5FbWFpbF9Mb2dvX0Jhc2U8L3JkZjpsaT4gPC9yZGY6QWx0 PiA8L2RjOnRpdGxlPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4g PD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb 2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOi oaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2pp aGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEw Ly4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAP8A LAAAAACyAF8AAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixokWLDSBo/HCxo8eHBkBsarbqo8mT SvCotHGypclPqCYJUYkHQgwvLnNKNEGTpc6fEceAwgMK1YcRCTa0wqOBFdCnCMHFChULFtSrCa8F YmqhoKVrryAwoShIz8FRDtEyVNvQLENOfBrCxTpRhsoDBRB28vFoxEJCIliwkPHvg4kyoIBEiWtB 2o1dL5T4/BdF8JJ/nHCRAJWA4A/B0v55ejZpF7MNBAZyWiI42b9aFZi5ymJDMAtTAwXRUOIDsjcs OA42eXYBsgkacek2ZAXohZApCgn5gPBHYR+aMZbQpMkNUZDtKh0I/3yhctAfEjRREbyh8hUWDOAr RRFICJDKWaV20dxUguYTgZSwBx4eB8RCUCM8DQiFAcox5E0AIgRSnUKIVOKEQn/Yh8cgA+IhxAEd 4uGXgAI4sZ16AwGhUgh+qKRhT/98EoBKF3y3XwM0hfLPHyDS9CIeIewg0CezbPejD580mBAIeNCA wC4N/YBHNAllSFMlS+xAQ48q6fLDDlFwqFIk/wg4Ex62kEBCZylup8EmfTCBnkoC7LHKjB7eRcIN OuCo0iL/JIjHBR/0gUIMNM0iyT8I0KREEYgU4Q1N4il5UAwB8DGLBg3xAQoUVb6IzEAJ0CQElQK1 QBOoAqq0QSMHqf+oUhCCDESIfiv9gycegSxxyUCO0MTEEWcGAEBuSNBEAAAhqAQEQYIMVROslhJU SwgV/HNAAw6hIgSDB1mJZlcCEbAVgZwMhAJNJJRJ07MIyYqHFQVNQdMGutKEQEHBqrSJM5QW9AQc cDjQRzI0/TCKJQzrAQdNhFU7EA14UPLPBBQ4BEuTCImrSa0ANouHDwRhQlMS7qpEQ0Ky+pEaQTvQ 5IQgeAoBAr80jeAnHjom9AxNrQggtNC7siDxQJnwwocktuB7ECwfLIHAApGwEELG4WqoiVv/UCLy BSWfnDIeN8frIrgDmasSCasshQckteCsEhOTqoSCQoKGqNICRwv/VIYJAgnAN0GWJABEs48EfYCG V8hgSUEec+01jWGrhLKAgejA8opHFITJmVVw4vYESRLULx5eIKoSTgn1p9IVkcQuOwK0r9x3JUaX CepAyCT7gjGb1FIrH4SA48wFeJQx30CRDzT5oJXjcblKmW/+Z0GlquRIvnhMQIjceOzgAE3OFESD E1c4gYk0/vW9UCC4CNRAAAIdAQUebAiJ0CL3qwRFcDvSmuS+Fr3p8UpzZlMJ4AiiAfJxz3vg20E0 aBKEgtgID51gkkpiUBAQxCAGJiiF+zCQrX9QjADywMAE2HSQULgCDy9AhQ2w8Ao21Kp5IaPcQExm uZRVL4EqqcD3/wjBAppgwACcwBMETUeTJkhCE/fKSwEeppIq/EMSNhKCNIIzig/0iBe/6tsNymCW DM2oBFY5yCpwdIMDzCIv/wAYIgKokq05j4A7FBvmEBgrlZypFRdwm0qMJiOVLBFYOfpHNM6FhwAE kiZ+2IRAUHACmtjiAtLKlfsmqAkNJEsI/0FIKXyAB+hgYgInaEAFdKGJPfwDEWc6ANcYQZMyEMQT FPwHKVWSBeuFAAEi244jzEIISKikEt8jiKB8QgMIdEgW9BqIDSbQoUdAx30CiQYQJrEAXOChBQjZ BARaUYSBGAABragEFET4D1hA4QY3KAHIXpkEeD6DIKWA5w32Ff8JeJKgc0DUwQiqIAs/AMIH/hiI BTQAzyuQayAV0KckBWKKDewCA37AgAAawAiD9IECoACEH06gC0eUE5sHwVHZCPKBEFwAbbl5KF3k NVEAEAARybkIJ1hBgFu4MiF6QAQBjiBTlBbEAi8YRDMIUqoqJBObNDWqVBGCCAG8ghyNMEWjTFAS o0ZVIZ0gAAGaYZZSiLUUi7qIBcS6rKd8QqwWqwgAGtiiE4hgqv9IAk30l5AL+MEPleiDHg7w1wA8 tSKL+KsfBvePSxCCEKX7iAz+OoiOoMAZP4CpUSmgJhK8LCHkAZJgxQSJw1LEBjTZ3j8sEQRb2AIU APRI9mSBV4n/TUIlJxDsAUIQglaYdiJj4G0I7vmPPejCRdTyiDBUAoHaVuu2eDhBJ/5xC1OYohM5 rYgFrGuKNO5BACqBRHI7stya6IQItDBEChwyAFpkoyApoMUM7HGSYIRBFQaB7gkAuhBJAACJBSFE H8abEPDWpKgCsYQBEBHGhDQCEcksb3NbsoIMcIEUZJhGB1Ygh0Qkgg7Z+IaHE/GNf8jhAaS4w0B+ kY4zYBgNblABfgWyjRHXgCAcSIeH3/CPe3g4HQOoQTnsQAY0bEEBBNEvKySxAA1oIBOjwEEMnAxO VLzgFYAQAAWSdIsSBAAQEPDBFNLqCSdr4BoE0MAVNPQIIGgA/wEgA8ECBFAJQLTiCk04yA9uAAFA BCAGjGgCc1tiiAfk4dCI3gIdEB2GCCA6AmJA9DEEIoY0IPrS4/iFQMSB6HsQxB5fOLQdBlCNQ3dh GZdGdBwGol/BygK3e/gDTUzAjQF5YxOCpEkJ4oJalTzjAyGagFmMEcztYE0go3DddgaBgJlM+COk vnQd5nDoUOehEIYYwqHTkI9Lc+EfqEY0NKZh7TzYgRr/YAeiRUGQVJzi0IoYwCG2bep+kOHS2hBI q/XgtkHswQDwia6LwBPwSoCHJaHQVxFaEYAWeSgArWiXCLZzAC7hoYT/GB9NIEHn7TzbIzVANBki sAIOaIELiP/GtrYvjQZ3hOMev7B0HuaRA3ukgBpmQPQa/qGCdbf73XmI97wR3YFupGAG6UD0O+jr AdwKtt//DjiBbPCHIuxSJcwoggGiYWA88C3he5PEJWDRI1nc4hIWAMG5XOEFC1iACT0KgeaehwcH AMASffjZoE1CD0SrgCAMsLbKL50PWgzEBYiGAY7PgGgJ6MPnA3E3vOWNaHQQZADDePQ/mh7dp5cn 6tRD1T8WQRO5844mVgQ7HjIhED0YGBJwTAkeMNDRgcTiTPiqwKwLIqCPXyQF1M4DKYBRkMxfO9uI 7kIuBsIBRRx6+AXJAKL3QQzIC0TyQaf8obdRkOofuh2bdzr/vz8PcJUggWtqI0pONYiHdpFeJawv 7uthdQk8lYEVnch/J3QgphfwoX94wBEEgTDm9RHB0AWHdgZEUBBJd3wrlwdbQBAzYG3HMAAFEXKH 1gE5YH3/gH1Cd2jKIAEF4QuI1gbh13njtyGgB0MEwQiPoEMCgUtrM3o0EX/fFV6wkn4jdQI8eAIY cC4QYABlcDYFMQJ75xHBUA8JuIAE0QuHNniHBgYEYQ2FcGjDYBAKgGg9sA8cqApA94F5QAbLN4Uy hw8nmFsp6G/lB0M55YIwKBrsQoPwJxA3+Dawwn56oxI6IC0QAEcDoUG+ZxHN93zERxBr8ITId2j8 IIHWxgUW/0gQ50B0G3ho7DYQRoCA2Td0IVgQDFCCZ+h5KriG/jcQbgg9AyGD7SeHq0eH8/cPjOBw AoAFLTCLs4gFthgFBRBaJ+AUBMEER+gRd4BoOUAQ1HBvDkh0OBZ8ZNANBREHwuh9eSAGBCEByjB5 Q5cH51AQjnZo6vCJabiCoygQpQg2pxiH77eK8sdccVN/KuEKC9FAKsFCAuFNBfgRMIBoaEAFAmEN hoaID9gBBfEGiJYBBKEKwZcGM/CAbkAQ92iNiFYNBVEOiLYO3gh1otiGL2iKMWiONciKLgJAqiME AigQfKAEF+ADGQMwKnEDOSUI0BWIFgEM0IBoaRAPw4ANl/8GhXkAkATBA1WYB1/ADrmgCr5wiIdm Bv/wCzQpBjwgBSqAkw6JaOlADapADYgnakZQkeQXcOHoihlJjhs5g+cYf5aQLHtDAzYwAn9EAwBA CCgAj3ggDP8AAMa0QQRACASgOvX4EQpgjJd2DEOnkzxJEJyGaKSABtI2A//AAdNwaWkgc5gIhjL3 BWhQbnmQb/+wbxbJlRj5hqjofh0pEK2iErzwD1QUXmKiEkowEPS4IoOQkS0CkxfBAImAiacAD7nQ AYi4jXkQDgcBA355afEgBQOxDZZ5aCrgBqamfV8gCjOZagQZODRxC3rwCri1CohAE0iQUwRAE+74 hzRBMr3/hgccJBA2UElAUytwUGyz1mAZNyAkpBJ+oBOpwAAMEAwC0YBfQAsM0AP+mY0HQQ3L4AZz UAdcQA8RsF4E8QsuwAV1cAbuoI/s4J/L8A9bgGjWMAPhYA51MA5qoI8DYQwN0AAIgAOS4AAjSgF6 UAAIMKIYN5eRMKJ3NRCIMKINcBl9MqLkcEsO4A1QAAQbADKesAEXcAC88AIlYCAG8QExAAqt4Aol AAKXEKNO8xE1EA5YqmkEgXJ5UAccABEcwAFMiBADwAEKahDFgGi+IBBlOqbOpVAWkFYJMQoWwDU5 MYl5wAWK+Q8DcA+IxmPKkaaHtqZvWqgCwQHHgGh2sAVqsJCoh4YGIhioamqolCoBxpdqeXAMDKAk EnloWkqphZoCHXYGdoAGZ2AGOfClSqICvdCqewqqsBqrsjqrtFqrtnqruJqrurqrvNqrvvqrwBqs wjqsxFqsxnqsyJqsyrqszNqszvqs0Bqt0jqt1Fqt1nqt2Jqt2rqt3Nqt3vqt4Bqu4jqu5Fqu5nqu 6Jqu6rqu7Nqu7vqu8Bqv8jqv9Fqv9nqv+Jqv+rqv/Nqv/vqv3RoQADsNCg== --001a11c16f189b57e40559b931cc--