Revert changes to initMgmtApp() and add null-pointer check.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/12743f3e Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/12743f3e Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/12743f3e Branch: refs/heads/master Commit: 12743f3e221f80df7eab89fda08325e9775f7ae9 Parents: de6de66 Author: Dave Johnson <[email protected]> Authored: Fri May 20 14:03:53 2016 -0400 Committer: Dave Johnson <[email protected]> Committed: Fri May 20 14:03:53 2016 -0400 ---------------------------------------------------------------------- .../corepersistence/CpEntityManagerFactory.java | 49 +++++--------------- 1 file changed, 12 insertions(+), 37 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/12743f3e/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java ---------------------------------------------------------------------- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java index e057210..924dd10 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManagerFactory.java @@ -175,12 +175,12 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application if ( CpNamingUtils.MANAGEMENT_APPLICATION_ID.equals( appId ) ) { - if ( app != null ) { + if ( app != null && entityManager != null ) { // we successfully fetched up the management app, cache it for a rainy day managementAppEntityManager = entityManager; - } else if ( managementAppEntityManager != null ) { + } else if ( entityManager == null && managementAppEntityManager != null ) { // failed to fetch management app, use cached one entityManager = managementAppEntityManager; @@ -214,47 +214,22 @@ public class CpEntityManagerFactory implements EntityManagerFactory, Application } - private void initMgmtAppInternal() { - Properties properties = cassandraService.getProperties(); - - Integer maxRetries; - try { - Object maxRetriesObject = properties.get( MANAGEMENT_APP_MAX_RETRIES ).toString(); - maxRetries = Integer.parseInt( maxRetriesObject.toString() ); - } catch ( NumberFormatException nfe ) { - maxRetries = 20; - } - EntityManager em = getEntityManager(getManagementAppId()); + indexService.queueInitializeApplicationIndex(CpNamingUtils.getApplicationScope(getManagementAppId())); - int retryCount = 0; - - while ( managementApp != null && retryCount++ <= maxRetries ) { - - try { - managementApp = em.getApplication(); - - if ( managementApp == null ) { - - logger.warn( "Management application not found, attempting creation" ); - - Map mgmtAppProps = new HashMap<String, Object>(); - mgmtAppProps.put( PROPERTY_NAME, CassandraService.MANAGEMENT_APPLICATION ); - em.create( getManagementAppId(), TYPE_APPLICATION, mgmtAppProps ); - managementApp = em.getApplication(); - } - - } catch ( Throwable t ) { - logger.warn("Error getting or creating management application after " + retryCount + " retries", t); + try { + if ( em.getApplication() == null ) { + logger.info("Creating management application"); + Map mgmtAppProps = new HashMap<String, Object>(); + mgmtAppProps.put(PROPERTY_NAME, CassandraService.MANAGEMENT_APPLICATION); + em.create( getManagementAppId(), TYPE_APPLICATION, mgmtAppProps); + em.getApplication(); } - } - - indexService.queueInitializeApplicationIndex(CpNamingUtils.getApplicationScope(getManagementAppId())); - if ( managementApp == null ) { - throw new RuntimeException("FATAL ERROR: Failed to get or create management app"); + } catch (Exception ex) { + throw new RuntimeException("Fatal error creating management application", ex); } }
