Code Monkey home page Code Monkey logo

orr's Introduction

ORR - Ontology Registry and Repository

The Ontology Registry and Repository (ORR) integrates semantic web services and tools created by the Marine Metadata Interoperability project, MMI, toward the realization of its Semantic Framework vision. Current funding is provided by the U.S. National Science Foundation through the Cross-Domain Observational Metadata for Environmental Sensing (X-DOMES) project.

For end-users, documentation is located at https://mmisw.org/orrdoc/.


For developers, this is a parent repo that facilitates the build of the integrated ORR system comprising its backend and frontend components, which are referenced via git submodules:

component description
https://github.com/mmisw/orr-ont Backend
https://github.com/mmisw/orr-portal Frontend

Actual code development occurs within those repos.

Clone

For a fresh clone of this repo on your system, you can run the following to fetch everything including submodules:

git clone --recursive https://github.com/mmisw/orr.git

If you have already cloned this repo but forgot the --recursive flag, then run:

git submodule update --init --recursive

Build

Base image

docker build -f base.Dockerfile -t "mmisw/orr-base:2020-09-12" .

docker push "mmisw/orr-base:2020-09-12"

ORR image

The main deployable ORR artifact that is built in this repo is the mmisw/orr docker image.

The typical sequence of steps to build a new ORR version reflecting latest submodule changes is as follows:

git submodule foreach "(git checkout master; git pull)"

Check the submodule versions to determine the version for the integrated system, for example, 3.x.y. Typically this is going to be the version of the orr-portal module (see version entry in orr-portal/package.json) as this is the one displayed to the end user in the frontend.

We assume such version for the integrated ORR system is captured in the ORR_VERSION environment variable in what follows.

ORR_VERSION=3.x.y

The ./build.sh script that we will be running in a moment takes care of building the whole system. This script expects one or two arguments. The first argument is the version for the ORR integrated system. So, we will use ${ORR_VERSION} for this. The second argument is only required if the version of the backend component (see build.Version entry in orr-ont/project/build.scala) is different:

BACKEND_VERSION=3.w.z

Then, run ./build.sh accordingly, that is, either:

./build.sh ${ORR_VERSION}

or:

./build.sh ${ORR_VERSION} ${BACKEND_VERSION}

NOTE: This may take several minutes to complete.

Example of complete output here.

Publishing the Docker image:

docker login
docker push mmisw/orr:${ORR_VERSION}

Finally:

git add -u
git commit -m "build v${ORR_VERSION}"
git push origin master
git tag "v${ORR_VERSION}"
git push origin "v${ORR_VERSION}"

orr's People

Contributors

carueda avatar lewismc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

orr's Issues

JVM not getting enough memory in the container

@brandonnodnarb thanks again for the testing and exposing this issue.

@lewismc / @graybeal FYI

As indicated on slack, I suspect the issue is not enough memory given to the JVM, even though the container itself has plenty.

Below are some snippets from the log and some ctop screenshots.



2020-09-02 00:58:18.094 [http-nio-8080-exec-3] DEBUG org.mmisw.orr.ont.app.OntController -
createOntology:
 user:           AuthUser(brandon)
 uri:            http://synaptica.net/owl
 originalUri:    None
 name:           NASA STI Thesaurus
 version:        20200902T005818
 versionVisibility: Some(owner)
 versionStatus:  Some(unstable)
 log:            None
 date:           2020-09-02T00:58:18
 ownerName:      ~brandon
 ontFileWriter.format: ttl

2020-09-02 00:58:26.958 [http-nio-8080-exec-3] DEBUG org.mmisw.orr.ont.service.OntService - createOntology: md=Map(http://www.w3.org/2000/01/rdf-schema#comment -> List(Synaptica output using OWL syntax.), http://www.w3.org/2002/07/owl#versionInfo -> List(Synaptica OWL), http://www.w3.org/1999/02/22-rdf-syntax-ns#type -> List(http://www.w3.org/2002/07/owl#Ontology))  authorOpt=Some(brandon whitehead)


02-Sep-2020 01:07:05.050 WARNING [cluster-1-thread-1] com.mongodb.ServerStateNotifier.run Exception in monitor thread during notification of server description state change
	java.lang.OutOfMemoryError: GC overhead limit exceeded

Exception in thread "AsyncFileHandlerWriter-1259475182" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "http-nio-8080-ClientPoller-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "http-nio-8080-ClientPoller-1" java.lang.OutOfMemoryError: GC overhead limit exceeded
02-Sep-2020 01:10:47.569 SEVERE [http-nio-8080-exec-9] org.apache.coyote.AbstractProtocol$ConnectionHandler.process Failed to complete processing of a request
	java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "http-nio-8080-exec-7" java.lang.OutOfMemoryError: GC overhead limit exceeded
02-Sep-2020 01:11:38.271 SEVERE [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run Unexpected death of background thread [ContainerBackgroundProcessor[StandardEngine[Catalina]]]
	java.lang.OutOfMemoryError: GC overhead limit exceeded
Exception in thread "ContainerBackgroundProcessor[StandardEngine[Catalina]]" java.lang.OutOfMemoryError: GC overhead limit exceeded

image

During the registration processing:

image

License

@graybeal, @lewismc, @brandonnodnarb :

John: we haven't associated any license to the ORR related software repositories. Are you OK with using Apache2? I'll go ahead with adding Apache2 if I don't hear any objections within say a couple days from now.

fix SSL support

Set up SSL (and redirection?) so that COR supports SSL and serves https (and redirects http) IRIs

ontologies don't contain versions

When you download an ontology, it is a particular version of the ontology. However, the version is not visible within the ontology. Exported hosted ontologies ideally could contain the ORR version in the versionIRI attribute.

solidify ORR documentation

Review all ORR documentation and confirm:

  • links work
  • text is accurate
  • doc maintenance process is clear and works to release the documentation
  • missing topics are identified and issues created to address
  • MMI ORR-specific topics are identified (flagged maybe?)

fix all the little things that don't work

(Per ESIP community request) Go through issues and perform tests (using COR) to identify all the details that aren't quite right. Make sure each has an issue that is given an appropriately high priority.

This is done when all the reasonably easy feasible fixes have been achieved and the rest are prioritized.

faster startup

On the COR instance I noted a rather long delay for the orr service to completely be up and running:

$ docker logs -f orr
...
WARNING .. org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 
Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [144,668] milliseconds.
...

https://wiki.apache.org/tomcat/HowTo/FasterStartUp#Entropy_Source suggests:

There is a way to configure JRE to use a non-blocking entropy source by setting the following system property: -Djava.security.egd=file:/dev/./urandom

which is mentioned in docker-library/tomcat#12

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.