{"action":"created","comment":{"url":"https://api.github.com/repos/greenplum-db/diskquota/pulls/comments/237733014","pull_request_review_id":180103876,"id":237733014,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzNzczMzAxNA==","diff_hunk":"@@ -244,6 +283,192 @@ disk_quota_worker_main(Datum main_arg)\n \tproc_exit(1);\n }\n \n+/**\n+ * create table to record the list of monitored databases\n+ */\n+static void\n+create_monitor_db_table()\n+{\n+\tconst char *sql;\n+\tsql = \"create schema if not exists diskquota_catalog;\"\n+\t\t\"create table if not exists diskquota_catalog.database_list(dbid oid not null unique);\";\n+\tpg_usleep(4*1000*1000);\n+\texec_simple_utility(sql);\n+}\n+static inline void\n+exec_simple_utility(const char *sql)\n+{\n+\tStartTransactionCommand();\n+\texec_simple_query_(sql, SPI_OK_UTILITY);\n+\tCommitTransactionCommand();\n+}\n+static void\n+exec_simple_query_(const char *sql, int expected_code)\n+{\n+\tint ret;\n+\n+\tret = SPI_connect();\n+\tif (ret != SPI_OK_CONNECT)\n+\t\telog(ERROR, \"connect error, code=%d\", ret);\n+\tPushActiveSnapshot(GetTransactionSnapshot());\n+\tret = SPI_execute(sql, false, 0);\n+\tif (ret != expected_code)\n+\t\telog(ERROR, \"sql:'%s', code %d\", sql, ret);\n+\tSPI_finish();\n+\tPopActiveSnapshot();\n+}\n+static bool\n+is_valid_dbid(Oid dbid)\n+{\n+\tHeapTuple\ttuple;\n+\tRelation\trelation;\n+\tSysScanDesc scan;\n+\tScanKeyData key[1];\n+\tbool ok;\n+\n+\tif (dbid == InvalidOid)\n+\t\treturn false;\n+\t/*\n+\t * form a scan key\n+\t */\n+\tScanKeyInit(&key[0],\n+\t\t\t\tAnum_pg_database_oid,\n+\t\t\t\tBTEqualStrategyNumber, F_OIDEQ,\n+\t\t\t\tObjectIdGetDatum(dbid));\n+\n+\t/*\n+\t * Open pg_database and fetch a tuple.  Force heap scan if we haven't yet\n+\t * built the critical shared relcache entries (i.e., we're starting up\n+\t * without a shared relcache cache file).\n+\t */\n+\trelation = heap_open(DatabaseRelationId, AccessShareLock);\n+\tscan = systable_beginscan(relation, DatabaseOidIndexId,\n+\t\t\t\t\t\t\t  criticalSharedRelcachesBuilt,\n+\t\t\t\t\t\t\t  NULL,\n+\t\t\t\t\t\t\t  1, key);\n+\n+\ttuple = systable_getnext(scan);\n+\n+\t/* Must copy tuple before releasing buffer */\n+\tok = HeapTupleIsValid(tuple);\n+\n+\t/* all done */\n+\tsystable_endscan(scan);\n+\theap_close(relation, AccessShareLock);\n+\n+\treturn ok;\n+}\n+/*\n+ * in early stage, start all worker processes of diskquota-enabled databases\n+ * from diskquota_catalog.database_list\n+ */\n+static void\n+start_workers_from_dblist()\n+{\n+\tTupleDesc tupdesc;\n+\tOid fake_dbid[128];\n+\tint fake_count = 0;\n+\tint num = 0;\n+\tint ret;\n+\tint i;\n+\tStartTransactionCommand();\n+\tPushActiveSnapshot(GetTransactionSnapshot());\n+\tret = SPI_connect();\n+\tif (ret != SPI_OK_CONNECT)\n+\t\telog(ERROR, \"connect error, code=%d\", ret);\n+\tret = SPI_execute(\"select dbid from diskquota_catalog.database_list;\", false, 0);\n+\tif (ret != SPI_OK_SELECT)\n+\t\telog(ERROR, \"select diskquota_catalog.database_list\");\n+\ttupdesc = SPI_tuptable->tupdesc;\n+\tif (tupdesc->natts != 1 || tupdesc->attrs[0].atttypid != OIDOID)\n+\t{\n+\t\telog(ERROR, \"bad type\");\n+\t}\n+\tfor (i=0; num<SPI_processed; i++)\n+\t{\n+\t\tHeapTuple tup;\n+\t\tOid dbid;\n+\t\tDatum dat;\n+\t\tbool isnull;\n+\n+\t    tup\t= SPI_tuptable->vals[i];\n+\t\tdat = SPI_getbinval(tup, tupdesc, 1, &isnull);\n+\t\tif (isnull)\n+\t\t{\n+\t\t\telog(ERROR, \"dbid cann't be null\");\n+\t\t}\n+\t\tdbid = DatumGetObjectId(dat);\n+\t\tif (!is_valid_dbid(dbid))\n+\t\t{\n+\t\t\tfake_dbid[fake_count++] = dbid;\n+\t\t\tcontinue;\n+\t\t}\n+\t\tif (start_worker_id(dbid)<1)\n+\t\t{\n+\t\t\telog(WARNING, \"[diskquota]: start worker process of database(%d) failed\", dbid);\n+\t\t}\n+\t\tnum++;\n+\t}\n+\tnum_db = num;\n+\tSPI_finish();\n+\tPopActiveSnapshot();\n+\tCommitTransactionCommand();\n+\n+\t// TODO: clean invalid database\n+\n+}\n+static bool\n+add_db_to_config(Oid dbid)\n+{\n+\tStringInfoData str;\n+\tif (num_db >=10 || !is_valid_dbid(dbid))\n+\t\treturn false;\n+\n+\tinitStringInfo(&str);\n+\tappendStringInfo(&str, \"insert into diskquota_catalog.database_list values(%d);\", dbid);\n+\texec_simple_query_(str.data, SPI_OK_INSERT);\n+\treturn true;\n+}\n+static void\n+del_db_from_config(Oid dbid)\n+{\n+\tchar str[128];\n+\tsnprintf(str, sizeof(str), \"delete from diskquota_catalog.database_list where dbid=%d;\", dbid);\n+\texec_simple_query_(str, SPI_OK_DELETE);\n+}\n+static void\n+try_kill_db_worker(Oid dbid)\n+{\n+\tDiskQuotaWorkerEntry *hash_entry;\n+\tbool found;\n+\thash_entry = (DiskQuotaWorkerEntry *)hash_search(disk_quota_worker_map,","path":"diskquota.c","position":337,"original_position":337,"commit_id":"9479faf97fc0165f793486d33e0fcd2c22b0184f","original_commit_id":"9479faf97fc0165f793486d33e0fcd2c22b0184f","user":{"login":"zhangh43","id":10432876,"node_id":"MDQ6VXNlcjEwNDMyODc2","avatar_url":"https://avatars2.githubusercontent.com/u/10432876?v=4","gravatar_id":"","url":"https://api.github.com/users/zhangh43","html_url":"https://github.com/zhangh43","followers_url":"https://api.github.com/users/zhangh43/followers","following_url":"https://api.github.com/users/zhangh43/following{/other_user}","gists_url":"https://api.github.com/users/zhangh43/gists{/gist_id}","starred_url":"https://api.github.com/users/zhangh43/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zhangh43/subscriptions","organizations_url":"https://api.github.com/users/zhangh43/orgs","repos_url":"https://api.github.com/users/zhangh43/repos","events_url":"https://api.github.com/users/zhangh43/events{/privacy}","received_events_url":"https://api.github.com/users/zhangh43/received_events","type":"User","site_admin":false},"body":"HASH-REMOVE return a dangling pointer, better to HASH_FIND first to kill the worker and then HASH_REMOVE.","created_at":"2018-11-30T03:06:04Z","updated_at":"2018-11-30T03:16:25Z","html_url":"https://github.com/greenplum-db/diskquota/pull/2#discussion_r237733014","pull_request_url":"https://api.github.com/repos/greenplum-db/diskquota/pulls/2","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/greenplum-db/diskquota/pulls/comments/237733014"},"html":{"href":"https://github.com/greenplum-db/diskquota/pull/2#discussion_r237733014"},"pull_request":{"href":"https://api.github.com/repos/greenplum-db/diskquota/pulls/2"}}},"pull_request":{"url":"https://api.github.com/repos/greenplum-db/diskquota/pulls/2","id":234849732,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM0ODQ5NzMy","html_url":"https://github.com/greenplum-db/diskquota/pull/2","diff_url":"https://github.com/greenplum-db/diskquota/pull/2.diff","patch_url":"https://github.com/greenplum-db/diskquota/pull/2.patch","issue_url":"https://api.github.com/repos/greenplum-db/diskquota/issues/2","number":2,"state":"open","locked":false,"title":"enable/disable diskquota dynamically","user":{"login":"gfphoenix78","id":37101401,"node_id":"MDQ6VXNlcjM3MTAxNDAx","avatar_url":"https://avatars0.githubusercontent.com/u/37101401?v=4","gravatar_id":"","url":"https://api.github.com/users/gfphoenix78","html_url":"https://github.com/gfphoenix78","followers_url":"https://api.github.com/users/gfphoenix78/followers","following_url":"https://api.github.com/users/gfphoenix78/following{/other_user}","gists_url":"https://api.github.com/users/gfphoenix78/gists{/gist_id}","starred_url":"https://api.github.com/users/gfphoenix78/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gfphoenix78/subscriptions","organizations_url":"https://api.github.com/users/gfphoenix78/orgs","repos_url":"https://api.github.com/users/gfphoenix78/repos","events_url":"https://api.github.com/users/gfphoenix78/events{/privacy}","received_events_url":"https://api.github.com/users/gfphoenix78/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-11-30T02:16:15Z","updated_at":"2018-11-30T03:16:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2da39e5932f72fa8dac4560b2fa49a522d1b42ff","assignee":null,"assignees":[],"requested_reviewers":[{"login":"HaozhouWang","id":17537131,"node_id":"MDQ6VXNlcjE3NTM3MTMx","avatar_url":"https://avatars2.githubusercontent.com/u/17537131?v=4","gravatar_id":"","url":"https://api.github.com/users/HaozhouWang","html_url":"https://github.com/HaozhouWang","followers_url":"https://api.github.com/users/HaozhouWang/followers","following_url":"https://api.github.com/users/HaozhouWang/following{/other_user}","gists_url":"https://api.github.com/users/HaozhouWang/gists{/gist_id}","starred_url":"https://api.github.com/users/HaozhouWang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HaozhouWang/subscriptions","organizations_url":"https://api.github.com/users/HaozhouWang/orgs","repos_url":"https://api.github.com/users/HaozhouWang/repos","events_url":"https://api.github.com/users/HaozhouWang/events{/privacy}","received_events_url":"https://api.github.com/users/HaozhouWang/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/greenplum-db/diskquota/pulls/2/commits","review_comments_url":"https://api.github.com/repos/greenplum-db/diskquota/pulls/2/comments","review_comment_url":"https://api.github.com/repos/greenplum-db/diskquota/pulls/comments{/number}","comments_url":"https://api.github.com/repos/greenplum-db/diskquota/issues/2/comments","statuses_url":"https://api.github.com/repos/greenplum-db/diskquota/statuses/9479faf97fc0165f793486d33e0fcd2c22b0184f","head":{"label":"greenplum-db:master_switch","ref":"master_switch","sha":"9479faf97fc0165f793486d33e0fcd2c22b0184f","user":{"login":"greenplum-db","id":14097842,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MDk3ODQy","avatar_url":"https://avatars2.githubusercontent.com/u/14097842?v=4","gravatar_id":"","url":"https://api.github.com/users/greenplum-db","html_url":"https://github.com/greenplum-db","followers_url":"https://api.github.com/users/greenplum-db/followers","following_url":"https://api.github.com/users/greenplum-db/following{/other_user}","gists_url":"https://api.github.com/users/greenplum-db/gists{/gist_id}","starred_url":"https://api.github.com/users/greenplum-db/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/greenplum-db/subscriptions","organizations_url":"https://api.github.com/users/greenplum-db/orgs","repos_url":"https://api.github.com/users/greenplum-db/repos","events_url":"https://api.github.com/users/greenplum-db/events{/privacy}","received_events_url":"https://api.github.com/users/greenplum-db/received_events","type":"Organization","site_admin":false},"repo":{"id":156317918,"node_id":"MDEwOlJlcG9zaXRvcnkxNTYzMTc5MTg=","name":"diskquota","full_name":"greenplum-db/diskquota","private":false,"owner":{"login":"greenplum-db","id":14097842,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MDk3ODQy","avatar_url":"https://avatars2.githubusercontent.com/u/14097842?v=4","gravatar_id":"","url":"https://api.github.com/users/greenplum-db","html_url":"https://github.com/greenplum-db","followers_url":"https://api.github.com/users/greenplum-db/followers","following_url":"https://api.github.com/users/greenplum-db/following{/other_user}","gists_url":"https://api.github.com/users/greenplum-db/gists{/gist_id}","starred_url":"https://api.github.com/users/greenplum-db/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/greenplum-db/subscriptions","organizations_url":"https://api.github.com/users/greenplum-db/orgs","repos_url":"https://api.github.com/users/greenplum-db/repos","events_url":"https://api.github.com/users/greenplum-db/events{/privacy}","received_events_url":"https://api.github.com/users/greenplum-db/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/greenplum-db/diskquota","description":"PostgreSQL disk quota extension","fork":false,"url":"https://api.github.com/repos/greenplum-db/diskquota","forks_url":"https://api.github.com/repos/greenplum-db/diskquota/forks","keys_url":"https://api.github.com/repos/greenplum-db/diskquota/keys{/key_id}","collaborators_url":"https://api.github.com/repos/greenplum-db/diskquota/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/greenplum-db/diskquota/teams","hooks_url":"https://api.github.com/repos/greenplum-db/diskquota/hooks","issue_events_url":"https://api.github.com/repos/greenplum-db/diskquota/issues/events{/number}","events_url":"https://api.github.com/repos/greenplum-db/diskquota/events","assignees_url":"https://api.github.com/repos/greenplum-db/diskquota/assignees{/user}","branches_url":"https://api.github.com/repos/greenplum-db/diskquota/branches{/branch}","tags_url":"https://api.github.com/repos/greenplum-db/diskquota/tags","blobs_url":"https://api.github.com/repos/greenplum-db/diskquota/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/greenplum-db/diskquota/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/greenplum-db/diskquota/git/refs{/sha}","trees_url":"https://api.github.com/repos/greenplum-db/diskquota/git/trees{/sha}","statuses_url":"https://api.github.com/repos/greenplum-db/diskquota/statuses/{sha}","languages_url":"https://api.github.com/repos/greenplum-db/diskquota/languages","stargazers_url":"https://api.github.com/repos/greenplum-db/diskquota/stargazers","contributors_url":"https://api.github.com/repos/greenplum-db/diskquota/contributors","subscribers_url":"https://api.github.com/repos/greenplum-db/diskquota/subscribers","subscription_url":"https://api.github.com/repos/greenplum-db/diskquota/subscription","commits_url":"https://api.github.com/repos/greenplum-db/diskquota/commits{/sha}","git_commits_url":"https://api.github.com/repos/greenplum-db/diskquota/git/commits{/sha}","comments_url":"https://api.github.com/repos/greenplum-db/diskquota/comments{/number}","issue_comment_url":"https://api.github.com/repos/greenplum-db/diskquota/issues/comments{/number}","contents_url":"https://api.github.com/repos/greenplum-db/diskquota/contents/{+path}","compare_url":"https://api.github.com/repos/greenplum-db/diskquota/compare/{base}...{head}","merges_url":"https://api.github.com/repos/greenplum-db/diskquota/merges","archive_url":"https://api.github.com/repos/greenplum-db/diskquota/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/greenplum-db/diskquota/downloads","issues_url":"https://api.github.com/repos/greenplum-db/diskquota/issues{/number}","pulls_url":"https://api.github.com/repos/greenplum-db/diskquota/pulls{/number}","milestones_url":"https://api.github.com/repos/greenplum-db/diskquota/milestones{/number}","notifications_url":"https://api.github.com/repos/greenplum-db/diskquota/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/greenplum-db/diskquota/labels{/name}","releases_url":"https://api.github.com/repos/greenplum-db/diskquota/releases{/id}","deployments_url":"https://api.github.com/repos/greenplum-db/diskquota/deployments","created_at":"2018-11-06T03:04:21Z","updated_at":"2018-11-26T06:57:29Z","pushed_at":"2018-11-30T02:16:16Z","git_url":"git://github.com/greenplum-db/diskquota.git","ssh_url":"git@github.com:greenplum-db/diskquota.git","clone_url":"https://github.com/greenplum-db/diskquota.git","svn_url":"https://github.com/greenplum-db/diskquota","homepage":null,"size":66,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":1,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"greenplum-db:master","ref":"master","sha":"475d5cc2e1dd2bed599189d75909e1f14ec53261","user":{"login":"greenplum-db","id":14097842,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MDk3ODQy","avatar_url":"https://avatars2.githubusercontent.com/u/14097842?v=4","gravatar_id":"","url":"https://api.github.com/users/greenplum-db","html_url":"https://github.com/greenplum-db","followers_url":"https://api.github.com/users/greenplum-db/followers","following_url":"https://api.github.com/users/greenplum-db/following{/other_user}","gists_url":"https://api.github.com/users/greenplum-db/gists{/gist_id}","starred_url":"https://api.github.com/users/greenplum-db/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/greenplum-db/subscriptions","organizations_url":"https://api.github.com/users/greenplum-db/orgs","repos_url":"https://api.github.com/users/greenplum-db/repos","events_url":"https://api.github.com/users/greenplum-db/events{/privacy}","received_events_url":"https://api.github.com/users/greenplum-db/received_events","type":"Organization","site_admin":false},"repo":{"id":156317918,"node_id":"MDEwOlJlcG9zaXRvcnkxNTYzMTc5MTg=","name":"diskquota","full_name":"greenplum-db/diskquota","private":false,"owner":{"login":"greenplum-db","id":14097842,"node_id":"MDEyOk9yZ2FuaXphdGlvbjE0MDk3ODQy","avatar_url":"https://avatars2.githubusercontent.com/u/14097842?v=4","gravatar_id":"","url":"https://api.github.com/users/greenplum-db","html_url":"https://github.com/greenplum-db","followers_url":"https://api.github.com/users/greenplum-db/followers","following_url":"https://api.github.com/users/greenplum-db/following{/other_user}","gists_url":"https://api.github.com/users/greenplum-db/gists{/gist_id}","starred_url":"https://api.github.com/users/greenplum-db/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/greenplum-db/subscriptions","organizations_url":"https://api.github.com/users/greenplum-db/orgs","repos_url":"https://api.github.com/users/greenplum-db/repos","events_url":"https://api.github.com/users/greenplum-db/events{/privacy}","received_events_url":"https://api.github.com/users/greenplum-db/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/greenplum-db/diskquota","description":"PostgreSQL disk quota extension","fork":false,"url":"https://api.github.com/repos/greenplum-db/diskquota","forks_url":"https://api.github.com/repos/greenplum-db/diskquota/forks","keys_url":"https://api.github.com/repos/greenplum-db/diskquota/keys{/key_id}","collaborators_url":"https://api.github.com/repos/greenplum-db/diskquota/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/greenplum-db/diskquota/teams","hooks_url":"https://api.github.com/repos/greenplum-db/diskquota/hooks","issue_events_url":"https://api.github.com/repos/greenplum-db/diskquota/issues/events{/number}","events_url":"https://api.github.com/repos/greenplum-db/diskquota/events","assignees_url":"https://api.github.com/repos/greenplum-db/diskquota/assignees{/user}","branches_url":"https://api.github.com/repos/greenplum-db/diskquota/branches{/branch}","tags_url":"https://api.github.com/repos/greenplum-db/diskquota/tags","blobs_url":"https://api.github.com/repos/greenplum-db/diskquota/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/greenplum-db/diskquota/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/greenplum-db/diskquota/git/refs{/sha}","trees_url":"https://api.github.com/repos/greenplum-db/diskquota/git/trees{/sha}","statuses_url":"https://api.github.com/repos/greenplum-db/diskquota/statuses/{sha}","languages_url":"https://api.github.com/repos/greenplum-db/diskquota/languages","stargazers_url":"https://api.github.com/repos/greenplum-db/diskquota/stargazers","contributors_url":"https://api.github.com/repos/greenplum-db/diskquota/contributors","subscribers_url":"https://api.github.com/repos/greenplum-db/diskquota/subscribers","subscription_url":"https://api.github.com/repos/greenplum-db/diskquota/subscription","commits_url":"https://api.github.com/repos/greenplum-db/diskquota/commits{/sha}","git_commits_url":"https://api.github.com/repos/greenplum-db/diskquota/git/commits{/sha}","comments_url":"https://api.github.com/repos/greenplum-db/diskquota/comments{/number}","issue_comment_url":"https://api.github.com/repos/greenplum-db/diskquota/issues/comments{/number}","contents_url":"https://api.github.com/repos/greenplum-db/diskquota/contents/{+path}","compare_url":"https://api.github.com/repos/greenplum-db/diskquota/compare/{base}...{head}","merges_url":"https://api.github.com/repos/greenplum-db/diskquota/merges","archive_url":"https://api.github.com/repos/greenplum-db/diskquota/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/greenplum-db/diskquota/downloads","issues_url":"https://api.github.com/repos/greenplum-db/diskquota/issues{/number}","pulls_url":"https://api.github.com/repos/greenplum-db/diskquota/pulls{/number}","milestones_url":"https://api.github.com/repos/greenplum-db/diskquota/milestones{/number}","notifications_url":"https://api.github.com/repos/greenplum-db/diskquota/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/greenplum-db/diskquota/labels{/name}","releases_url":"https://api.github.com/repos/greenplum-db/diskquota/releases{/id}","deployments_url":"https://api.github.com/repos/greenplum-db/diskquota/deployments","created_at":"2018-11-06T03:04:21Z","updated_at":"2018-11-26T06:57:29Z","pushed_at":"2018-11-30T02:16:16Z","git_url":"git://github.com/greenplum-db/diskquota.git","ssh_url":"git@github.com:greenplum-db/diskquota.git","clone_url":"https://github.com/greenplum-db/diskquota.git","svn_url":"https://github.com/greenplum-db/diskquota","homepage":null,"size":66,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":1,"license":null,"forks":1,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/greenplum-db/diskquota/pulls/2"},"html":{"href":"https://github.com/greenplum-db/diskquota/pull/2"},"issue":{"href":"https://api.github.com/repos/greenplum-db/diskquota/issues/2"},"comments":{"href":"https://api.github.com/repos/greenplum-db/diskquota/issues/2/comments"},"review_comments":{"href":"https://api.github.com/repos/greenplum-db/diskquota/pulls/2/comments"},"review_comment":{"href":"https://api.github.com/repos/greenplum-db/diskquota/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/greenplum-db/diskquota/pulls/2/commits"},"statuses":{"href":"https://api.github.com/repos/greenplum-db/diskquota/statuses/9479faf97fc0165f793486d33e0fcd2c22b0184f"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"zhangh43"}}