{"action":"closed","number":167,"pull_request":{"url":"https://api.github.com/repos/droolsjbpm/guvnor/pulls/167","id":48354041,"html_url":"https://github.com/droolsjbpm/guvnor/pull/167","diff_url":"https://github.com/droolsjbpm/guvnor/pull/167.diff","patch_url":"https://github.com/droolsjbpm/guvnor/pull/167.patch","issue_url":"https://api.github.com/repos/droolsjbpm/guvnor/issues/167","number":167,"state":"closed","locked":false,"title":"BZ-1273109 - BPM cluster: Job executor fails with NPE while","user":{"login":"mswiderski","id":904474,"avatar_url":"https://avatars.githubusercontent.com/u/904474?v=3","gravatar_id":"","url":"https://api.github.com/users/mswiderski","html_url":"https://github.com/mswiderski","followers_url":"https://api.github.com/users/mswiderski/followers","following_url":"https://api.github.com/users/mswiderski/following{/other_user}","gists_url":"https://api.github.com/users/mswiderski/gists{/gist_id}","starred_url":"https://api.github.com/users/mswiderski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mswiderski/subscriptions","organizations_url":"https://api.github.com/users/mswiderski/orgs","repos_url":"https://api.github.com/users/mswiderski/repos","events_url":"https://api.github.com/users/mswiderski/events{/privacy}","received_events_url":"https://api.github.com/users/mswiderski/received_events","type":"User","site_admin":false},"body":"this PR enables efficient and reliable job status checks within cluster. Since all the commands/jobs are executed asynchronously (via processes and jbpm executor) they might be executed on any cluster member. Thus when running clustered environment default map based cache did not work properly when request for checking job status was sent to other instance then the job was actually executed.\r\nThis PR uses executorService (component that actually executed the job) to find it in db in case it does not exist in the local cache. That way job status check is cluster aware and will cover efficient job execution distribution across cluster members while still allowing to find the job status regardless where it was executed. \r\nEspecially important when kie-wb instances are running behind load balancer.\r\n\r\nExecuteOperation process was enhanced to allow to pass custom business key that is then used to find the job to check it status. This business key is actually job id so it provides uniqueness and thus can be reliably searched.\r\n\r\nthis is one of three PRs for this BZ - others are in jbpm (https://github.com/droolsjbpm/jbpm/pull/317) and droolsjbpm-integration (https://github.com/droolsjbpm/droolsjbpm-integration/pull/212), though they don't have any compile dependency","created_at":"2015-10-21T16:18:05Z","updated_at":"2015-10-23T10:13:11Z","closed_at":"2015-10-23T10:13:11Z","merged_at":null,"merge_commit_sha":"1bc5d85f849bffaa90497dffc6ee608866dadc0b","assignee":{"login":"mrietveld","id":783550,"avatar_url":"https://avatars.githubusercontent.com/u/783550?v=3","gravatar_id":"","url":"https://api.github.com/users/mrietveld","html_url":"https://github.com/mrietveld","followers_url":"https://api.github.com/users/mrietveld/followers","following_url":"https://api.github.com/users/mrietveld/following{/other_user}","gists_url":"https://api.github.com/users/mrietveld/gists{/gist_id}","starred_url":"https://api.github.com/users/mrietveld/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrietveld/subscriptions","organizations_url":"https://api.github.com/users/mrietveld/orgs","repos_url":"https://api.github.com/users/mrietveld/repos","events_url":"https://api.github.com/users/mrietveld/events{/privacy}","received_events_url":"https://api.github.com/users/mrietveld/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/droolsjbpm/guvnor/pulls/167/commits","review_comments_url":"https://api.github.com/repos/droolsjbpm/guvnor/pulls/167/comments","review_comment_url":"https://api.github.com/repos/droolsjbpm/guvnor/pulls/comments{/number}","comments_url":"https://api.github.com/repos/droolsjbpm/guvnor/issues/167/comments","statuses_url":"https://api.github.com/repos/droolsjbpm/guvnor/statuses/236ea4f6c12cc5af4eeed827e73769b290ef09b2","head":{"label":"mswiderski:BZ-1273109","ref":"BZ-1273109","sha":"236ea4f6c12cc5af4eeed827e73769b290ef09b2","user":{"login":"mswiderski","id":904474,"avatar_url":"https://avatars.githubusercontent.com/u/904474?v=3","gravatar_id":"","url":"https://api.github.com/users/mswiderski","html_url":"https://github.com/mswiderski","followers_url":"https://api.github.com/users/mswiderski/followers","following_url":"https://api.github.com/users/mswiderski/following{/other_user}","gists_url":"https://api.github.com/users/mswiderski/gists{/gist_id}","starred_url":"https://api.github.com/users/mswiderski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mswiderski/subscriptions","organizations_url":"https://api.github.com/users/mswiderski/orgs","repos_url":"https://api.github.com/users/mswiderski/repos","events_url":"https://api.github.com/users/mswiderski/events{/privacy}","received_events_url":"https://api.github.com/users/mswiderski/received_events","type":"User","site_admin":false},"repo":{"id":11922218,"name":"guvnor","full_name":"mswiderski/guvnor","owner":{"login":"mswiderski","id":904474,"avatar_url":"https://avatars.githubusercontent.com/u/904474?v=3","gravatar_id":"","url":"https://api.github.com/users/mswiderski","html_url":"https://github.com/mswiderski","followers_url":"https://api.github.com/users/mswiderski/followers","following_url":"https://api.github.com/users/mswiderski/following{/other_user}","gists_url":"https://api.github.com/users/mswiderski/gists{/gist_id}","starred_url":"https://api.github.com/users/mswiderski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mswiderski/subscriptions","organizations_url":"https://api.github.com/users/mswiderski/orgs","repos_url":"https://api.github.com/users/mswiderski/repos","events_url":"https://api.github.com/users/mswiderski/events{/privacy}","received_events_url":"https://api.github.com/users/mswiderski/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/mswiderski/guvnor","description":"Guvnor is the governance framework for KIE workbenches","fork":true,"url":"https://api.github.com/repos/mswiderski/guvnor","forks_url":"https://api.github.com/repos/mswiderski/guvnor/forks","keys_url":"https://api.github.com/repos/mswiderski/guvnor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mswiderski/guvnor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mswiderski/guvnor/teams","hooks_url":"https://api.github.com/repos/mswiderski/guvnor/hooks","issue_events_url":"https://api.github.com/repos/mswiderski/guvnor/issues/events{/number}","events_url":"https://api.github.com/repos/mswiderski/guvnor/events","assignees_url":"https://api.github.com/repos/mswiderski/guvnor/assignees{/user}","branches_url":"https://api.github.com/repos/mswiderski/guvnor/branches{/branch}","tags_url":"https://api.github.com/repos/mswiderski/guvnor/tags","blobs_url":"https://api.github.com/repos/mswiderski/guvnor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mswiderski/guvnor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mswiderski/guvnor/git/refs{/sha}","trees_url":"https://api.github.com/repos/mswiderski/guvnor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mswiderski/guvnor/statuses/{sha}","languages_url":"https://api.github.com/repos/mswiderski/guvnor/languages","stargazers_url":"https://api.github.com/repos/mswiderski/guvnor/stargazers","contributors_url":"https://api.github.com/repos/mswiderski/guvnor/contributors","subscribers_url":"https://api.github.com/repos/mswiderski/guvnor/subscribers","subscription_url":"https://api.github.com/repos/mswiderski/guvnor/subscription","commits_url":"https://api.github.com/repos/mswiderski/guvnor/commits{/sha}","git_commits_url":"https://api.github.com/repos/mswiderski/guvnor/git/commits{/sha}","comments_url":"https://api.github.com/repos/mswiderski/guvnor/comments{/number}","issue_comment_url":"https://api.github.com/repos/mswiderski/guvnor/issues/comments{/number}","contents_url":"https://api.github.com/repos/mswiderski/guvnor/contents/{+path}","compare_url":"https://api.github.com/repos/mswiderski/guvnor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mswiderski/guvnor/merges","archive_url":"https://api.github.com/repos/mswiderski/guvnor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mswiderski/guvnor/downloads","issues_url":"https://api.github.com/repos/mswiderski/guvnor/issues{/number}","pulls_url":"https://api.github.com/repos/mswiderski/guvnor/pulls{/number}","milestones_url":"https://api.github.com/repos/mswiderski/guvnor/milestones{/number}","notifications_url":"https://api.github.com/repos/mswiderski/guvnor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mswiderski/guvnor/labels{/name}","releases_url":"https://api.github.com/repos/mswiderski/guvnor/releases{/id}","created_at":"2013-08-06T11:17:20Z","updated_at":"2014-05-06T16:38:22Z","pushed_at":"2015-10-21T16:05:01Z","git_url":"git://github.com/mswiderski/guvnor.git","ssh_url":"git@github.com:mswiderski/guvnor.git","clone_url":"https://github.com/mswiderski/guvnor.git","svn_url":"https://github.com/mswiderski/guvnor","homepage":"http://www.jboss.org/drools/drools-guvnor","size":486518,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"droolsjbpm:master","ref":"master","sha":"fe742927e50ca4f0d37a4739d30a1acc36c1478e","user":{"login":"droolsjbpm","id":517980,"avatar_url":"https://avatars.githubusercontent.com/u/517980?v=3","gravatar_id":"","url":"https://api.github.com/users/droolsjbpm","html_url":"https://github.com/droolsjbpm","followers_url":"https://api.github.com/users/droolsjbpm/followers","following_url":"https://api.github.com/users/droolsjbpm/following{/other_user}","gists_url":"https://api.github.com/users/droolsjbpm/gists{/gist_id}","starred_url":"https://api.github.com/users/droolsjbpm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/droolsjbpm/subscriptions","organizations_url":"https://api.github.com/users/droolsjbpm/orgs","repos_url":"https://api.github.com/users/droolsjbpm/repos","events_url":"https://api.github.com/users/droolsjbpm/events{/privacy}","received_events_url":"https://api.github.com/users/droolsjbpm/received_events","type":"Organization","site_admin":false},"repo":{"id":1354561,"name":"guvnor","full_name":"droolsjbpm/guvnor","owner":{"login":"droolsjbpm","id":517980,"avatar_url":"https://avatars.githubusercontent.com/u/517980?v=3","gravatar_id":"","url":"https://api.github.com/users/droolsjbpm","html_url":"https://github.com/droolsjbpm","followers_url":"https://api.github.com/users/droolsjbpm/followers","following_url":"https://api.github.com/users/droolsjbpm/following{/other_user}","gists_url":"https://api.github.com/users/droolsjbpm/gists{/gist_id}","starred_url":"https://api.github.com/users/droolsjbpm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/droolsjbpm/subscriptions","organizations_url":"https://api.github.com/users/droolsjbpm/orgs","repos_url":"https://api.github.com/users/droolsjbpm/repos","events_url":"https://api.github.com/users/droolsjbpm/events{/privacy}","received_events_url":"https://api.github.com/users/droolsjbpm/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/droolsjbpm/guvnor","description":"Guvnor is the governance framework for KIE workbenches","fork":false,"url":"https://api.github.com/repos/droolsjbpm/guvnor","forks_url":"https://api.github.com/repos/droolsjbpm/guvnor/forks","keys_url":"https://api.github.com/repos/droolsjbpm/guvnor/keys{/key_id}","collaborators_url":"https://api.github.com/repos/droolsjbpm/guvnor/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/droolsjbpm/guvnor/teams","hooks_url":"https://api.github.com/repos/droolsjbpm/guvnor/hooks","issue_events_url":"https://api.github.com/repos/droolsjbpm/guvnor/issues/events{/number}","events_url":"https://api.github.com/repos/droolsjbpm/guvnor/events","assignees_url":"https://api.github.com/repos/droolsjbpm/guvnor/assignees{/user}","branches_url":"https://api.github.com/repos/droolsjbpm/guvnor/branches{/branch}","tags_url":"https://api.github.com/repos/droolsjbpm/guvnor/tags","blobs_url":"https://api.github.com/repos/droolsjbpm/guvnor/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/droolsjbpm/guvnor/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/droolsjbpm/guvnor/git/refs{/sha}","trees_url":"https://api.github.com/repos/droolsjbpm/guvnor/git/trees{/sha}","statuses_url":"https://api.github.com/repos/droolsjbpm/guvnor/statuses/{sha}","languages_url":"https://api.github.com/repos/droolsjbpm/guvnor/languages","stargazers_url":"https://api.github.com/repos/droolsjbpm/guvnor/stargazers","contributors_url":"https://api.github.com/repos/droolsjbpm/guvnor/contributors","subscribers_url":"https://api.github.com/repos/droolsjbpm/guvnor/subscribers","subscription_url":"https://api.github.com/repos/droolsjbpm/guvnor/subscription","commits_url":"https://api.github.com/repos/droolsjbpm/guvnor/commits{/sha}","git_commits_url":"https://api.github.com/repos/droolsjbpm/guvnor/git/commits{/sha}","comments_url":"https://api.github.com/repos/droolsjbpm/guvnor/comments{/number}","issue_comment_url":"https://api.github.com/repos/droolsjbpm/guvnor/issues/comments{/number}","contents_url":"https://api.github.com/repos/droolsjbpm/guvnor/contents/{+path}","compare_url":"https://api.github.com/repos/droolsjbpm/guvnor/compare/{base}...{head}","merges_url":"https://api.github.com/repos/droolsjbpm/guvnor/merges","archive_url":"https://api.github.com/repos/droolsjbpm/guvnor/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/droolsjbpm/guvnor/downloads","issues_url":"https://api.github.com/repos/droolsjbpm/guvnor/issues{/number}","pulls_url":"https://api.github.com/repos/droolsjbpm/guvnor/pulls{/number}","milestones_url":"https://api.github.com/repos/droolsjbpm/guvnor/milestones{/number}","notifications_url":"https://api.github.com/repos/droolsjbpm/guvnor/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/droolsjbpm/guvnor/labels{/name}","releases_url":"https://api.github.com/repos/droolsjbpm/guvnor/releases{/id}","created_at":"2011-02-11T10:35:34Z","updated_at":"2015-05-08T09:04:50Z","pushed_at":"2015-10-23T10:13:11Z","git_url":"git://github.com/droolsjbpm/guvnor.git","ssh_url":"git@github.com:droolsjbpm/guvnor.git","clone_url":"https://github.com/droolsjbpm/guvnor.git","svn_url":"https://github.com/droolsjbpm/guvnor","homepage":"http://www.jboss.org/drools/drools-guvnor","size":528024,"stargazers_count":148,"watchers_count":148,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":305,"mirror_url":null,"open_issues_count":4,"forks":305,"open_issues":4,"watchers":148,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/droolsjbpm/guvnor/pulls/167"},"html":{"href":"https://github.com/droolsjbpm/guvnor/pull/167"},"issue":{"href":"https://api.github.com/repos/droolsjbpm/guvnor/issues/167"},"comments":{"href":"https://api.github.com/repos/droolsjbpm/guvnor/issues/167/comments"},"review_comments":{"href":"https://api.github.com/repos/droolsjbpm/guvnor/pulls/167/comments"},"review_comment":{"href":"https://api.github.com/repos/droolsjbpm/guvnor/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/droolsjbpm/guvnor/pulls/167/commits"},"statuses":{"href":"https://api.github.com/repos/droolsjbpm/guvnor/statuses/236ea4f6c12cc5af4eeed827e73769b290ef09b2"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":5,"review_comments":0,"commits":1,"additions":117,"deletions":2,"changed_files":4}}