Collection of utils shared by server components
If you have questions about this repository, please subscribe to the CEDAR Developer Support mailing list. After subscribing, send messages to cedar-developers at lists.stanford.edu.
Collection of utils shared by server components
License: Other
Collection of utils shared by server components
If you have questions about this repository, please subscribe to the CEDAR Developer Support mailing list. After subscribing, send messages to cedar-developers at lists.stanford.edu.
Currently, application logging is configured in the cedar-main.yml file as follows:
cache:
persistent:
connection:
host: "${CEDAR_REDIS_PERSISTENT_HOST}"
port: "${CEDAR_REDIS_PERSISTENT_PORT}"
timeout: 2000
queueNames:
searchPermission: "CEDAR-QUEUE-search-permission"
ncbiSubmission: "CEDAR-QUEUE-ncbi-submission"
appLog: "CEDAR-QUEUE-app-log"
valuerecommender: "CEDAR-QUEUE-valuerecommender"
There are four types of requests logged on the appLog queue: requestFilter, requestHandler, responseException, cypherQuery.
We would like to be able to selectively enable/disable these four types of app logging in the config file. Current suggestion is:
cache:
persistent:
connection:
host: "${CEDAR_REDIS_PERSISTENT_HOST}"
port: "${CEDAR_REDIS_PERSISTENT_PORT}"
timeout: 2000
queues:
searchPermission:
queueName: "CEDAR-QUEUE-search-permission"
ncbiSubmission:
queueName: "CEDAR-QUEUE-ncbi-submission"
appLog:
queueName: "CEDAR-QUEUE-app-log"
disabledAppLogTypes:
- "cypherQuery"
valuerecommender:
queueName: "CEDAR-QUEUE-valuerecommender"
The above would disable Cypher query logging on the application log queue.
When sorting a list of artifacts, the toLower(resource.schema_name)
is used. This is a function call, and most probably adds to the execution time more than it should.
Introduce a new field: schema_name_lower
and maintain it throughout the lifecycle of the schema_name. When sorting, use this field
Put the current model version in a configuration setting.
The worker server throws this error in case the methodName is longer than 35 characters:
SQL Error: 1406, SQLState: 22001
Data truncation: Data too long for column 'methodName' at row 1
HHH000346: Error during managed flush [org.hibernate.exception.DataException: could not execute statement]
ERROR [2024-06-12 23:56:24,806] org.metadatacenter.worker.AppLoggerQueueProcessor: There was an error while handling the message
! com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Data too long for column 'methodName' at row 1
! at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104)
! at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
! at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1092)
! at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1040)
! at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1347)
! at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1025)
! at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
! at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
! at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
! at java.base/java.lang.reflect.Method.invoke(Method.java:568)
! at org.apache.tomcat.jdbc.pool.StatementFacade$StatementProxy.invoke(StatementFacade.java:114)
! at jdk.proxy2/jdk.proxy2.$Proxy78.executeUpdate(Unknown Source)
! at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:175)
! ... 27 common frames omitted
! Causing: org.hibernate.exception.DataException: could not execute statement
! at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:52)
! at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
! at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
! at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
! at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:178)
! at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3185)
! at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3699)
! at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:90)
! at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604)
! at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:478)
! at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:356)
! at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
! at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1457)
! ... 19 common frames omitted
! Causing: javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not execute statement
! at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
! at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181)
! at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188)
! at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1463)
! at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:514)
! at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3321)
! at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2492)
! at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:473)
! at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:178)
! at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$300(JdbcResourceLocalTransactionCoordinatorImpl.java:39)
! at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:271)
! at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:104)
! at io.dropwizard.hibernate.UnitOfWorkAspect.commitTransaction(UnitOfWorkAspect.java:154)
! at io.dropwizard.hibernate.UnitOfWorkAspect.afterEnd(UnitOfWorkAspect.java:91)
! at io.dropwizard.hibernate.UnitOfWorkAwareProxyFactory.lambda$create$0(UnitOfWorkAwareProxyFactory.java:82)
! at org.metadatacenter.server.logging.AppLoggerExecutorService_$$_jvst20b_0.handleLog(AppLoggerExecutorService_$$_jvst20b_0.java)
! at org.metadatacenter.worker.AppLoggerQueueProcessor.digestMessages(AppLoggerQueueProcessor.java:52)
! at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
! at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
! at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
! at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
! at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
! at java.base/java.lang.Thread.run(Thread.java:833)
Currently the core CEDAR MongoDB database is specified directly in cedar-main.yml
. Provide an environment variable to allow this to be specified from the application environment.
Many current queries are generating Cartesian product-type intermediate results and can run very slowly, particularly as content increases. Atti discovered that these queries (80ish of them) can be rewritten to avoid this, dramatically improving performance.
Refactor code to handle resources (artifacts, users, groups, and folders) in a uniform way.
Define the property header constants and extend the CedarResponseBuilder.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.