[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Yu updated HBASE-11405: --- Attachment: 11405-0.98-v2.patch Rebased patch for 0.98 Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Fix For: 2.0.0, 0.98.7, 0.99.1, 0.94.25 Attachments: 11405-0.98-v2.patch, 11405-1.0.txt, 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, 11405v7.patch, HBASE-11405-0.94.patch.txt, HBASE-11405-0.98.patch.txt, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Sean Busbey updated HBASE-11405: Attachment: HBASE-11405-0.94.patch.txt HBASE-11405-0.98.patch.txt Here's an amended version specific to each of 0.98 and 0.94 that works under profiles for hadoop 1.0, 1.1, and 2.x. Due to the amount of change, I added an Amending-Author to the commit message. I've run through {{-Dtest=TestHBaseFsck}} for the above profiles and {{-PrunSmallTests}} for whatever the default profile is on each branch. NB running TestHBaseFsck on 0.94 required {{-PlocalTests}}. Fixing this involved exposing a previously private method for HBaseTestingUtility under 0.94. Since nothing else needed it in 0.98 I marked it deprecated with a note that it would disappear with Hadoop 1.x support. Since the method isn't in branch-1 or later, that should work out well. One worry: some of the TestHBaseFsck tests get a bit flaky on 0.94 with this change on my laptop (which admittedly is underpowered). However, even leaving in a single retry period causes the parallel test to fail because the first invocation finished in 1 sec. Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Fix For: 2.0.0, 0.98.7, 0.99.1, 0.94.25 Attachments: 11405-1.0.txt, 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, 11405v7.patch, HBASE-11405-0.94.patch.txt, HBASE-11405-0.98.patch.txt, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-11405: -- Fix Version/s: (was: 0.94.24) 0.94.25 Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Fix For: 2.0.0, 0.98.7, 0.99.1, 0.94.25 Attachments: 11405-1.0.txt, 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, 11405v7.patch, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Yu updated HBASE-11405: --- Attachment: 11405-1.0.txt Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Fix For: 2.0.0 Attachments: 11405-1.0.txt, 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, 11405v7.patch, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrew Purtell updated HBASE-11405: --- Fix Version/s: 0.94.24 0.98.7 Reopened and updated fix versions Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Fix For: 2.0.0, 0.98.7, 0.94.24, 0.99.1 Attachments: 11405-1.0.txt, 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, 11405v7.patch, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] bharath v updated HBASE-11405: -- Attachment: 11405v7.patch v7 - Addressed Sean's comments on the RB. - Few minor changes Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Fix For: 2.0.0, 0.99.1 Attachments: 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, 11405v7.patch, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jonathan Hsieh updated HBASE-11405: --- Fix Version/s: (was: 0.99.1) Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Fix For: 2.0.0 Attachments: 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, 11405v7.patch, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jonathan Hsieh updated HBASE-11405: --- Resolution: Fixed Fix Version/s: 0.99.1 2.0.0 Hadoop Flags: Reviewed Status: Resolved (was: Patch Available) thanks bharath, and thanks sean and ted for reviews. committed to branch-1 and master. Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Fix For: 2.0.0, 0.99.1 Attachments: 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] bharath v updated HBASE-11405: -- Attachment: 11405-v5.patch Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Attachments: 11405-v3.txt, 11405-v5.patch, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] bharath v updated HBASE-11405: -- Attachment: 11405-v6.patch v6 summary - Moved unlockHbck() from exec() to onlineHbck() method, since some of the tests directly call onlineHbck() rather than going via exec. This makes sure we cleanup the lock in tests - Small bug in compareAndSet(), misread the doc, fixed it, also setting it to (false) inside the block to make sure tests using the same HBck object doesn't fail. Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Attachments: 11405-v3.txt, 11405-v5.patch, 11405-v6.patch, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jonathan Hsieh updated HBASE-11405: --- Attachment: hbase-11405.rebase.140911.patch attached updated patch with minor imports fixes. Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Attachments: HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Yu updated HBASE-11405: --- Attachment: 11405-v3.txt Patch v3 removes the Runtime.getRuntime().exit() call. IOE is thrown instead. Test case is adjusted accordingly. Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Attachments: 11405-v3.txt, HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1, hbase-11405.rebase.140911.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] bharath v updated HBASE-11405: -- Attachment: HBASE-11405-trunk-rebased.patch Rebased the patch to trunk. Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Assignee: bharath v Attachments: HBASE-11405-trunk-rebased.patch, HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1 This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] bharath v updated HBASE-11405: -- Attachment: HBASE-11405-trunk.patch This patch creates a file in rootdir/tmpdir and maintains a lease on it till hbck exits. Parallel instances of hbck check if such a file exists and bail out if necessary. Added a shutdownhook() to this class to clean up the lock file incase user kills hbck with a SIGTERM. I make sure that the cleanup is done only once using a flag. Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Attachments: HBASE-11405-trunk.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] bharath v updated HBASE-11405: -- Status: Patch Available (was: Open) Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Attachments: HBASE-11405-trunk.patch This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Updated] (HBASE-11405) Multiple invocations of hbck in parallel disables balancer permanently
[ https://issues.apache.org/jira/browse/HBASE-11405?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] bharath v updated HBASE-11405: -- Attachment: HBASE-11405-trunk.patch.1 v1 addresses comments from Ted. Multiple invocations of hbck in parallel disables balancer permanently --- Key: HBASE-11405 URL: https://issues.apache.org/jira/browse/HBASE-11405 Project: HBase Issue Type: Bug Components: Balancer, hbck Affects Versions: 0.99.0 Reporter: bharath v Attachments: HBASE-11405-trunk.patch, HBASE-11405-trunk.patch.1 This is because of the following piece of code in hbck {code:borderStyle=solid} boolean oldBalancer = admin.setBalancerRunning(false, true); try { onlineConsistencyRepair(); } finally { admin.setBalancerRunning(oldBalancer, false); } {code} Newer invocations set oldBalancer to false as it was disabled by previous invocations and this disables balancer permanently unless its manually turned on by the user. Easy to reproduce, just run hbck 100 times in a loop in 2 different sessions and you can see that balancer is set to false in the HMaster logs. -- This message was sent by Atlassian JIRA (v6.2#6252)