FAQ
Lease monitor does not own the LeaseManager lock in changing leases.
--------------------------------------------------------------------

Key: HADOOP-4951
URL: https://issues.apache.org/jira/browse/HADOOP-4951
Project: Hadoop Core
Issue Type: Bug
Components: dfs
Affects Versions: 0.18.2
Reporter: Tsz Wo (Nicholas), SZE
Assignee: Tsz Wo (Nicholas), SZE


In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Search Discussions

  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 29, 2008 at 8:19 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tsz Wo (Nicholas), SZE updated HADOOP-4951:
    -------------------------------------------

    Attachment: 4951_20081229.patch

    4951_20081229.patch: acquire the LeaseManager lock but not the Monitor lock
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Attachments: 4951_20081229.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 29, 2008 at 11:08 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tsz Wo (Nicholas), SZE updated HADOOP-4951:
    -------------------------------------------

    Attachment: 4951_20081229b.patch

    4951_20081229b.patch: acquire the lock in checkLeases()
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Attachments: 4951_20081229.patch, 4951_20081229b.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Raghu Angadi (JIRA) at Dec 29, 2008 at 11:12 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659688#action_12659688 ]

    Raghu Angadi commented on HADOOP-4951:
    --------------------------------------

    Fix looks fine. I think it is better to properly indent the code even if it means a bigger patch.

    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Attachments: 4951_20081229.patch, 4951_20081229b.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Raghu Angadi (JIRA) at Dec 29, 2008 at 11:14 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659689#action_12659689 ]

    Raghu Angadi commented on HADOOP-4951:
    --------------------------------------

    or you could move checkLeases() to LeaseMonitor class (where it actually belongs).
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Attachments: 4951_20081229.patch, 4951_20081229b.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 29, 2008 at 11:26 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tsz Wo (Nicholas), SZE updated HADOOP-4951:
    -------------------------------------------

    Attachment: 4951_20081229c.patch
    or you could move checkLeases() to LeaseMonitor class (where it actually belongs).
    You are right. I should move it out.

    4951_20081229c.patch: moved checkLeases() and synchronized toString().
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Raghu Angadi (JIRA) at Dec 29, 2008 at 11:42 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659694#action_12659694 ]

    Raghu Angadi commented on HADOOP-4951:
    --------------------------------------

    +1. Looks good.
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 30, 2008 at 12:12 am
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tsz Wo (Nicholas), SZE updated HADOOP-4951:
    -------------------------------------------

    Priority: Blocker (was: Major)
    Hadoop Flags: [Reviewed]

    {noformat}
    [exec] -1 overall.
    [exec]
    [exec] +1 @author. The patch does not contain any @author tags.
    [exec]
    [exec] -1 tests included. The patch doesn't appear to include any new or modified tests.
    [exec] Please justify why no tests are needed for this patch.
    [exec]
    [exec] +1 javadoc. The javadoc tool did not generate any warning messages.
    [exec]
    [exec] +1 javac. The applied patch does not increase the total number of javac compiler warnings.
    [exec]
    [exec] +1 findbugs. The patch does not introduce any new Findbugs warnings.
    [exec]
    [exec] +1 Eclipse classpath. The patch retains Eclipse classpath integrity.
    {noformat}

    No new tests added since I don't know how to create a meaningful test for this.
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 30, 2008 at 12:32 am
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tsz Wo (Nicholas), SZE updated HADOOP-4951:
    -------------------------------------------

    Attachment: 4951_20081229c_0.18.patch

    4951_20081229c_0.18.patch: for 0.18
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 30, 2008 at 12:56 am
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tsz Wo (Nicholas), SZE updated HADOOP-4951:
    -------------------------------------------

    Attachment: 4951_20081229c_0.19.patch

    4951_20081229c_0.19.patch: for 0.19
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 30, 2008 at 2:00 am
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659727#action_12659727 ]

    Tsz Wo (Nicholas), SZE commented on HADOOP-4951:
    ------------------------------------------------

    Tested locally. Only TestMapReduceLocal failed but it is not related to this. See HADOOP-4907.
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 30, 2008 at 2:58 am
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Tsz Wo (Nicholas), SZE resolved HADOOP-4951.
    --------------------------------------------

    Resolution: Fixed
    Fix Version/s: 0.18.3

    I just committed this.
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Fix For: 0.18.3

    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Koji Noguchi (JIRA) at Dec 30, 2008 at 5:01 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659850#action_12659850 ]

    Koji Noguchi commented on HADOOP-4951:
    --------------------------------------

    Nicholas, could you attach the stack trace you observed?
    And what is the effect of this bug?

    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Fix For: 0.18.3

    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Konstantin Shvachko (JIRA) at Dec 30, 2008 at 6:08 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659875#action_12659875 ]

    Konstantin Shvachko commented on HADOOP-4951:
    ---------------------------------------------

    This is the exception and the stack trace.
    {code}
    Exception in thread "org.apache.hadoop.dfs.LeaseManager$Monitor@3dbe8711"
    java.util.ConcurrentModificationException
    at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1100)
    at java.util.TreeMap$KeyIterator.next(TreeMap.java:1154)
    at org.apache.hadoop.dfs.LeaseManager$Monitor.checkLeases(LeaseManager.java:370)
    at org.apache.hadoop.dfs.LeaseManager$Monitor.run(LeaseManager.java:346)
    at java.lang.Thread.run(Thread.java:619)
    {code}
    Another problem with this issue is that the name-node was running without lease monitor as if nothing happened. As a result, a lot of abandoned files have not been garbage collected.
    This patch fixes the {{ConcurrentModificationException}} but does not fix the problem of NN running without the lease monitor. I'll file another jira for that.
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Fix For: 0.18.3

    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Tsz Wo (Nicholas), SZE (JIRA) at Dec 30, 2008 at 7:20 pm
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12659899#action_12659899 ]

    Tsz Wo (Nicholas), SZE commented on HADOOP-4951:
    ------------------------------------------------
    And what is the effect of this bug?
    The LeaseManager lock is used to protect the lease related data structures. So the bug leads to a race condition on the leases.
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Fix For: 0.18.3

    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Konstantin Shvachko (JIRA) at Dec 31, 2008 at 2:53 am
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Konstantin Shvachko reopened HADOOP-4951:
    -----------------------------------------


    This did not fix the ConcurrentModificationException. Although it corrected the synchronization problem.
    The exception now looks as
    {code}
    Exception in thread "org.apache.hadoop.dfs.LeaseManager$Monitor@2244d990" java.util.ConcurrentModificationException
    at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1100)
    at java.util.TreeMap$KeyIterator.next(TreeMap.java:1154)
    at org.apache.hadoop.dfs.LeaseManager.checkLeases(LeaseManager.java:371)
    at org.apache.hadoop.dfs.LeaseManager.access$800(LeaseManager.java:51)
    at org.apache.hadoop.dfs.LeaseManager$Monitor.run(LeaseManager.java:346)
    at java.lang.Thread.run(Thread.java:619)
    {code}

    Looks like the problem is that {{internalReleaseLease()}} finalizes empty files, which removes these file path names from the lease. So this modifies the Collection of file names which we are iterating on.
    An additional patch need to be supplied.
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Fix For: 0.18.3

    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Konstantin Shvachko (JIRA) at Dec 31, 2008 at 2:55 am
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Konstantin Shvachko updated HADOOP-4951:
    ----------------------------------------

    Attachment: CMEinLeaseRecovery-0-18.patch
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Fix For: 0.18.3

    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch, CMEinLeaseRecovery-0-18.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.
  • Konstantin Shvachko (JIRA) at Dec 31, 2008 at 2:57 am
    [ https://issues.apache.org/jira/browse/HADOOP-4951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Konstantin Shvachko resolved HADOOP-4951.
    -----------------------------------------

    Resolution: Fixed

    It will be easier to track changes if I open a new issue. Closing this one.
    Lease monitor does not own the LeaseManager lock in changing leases.
    --------------------------------------------------------------------

    Key: HADOOP-4951
    URL: https://issues.apache.org/jira/browse/HADOOP-4951
    Project: Hadoop Core
    Issue Type: Bug
    Components: dfs
    Affects Versions: 0.18.2
    Reporter: Tsz Wo (Nicholas), SZE
    Assignee: Tsz Wo (Nicholas), SZE
    Priority: Blocker
    Fix For: 0.18.3

    Attachments: 4951_20081229.patch, 4951_20081229b.patch, 4951_20081229c.patch, 4951_20081229c_0.18.patch, 4951_20081229c_0.19.patch, CMEinLeaseRecovery-0-18.patch


    In Monitor.checkLeases(), the monitor thread does not own the LeaseManager lock but it may modify the leases.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcommon-dev @
categorieshadoop
postedDec 29, '08 at 8:09p
activeDec 31, '08 at 2:57a
posts18
users1
websitehadoop.apache.org...
irc#hadoop

1 user in discussion

Konstantin Shvachko (JIRA): 18 posts

People

Translate

site design / logo © 2022 Grokbase