{"action":"created","issue":{"url":"https://api.github.com/repos/facebook/rocksdb/issues/3432","repository_url":"https://api.github.com/repos/facebook/rocksdb","labels_url":"https://api.github.com/repos/facebook/rocksdb/issues/3432/labels{/name}","comments_url":"https://api.github.com/repos/facebook/rocksdb/issues/3432/comments","events_url":"https://api.github.com/repos/facebook/rocksdb/issues/3432/events","html_url":"https://github.com/facebook/rocksdb/pull/3432","id":292451311,"node_id":"MDExOlB1bGxSZXF1ZXN0MTY1NzM3MDg3","number":3432,"title":"Abstract merge operator in Java + Thread JNI attachment automatic management + loader management for static variables","user":{"login":"publicocean0","id":2518180,"node_id":"MDQ6VXNlcjI1MTgxODA=","avatar_url":"https://avatars1.githubusercontent.com/u/2518180?v=4","gravatar_id":"","url":"https://api.github.com/users/publicocean0","html_url":"https://github.com/publicocean0","followers_url":"https://api.github.com/users/publicocean0/followers","following_url":"https://api.github.com/users/publicocean0/following{/other_user}","gists_url":"https://api.github.com/users/publicocean0/gists{/gist_id}","starred_url":"https://api.github.com/users/publicocean0/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/publicocean0/subscriptions","organizations_url":"https://api.github.com/users/publicocean0/orgs","repos_url":"https://api.github.com/users/publicocean0/repos","events_url":"https://api.github.com/users/publicocean0/events{/privacy}","received_events_url":"https://api.github.com/users/publicocean0/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"maysamyabandeh","id":1167741,"node_id":"MDQ6VXNlcjExNjc3NDE=","avatar_url":"https://avatars2.githubusercontent.com/u/1167741?v=4","gravatar_id":"","url":"https://api.github.com/users/maysamyabandeh","html_url":"https://github.com/maysamyabandeh","followers_url":"https://api.github.com/users/maysamyabandeh/followers","following_url":"https://api.github.com/users/maysamyabandeh/following{/other_user}","gists_url":"https://api.github.com/users/maysamyabandeh/gists{/gist_id}","starred_url":"https://api.github.com/users/maysamyabandeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maysamyabandeh/subscriptions","organizations_url":"https://api.github.com/users/maysamyabandeh/orgs","repos_url":"https://api.github.com/users/maysamyabandeh/repos","events_url":"https://api.github.com/users/maysamyabandeh/events{/privacy}","received_events_url":"https://api.github.com/users/maysamyabandeh/received_events","type":"User","site_admin":false},"assignees":[{"login":"maysamyabandeh","id":1167741,"node_id":"MDQ6VXNlcjExNjc3NDE=","avatar_url":"https://avatars2.githubusercontent.com/u/1167741?v=4","gravatar_id":"","url":"https://api.github.com/users/maysamyabandeh","html_url":"https://github.com/maysamyabandeh","followers_url":"https://api.github.com/users/maysamyabandeh/followers","following_url":"https://api.github.com/users/maysamyabandeh/following{/other_user}","gists_url":"https://api.github.com/users/maysamyabandeh/gists{/gist_id}","starred_url":"https://api.github.com/users/maysamyabandeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maysamyabandeh/subscriptions","organizations_url":"https://api.github.com/users/maysamyabandeh/orgs","repos_url":"https://api.github.com/users/maysamyabandeh/repos","events_url":"https://api.github.com/users/maysamyabandeh/events{/privacy}","received_events_url":"https://api.github.com/users/maysamyabandeh/received_events","type":"User","site_admin":false}],"milestone":null,"comments":8,"created_at":"2018-01-29T15:34:42Z","updated_at":"2018-07-27T18:55:15Z","closed_at":"2018-07-27T18:55:15Z","author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/facebook/rocksdb/pulls/3432","html_url":"https://github.com/facebook/rocksdb/pull/3432","diff_url":"https://github.com/facebook/rocksdb/pull/3432.diff","patch_url":"https://github.com/facebook/rocksdb/pull/3432.patch"},"body":"This pull request add AbstractAssociativeMergeOperator and AbstractNotAssociativeMergeOperator in java. These classes are abstract permitting to implement the merge operator in java code. \r\n\r\nThis pull request introduces also 2 important performance improvements(they are generic applicable to all jni classes): \r\n1) The JNI Thread attachment is a expensive operation. Doing it after every api operation can reduce performance in significant way. This patch introduces a automatic management for attachment/detachment: the attachment will be executed once and the detachment will be executed just before thread termination in automatic way. \r\n2) Many static variables actually are loaded on the fly inside the jni api. This patch introduce a loader/unloader management for preloading all static/global variables for the jni modules when JVM is loaded. This permits to remove the loading time inside the jni api. For Adding a loader/unloader in a JNI class  is very simple: this is a example \r\n```\r\n funcInit(JNIEnv* env){\r\n   load symbols , jclasses,methodids,fieldids, globalRefs\r\n }\r\n funcDestroy(JNIEnv* env){\r\n   unload globalRefs\r\n }\r\n   initialize {\r\n\r\nrocksdb::setLoader( &funcInit);\r\nrocksdb::setUnloader( &funcDestroy);\r\n\r\n}\r\n```\r\n\r\nThe thread attachment management and loading management are used by merge operator for optimizing the execution time\r\n"},"comment":{"url":"https://api.github.com/repos/facebook/rocksdb/issues/comments/408509129","html_url":"https://github.com/facebook/rocksdb/pull/3432#issuecomment-408509129","issue_url":"https://api.github.com/repos/facebook/rocksdb/issues/3432","id":408509129,"node_id":"MDEyOklzc3VlQ29tbWVudDQwODUwOTEyOQ==","user":{"login":"maysamyabandeh","id":1167741,"node_id":"MDQ6VXNlcjExNjc3NDE=","avatar_url":"https://avatars2.githubusercontent.com/u/1167741?v=4","gravatar_id":"","url":"https://api.github.com/users/maysamyabandeh","html_url":"https://github.com/maysamyabandeh","followers_url":"https://api.github.com/users/maysamyabandeh/followers","following_url":"https://api.github.com/users/maysamyabandeh/following{/other_user}","gists_url":"https://api.github.com/users/maysamyabandeh/gists{/gist_id}","starred_url":"https://api.github.com/users/maysamyabandeh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/maysamyabandeh/subscriptions","organizations_url":"https://api.github.com/users/maysamyabandeh/orgs","repos_url":"https://api.github.com/users/maysamyabandeh/repos","events_url":"https://api.github.com/users/maysamyabandeh/events{/privacy}","received_events_url":"https://api.github.com/users/maysamyabandeh/received_events","type":"User","site_admin":false},"created_at":"2018-07-27T18:55:15Z","updated_at":"2018-07-27T18:55:15Z","author_association":"CONTRIBUTOR","body":"Closing it since there was no interest shown to have it merged."}}
{"actor":{"display_login":"maysamyabandeh"}}