Code Monkey home page Code Monkey logo

eureka's People

Contributors

akalsan avatar arpost avatar candyam5522 avatar dgunda1 avatar hrathod-emory avatar jsands9 avatar jsons avatar kanzelm3 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

eureka's Issues

CSS style goes wrong if "Save" button does not work at Cohort Editor page

Before fix the function for "Save" button, I noticed that CSS style is wrong if the "Save" button does not work and gives an error msg. Even I closed the error msg, the CSS still not right.

But after I fix the "Save" button problem, I do not see it anymore, because the page is redirect to Cohort Home page.

screen shot 2016-01-03 at 4 45 30 pm

Eliminate superuser role and account

The superuser role and account is problematic. The role is completely unused in Eureka, and we can't mandate a particular username in environments that use enterprise authentication. An alternative would be just to require at least one account be active at all times with an admin role. The "superuser" account we create at installation would just be an admin account.

org.hibernate.exception.SQLGrammarException: could not extract ResultSet

This error occurs when

  1. Postgresql is the database
  2. You're accessing the the sourceconfig or destinations endpoints, like with https://hostname/proxy-resource/destinations, and the user's account is linked to data sources or destinations that they do not own.

The issue seems to be in JpaEtlGroupDao, and it seems to be yet another issue with postgresql not automatically casting booleans to integers in aggregation operators (max in this case). Here is the stack trace:

org.postgresql.util.PSQLException: ERROR: function max(boolean) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Position: 8
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2270)
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1998)
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:570)
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:420)
org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:305)
org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:70)
org.hibernate.loader.Loader.getResultSet(Loader.java:2116)
org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1899)
org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1875)
org.hibernate.loader.Loader.doQuery(Loader.java:919)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)
org.hibernate.loader.Loader.doList(Loader.java:2611)
org.hibernate.loader.Loader.doList(Loader.java:2594)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2423)
org.hibernate.loader.Loader.list(Loader.java:2418)
org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501)
org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:371)
org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
org.hibernate.internal.SessionImpl.list(SessionImpl.java:1326)
org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:593)
org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:470)
org.hibernate.jpa.criteria.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:50)
edu.emory.cci.aiw.cvrg.eureka.etl.dao.JpaEtlGroupDao.resolveDestinationPermissions(JpaEtlGroupDao.java:140)
edu.emory.cci.aiw.cvrg.eureka.etl.resource.DestinationsDTOExtractor.resolvePermissions(DestinationsDTOExtractor.java:65)
edu.emory.cci.aiw.cvrg.eureka.etl.resource.DestinationsDTOExtractor.resolvePermissions(DestinationsDTOExtractor.java:52)
edu.emory.cci.aiw.cvrg.eureka.etl.resource.ConfigsDTOExtractor.perm(ConfigsDTOExtractor.java:73)
edu.emory.cci.aiw.cvrg.eureka.etl.resource.ConfigsDTOExtractor.extractDTO(ConfigsDTOExtractor.java:58)
edu.emory.cci.aiw.cvrg.eureka.etl.resource.DestinationDTOExtractorVisitor.visit(DestinationDTOExtractorVisitor.java:88)
edu.emory.cci.aiw.cvrg.eureka.common.entity.PatientSetExtractorDestinationEntity.accept(PatientSetExtractorDestinationEntity.java:108)
edu.emory.cci.aiw.cvrg.eureka.etl.resource.Destinations.getAll(Destinations.java:238)
edu.emory.cci.aiw.cvrg.eureka.etl.resource.DestinationResource.getAll(DestinationResource.java:133)
com.google.inject.persist.jpa.JpaLocalTxnInterceptor.invoke(JpaLocalTxnInterceptor.java:66)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:497)
com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302)
com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511)
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391)
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381)
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538)
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
edu.emory.cci.aiw.cvrg.eureka.common.filter.RolesFilter.doFilter(RolesFilter.java:139)
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:54)
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:75)
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:201)
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:116)
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
com.google.inject.persist.PersistFilter.doFilter(PersistFilter.java:89)
com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)

Version mismatches reported by bower install on compiling eureka-webapp

bower install reports:

[INFO] Please note that,
[INFO] eureka depends on angular#~1.3 which resolved to angular#1.3.20
[INFO] angular-ui-tree#2.9.0 depends on angular#1.2.x || 1.3.x which resolved to angular#1.3.20
[INFO] angular-messages#1.3.20 depends on angular#1.3.20 which resolved to angular#1.3.20
[INFO] angular-animate#1.4.8, angular-aria#1.4.8, angular-mocks#1.4.8 depends on angular#1.4.8 which resolved to angular#1.4.8
[INFO] angular-material#0.11.4, angular-material#0.11.4 depends on angular#^1.3.0 || >1.4.0-beta.0 which resolved to angular#1.4.8
[INFO] tg-angular-validator#1.2.8 depends on angular#>=1.3.0 which resolved to angular#1.4.8
[INFO] ui-router#0.2.15 depends on angular#>= 1.0.8 which resolved to angular#1.4.8
[INFO] angular-material-data-table#0.8.14 depends on angular#^1.4.0 which resolved to angular#1.4.8
[INFO] ng-flow#2.6.1 depends on angular#~1 which resolved to angular#1.4.8
[INFO] Resort to using angular#~1.4 which resolved to angular#1.4.8
[INFO] Code incompatibilities may occur.

Rename systemelement endpoint

Rename /eureka-services/protected/systemelement to /eureka-services/protected/concepts. Rename the *Resource class appropriately.

PhenotypeResource enhancements

The GET endpoint is problematic because it requires the String key not the numerical id. There are two issues with this:

  1. It doesn't follow the REST convention
  2. keys are unique per user not globally unique (there is a uniqueness constraint in the database on ID + KEY)

So, I'd like the following changes:

  1. Change the GET endpoint to require the numerical id to bring it into compliance with REST conventions
  2. Create a new GET endpoint: /api/protected/users/{userid}/phenotypes/byname/{key} that requires a user id and a phenotype key.
  3. Update eureka-webapp to use the new REST endpoint or the revised REST endpoint.

Home page first time loading logic, performance may need to be improved

Currently logic:
Only when userVerficationPerformed == true, then the banner actually shows.
-If the user already logged in, the 4 menu items show
-If the user not already logged in, the login shows

Before user is verified, the banner is blank.
Banner only decides what to show, until the user is verified.

Problem is:
If user verification takes long time, like 2 or 3 seconds, this feels like a performance issue. Or there maybe a better way to design how the homepage is loaded.

Rename dataelement endpoint

Rename /eureka-services/protected/dataelement to /eureka-services/protected/phenotypes. Rename the *Resource class appropriately.

Rename proposition endpoint

Rename eureka-protempa-etl/protected/proposition to eureka-protempa-etl/protected/concepts. Rename *Resource class appropriately.

Update jobs with deidentification turned on fail

Here is the stack trace:
edu.emory.cci.aiw.cvrg.eureka.etl.job.EtlException: ETL failed for job ---
at edu.emory.cci.aiw.cvrg.eureka.etl.job.ETL.run(ETL.java:144)
at edu.emory.cci.aiw.cvrg.eureka.etl.job.Task.run(Task.java:164)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: DestinationOffset is not mapped [DELETE FROM DestinationOffset do WHERE do.destination = :d]
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1679)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1608)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:294)
at edu.emory.cci.aiw.cvrg.eureka.etl.dao.JpaDestinationOffsetDao.deleteAll(JpaDestinationOffsetDao.java:82)
at edu.emory.cci.aiw.cvrg.eureka.etl.dest.ProtempaDestinationFactory.getInstance(ProtempaDestinationFactory.java:105)
at edu.emory.cci.aiw.cvrg.eureka.etl.dest.ProtempaDestinationFactory.getInstance(ProtempaDestinationFactory.java:83)
at edu.emory.cci.aiw.cvrg.eureka.etl.job.ETL.run(ETL.java:123)
... 4 more
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: DestinationOffset is not mapped [DELETE FROM DestinationOffset do WHERE do.destination = :d]
at org.hibernate.hql.internal.ast.QuerySyntaxException.generateQueryException(QuerySyntaxException.java:79)
at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:218)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:142)
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:115)
at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:76)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:150)
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:302)
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:240)
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1894)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:291)
... 8 more
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: DestinationOffset is not mapped
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:171)
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:91)
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:76)
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:321)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3701)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3590)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:716)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.deleteStatement(HqlSqlBaseWalker.java:445)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:273)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:262)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:190)
... 16 more

Need AppProperties REST endpoint in services layer and dynamic setting of application properties client-side

Eureka application properties go into /etc/eureka/application.properties, and because we have used servlets and JSP pages to serve up web content, we have been able to insert application properties into web content server-side. Now that we are moving away from the servlet/JSP model to static content, we need a REST endpoint for client-side code to retrieve application properties.

Server-side, in the services layer we need an AppPropertiesResource with a GET call that retrieves an AppProperties object with selected properties that the client side needs. Later, we could potentially add full CRUD capability to change application properties dynamically.

Client-side, it seems to make the most sense to retrieve the properties from inside eureka-webapp/src/main/webapp/eureka/config/app-properties.js. I believe we can introduce an angular factory object that retrieves the AppProperties and sets properties in the existing appProperties object in app-properties.js dynamically.

The properties exposed through the REST API should be properties that are:

  1. needed both client-side and server-side, or
  2. only needed client-side but should be settable by an administrative user

At the moment, the properties in app-properties.js that satisfy those requirements are:

  • demoMode
  • registrationEnabled
  • ephiProhibited

There are other properties in /etc/eureka/application.properties that should be in this REST API and in the appProperties object in app-properties.js too:

  • localRegistrationEnabled
  • registrationEnabled (read-only)
  • oauthRegistrationEnabled (read-only)
  • contactEmail

Rename thresholdsop endpoint

Rename thresholdops, and redo the REST API to make it consistent with best practices (e.g., get rid of /lists).

Don't fill in the upper left box on the home page (register etc.) until all of the information needed to display the box is available

This is referring to the box about half-way down the page that contains the Register button (if registration is enabled). The box contents change over the course of several seconds as information about whether user registration is enabled, etc. become available. We should just display a progress indicator (a spinner?) until we have all of the information needed to populate the box's contents. There may be a spinner icon in the bootstrap icon library or in the fontastic library.

Hardcoded eureka-webapp

eureka-webapp is hardcoded few places, this affects the reusability of our code.

For example, at eureka.cohorts.js, currently I use:
url: '/eureka-webapp/proxy-resource/destinations'

Problem is:
if I change to '/proxy-resource/destinations', the url changes to: https://localhost:8443/proxy-resource/destinations
if I change to 'proxy-resource/destinations', the url changes to: https://localhost:8443/eureka-webapp/protected/proxy-resource/destinations

There are other places like this, need to figure out a better way than hardcoded url path.

screen shot 2016-01-06 at 1 01 00 pm

screen shot 2016-01-06 at 1 01 10 pm

screen shot 2016-01-06 at 11 46 31 am

Some pages call eureka-services directly rather than go through the proxy

In eureka-webapp/src/main/webapp/eureka/config/app-properties.js there's an apiEndpoint property defined that hardcodes a path to the eureka-services layer. All REST calls should be going through the proxy (defined by the dataEndpoint property in app-properties.js) instead.

So, three things need to happen:

  1. Remove the apiEndpoint property
  2. Switch all uses of it to the proxy
  3. Resolve any issues that result

Deprecation warnings during eureka-webapp compile: packages need upgrading

[INFO] [ERROR] npm WARN deprecated [email protected]: Please use gulp-clean-css
[INFO] [ERROR] npm WARN deprecated [email protected]: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
[INFO] [ERROR] npm WARN deprecated [email protected]: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
[INFO] [ERROR] npm WARN deprecated [email protected]: lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0.
[INFO] [ERROR] npm WARN deprecated [email protected]: graceful-fs version 3 and before will fail on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possible.
[INFO] [ERROR] npm WARN deprecated [email protected]: lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0.

Walk back use of angular-material

I'm looking at the angular-material pages that are enabled (help, account settings), and the result is highly inconsistent with the rest of the site. There may be widgets that would be useful to include from angular-material, but I think we need to walk back from wholesale adoption of it.

DataElementResource enhancements

Rename class PhenotypeResource

Revise the REST API as follows:
PUT: /api/protected/phenotypes/{id}
DELETE: /api/protected/phenotypes/{id}
POST: return the URI to the created phenotype and return the CREATED status code

User profile screen enhancements

  1. Make it a separate page again, that is, not part of the angular single-page app, because eventually it will move to the cas module, which will not use angular (see #40)
  2. Make the user profile form styled with bootstrap not angular material.
  3. Make it editable so users can change their own information.

Follow the general style of the user registration page (one field per line, etc.).

Spreadsheet DSB uses too much memory

Minimum 4 GB of heap is required to run Eureka and process the default spreadsheet. At least part of the problem is that at least 3 copies of the spreadsheet data are in memory at the same time:

  1. Spreadsheet loaded completely into memory by POI
  2. Spreadsheet copied into Java objects by Eureka
  3. Spreadsheet loaded into an h2 in-memory database

Possible options include:

  1. Remove copy 2 by redesigning the code (2 in-memory copies)
  2. Might improve upon 2 by using an on-disk h2 database to remove 3, but if I recall the performance was suboptimal (1 in-memory copy)
  3. Switch from using the relational database DSB to using the file DSB, removes 2 and 3 (1 in-memory copy)

User save fails from administration page if no roles are selected

java.lang.NullPointerException
    edu.emory.cci.aiw.cvrg.eureka.servlet.worker.admin.SaveUserWorker.execute(SaveUserWorker.java:59)
    edu.emory.cci.aiw.cvrg.eureka.servlet.AdminManagerServlet.doGet(AdminManagerServlet.java:71)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263)
    com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178)
    com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62)
    edu.emory.cci.aiw.cvrg.eureka.servlet.filter.PasswordExpiredFilter.doFilter(PasswordExpiredFilter.java:111)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    edu.emory.cci.aiw.cvrg.eureka.servlet.filter.HaveUserRecordFilter.doFilter(HaveUserRecordFilter.java:71)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    edu.emory.cci.aiw.cvrg.eureka.servlet.filter.UserInfoFilter.doFilter(UserInfoFilter.java:75)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    edu.emory.cci.aiw.cvrg.eureka.servlet.filter.MessagesFilter.doFilter(MessagesFilter.java:64)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    edu.emory.cci.aiw.cvrg.eureka.common.filter.RolesFilter.doFilter(RolesFilter.java:119)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:54)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:75)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:201)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:107)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168)
    com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
    com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118)
    com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113)

Hibernate uses wrong schema during schema validation when using postgresql

The version of hibernate that we’re on has a bug that causes it to pick the wrong schema sometimes when it generates queries when we’re using postgresql. I am seeing the issue manifest as a "Missing column" exception during schema validation when eureka-services starts up and hibernate is initialized. Hibernate reports:
...
Caused by: org.hibernate.HibernateException: Missing column: active in eurekabackend.users
at org.hibernate.mapping.Table.validateColumns(Table.java:366)
at org.hibernate.cfg.Configuration.validateSchema(Configuration.java:1305)
at org.hibernate.tool.hbm2ddl.SchemaValidator.validate(SchemaValidator.java:155)
at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:509)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1794)
at org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:96)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:914)
... 25 more

Hibernate should be validating the eureka service schema, but instead it is validating the eureka backend schema, which happens also to have a users table but without the active column.

Possibly relevant hibernate bug reports:
https://hibernate.atlassian.net/browse/HHH-9607 (closed as duplicate)
https://hibernate.atlassian.net/browse/HHH-9910 (fixed in version 5.0.0.CR3)

At first I thought that we could address the issue through privileges on the database, but that appears not to be the case. In postgresql there's no way to prevent a user from seeing the structure of schemas to which they have no privileges. For example, the eureka services user can see the structure of the eureka backend schema even though the eureka services user has no privileges on the eureka backend schema. So, the solution needs to come from hibernate. Hopefully, upgrading hibernate to version 5 will address the issue.

Can't delete sequence phenotype

The phenotype is defined as follows:

screen shot 2016-04-12 at 12 39 21 pm

The error when deleting is:
Error while deleting "Trying to reproduce the bug". Error trying to delete phenotype. The phenotype is in use. There is a problem with Eureka!.. Status Code: error

I believe the problem has to do with a constraint violation because the same encounter record is referred to in multiple places.

Make app-properties.js dynamically populate from a REST service

Some of the configuration here is duplicated in the application.properties mechanism, and some configuration information from application.properties is not here at all (like enabling OAuth-based authentication). We need a mechanism for selected properties from application.properties to be available from a web service.

Demo mode is turned on for mvn tomcat7:run

Demo mode should not be on here. It's supposed to be off by default. Not sure if it's erroneously on by default, or the Eureka configuration files for mvn tomcat7:run are somehow turning it on.

News and Funding don't always load

The News and Funding boxes are populated when the Eureka index.html page is first loaded. However, if you go to another page (like Help) and go back to the index page, the News and Funding boxes are unpopulated. This happens consistently. Reloading the page is the only way to bring the News and Funding back. See screenshot:

screen shot 2016-01-06 at 3 41 56 pm

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.