Giter Site home page Giter Site logo

rackerlabs / repose Goto Github PK

View Code? Open in Web Editor NEW
336.0 130.0 103.0 141.39 MB

The powerful, programmable, API Middleware Platform

Home Page: http://www.openrepose.org/

License: Other

Scala 33.64% Java 21.45% Groovy 41.23% Shell 0.33% XSLT 1.24% JavaScript 0.56% CSS 0.86% HTML 0.11% Python 0.29% Dockerfile 0.17% Jinja 0.13%

repose's Introduction

 ______     ______     ______   ______     ______     ______
/\  == \   /\  ___\   /\  == \ /\  __ \   /\  ___\   /\  ___\
\ \  __/   \ \  __\   \ \  _-/ \ \ \/\ \  \ \___  \  \ \  __\
 \ \_\ \_\  \ \_____\  \ \_\    \ \_____\  \/\_____\  \ \_____\
  \/_/ /_/   \/_____/   \/_/     \/_____/   \/_____/   \/_____/


                    .'.-:-.`.
                    .'  :  `.
                    '   :   '   /
                 .------:--.   /
               .'           `./
        ,.    /            0  \
        \ ' _/                 )
~~~~~~~~~\. __________________/~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

REPOSE - The REstful PrOxy Service Engine

Repose is an open-source platform that you can use to build stacks of reusable software components. These components can be leveraged by service developers to perform common API processing tasks. By using Repose's components rather than creating their own, service developers can focus on the unique features of their services.

Repose is run as a standalone application (either as a Linux service or using the JAR directly). Repose can be run on the same server or on a different server, and it can be run across multiple servers for horizontal scaling. At its core, Repose is a proxy that allows services to use Enterprise Integration Patterns (EIP).

For more information, check out our Getting Started with Repose guide.

Benefits

Repose Components

Repose includes several filters and services out of the box. These include:

Repose also makes it easy to create your own custom components. Check out our example custom filter for more details.

Installation

You can install Repose using the following methods:

Configuration

Repose will search for configuration files in the user specified directory.

  • The configuration root directory must be user readable.

  • The configuration files should be user readable and writable.

Setting the Configuration Root Directory.

  • Simply pass the configuration directory to the Java process using the "-c" option.

Licensing

Original files contained with this distribution of Repose are licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0).

You must agree to the terms of this license and abide by them before using, modifying, or distributing Repose or the Repose source code contained within this distribution.

Some dependencies are under other licenses.

By using, modifying, or distributing Repose you may also be subject to the terms of those licenses.

See the full list of dependencies in DEPENDENCIES.txt.

By contributing to this project, you agree to abide to the terms and conditions outlined in CONTRIBUTORS.txt.

repose's People

Contributors

adrianjgeorge avatar amelia-lopez avatar aspiers avatar beccasalinas avatar carlosmarin avatar coderlisa avatar coreywright avatar dddaley avatar dimtruck avatar dkowis avatar dmnjohns avatar forcewhisperer avatar fsargent avatar izrik avatar jennyvo avatar joelrizner avatar karteekkanneganti avatar katiejots avatar kushala2012 avatar mhawrylczak avatar mknocke avatar nonameentername avatar reneerendon avatar repose-bot avatar sent0531 avatar sethbrayman avatar sharwell avatar tylerroyal avatar wdschei avatar zinic-test avatar

Stargazers

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

Watchers

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

repose's Issues

503 error on 'curl localhost:8080 -v'

I am working through a default installationusing the Proxy/Valve method on Debian 7. When I run the 'curl localhost:8080 -v' command, I get a 503 Service Unavailable error.

Repose seems to be ready and listening on port 8080:

 2014-09-19 02:44:24,207 17127 [apinf:repose_node1] INFO  com.rackspace.papi.filter.PowerFilter  - Repose ready

Here is my system model:
http://pastebin.com/VUQhm0X5

Environment variables support in xml

Is it possible to read environment variables while loading xml.

Ex:
Lets say XML has the below line
<deployment-config http-port="${HTTP_PORT}">

while loading the XML,read the environment variable HTTP_PORT and load the value for that. Certain frameworks support such type of env variables in config file. Is there support for this in repose?

daemonize is needed by repose-valve-7.3.0.0-1.noarch

Hi All - I get the below error while trying to install repose valve on amazon AWS instance running RHEL.

warning: repose-valve-7.3.0.0-1.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID e7c89bbb: NOKEY
error: Failed dependencies:
daemonize is needed by repose-valve-7.3.0.0-1.noarch

Could you please let me know what this dependency does and where to get this dependency?

Thanks,
Prem

NOTICE: This repo is moving.

On the morning of Saturday, March 23, 2013, the 'rackspace' organization on GitHub will be reorganized. All repos will be moved to the new 'rackerlabs' organization, except for those that are designed to be used by Rackspace customers and which are fully supported.

Please update any links to this repo to reflect the new location within GitHub. For example, if the link to your repo is 'https://github.com/rackspace/foo', you need to change it to 'https://github.com/rackerlabs/foo'.

Missing http-connection-pool.cfg.xml

When starting the Repose service, I notice the following error:

[repose:repose_node1] ERROR com.rackspace.papi.service.config.impl.PowerApiConfigurationManager  - An I/O error has occured while processing resource http-connection-pool.cfg.xml that is used by filter specified in system-model.cfg.xml - Reason: /etc/repose/http-connection-pool.cfg.xml (No such file or directory)

What should the http-connection-pool.cfg.xml contain?

failure in tests when running mvn install clean on Windows 8

Hi,

I try to do mvn clean install under repose-master folder after I cloned it from github. It gives various failure messages as below:


T E S T S

Running com.rackspace.papi.service.httpclient.impl.ClientDecommissionerTest
port1: 49559
port2: 49560
log4j:WARN No appenders could be found for logger (com.rackspace.papi.service.httpclient.impl.ClientDecommissionManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
GET /blah HTTP/1.1
Request: One
host: localhost:49559
connection: close
User-Agent: Apache-HttpClient/4.2.3 (java 1.5)
Exception in thread "Thread-5" java.io.InterruptedIOException
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:458)
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.479 sec
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)Running com.rackspace.papi.service.httpclient.impl.HttpConnectionPoolProviderTest

at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:784)
at org.apache.http.client.HttpClient$execute.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at com.rackspace.papi.service.httpclient.impl.ClientDecommissionerTest$_testAddClientToBeDecommissioned_closure4.doCall(ClientDecommissionerTest.groovy:170)
at com.rackspace.papi.service.httpclient.impl.ClientDecommissionerTest$_testAddClientToBeDecommissioned_closure4.doCall(ClientDecommissionerTest.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909)
at groovy.lang.Closure.call(Closure.java:411)
at groovy.lang.Closure.call(Closure.java:405)
at groovy.lang.Closure.run(Closure.java:492)
at java.lang.Thread.run(Thread.java:744)

Caused by: java.lang.InterruptedException
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2017)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2052)
at org.apache.http.pool.PoolEntryFuture.await(PoolEntryFuture.java:131)
at org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:281)
at org.apache.http.pool.AbstractConnPool.access$000(AbstractConnPool.java:62)
at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:176)
at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:172)
at org.apache.http.pool.PoolEntryFuture.get(PoolEntryFuture.java:100)
at org.apache.http.impl.conn.PoolingClientConnectionManager.leaseConnection(PoolingClientConnectionManager.java:212)
at org.apache.http.impl.conn.PoolingClientConnectionManager$1.getConnection(PoolingClientConnectionManager.java:199)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:456)
... 21 more
closing...

another one:


T E S T S

Running com.rackspace.papi.commons.util.arrays.ByteArrayComparatorTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.051 sec
Running com.rackspace.papi.commons.util.digest.impl.MD5MessageDigesterTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.033 sec
Running com.rackspace.papi.commons.util.digest.impl.SHA1MessageDigesterTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Running com.rackspace.papi.commons.util.digest.MessageDigestResourceContextTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.104 sec
Running com.rackspace.papi.commons.util.http.CommonHttpHeaderTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.002 sec
Running com.rackspace.papi.commons.util.http.EndpointsHeaderTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.233 sec
Running com.rackspace.papi.commons.util.http.ExtendedHttpHeaderTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.http.header.HeaderFieldParserTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.http.header.HeaderValueImplTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec
Running com.rackspace.papi.commons.util.http.header.HeaderValueParserTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.http.header.QualityFactorHeaderChooserTest
Tests run: 12, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0.015 sec
Running com.rackspace.papi.commons.util.http.header.QualityFactorUtilityTest
Tests run: 10, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.033 sec
Running com.rackspace.papi.commons.util.http.header.SplittableHeaderUtilTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.http.HttpDateTest
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec <<< FAILURE!
Running com.rackspace.papi.commons.util.http.HttpStatusCodeTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.http.media.MediaRangeParserTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec
Running com.rackspace.papi.commons.util.http.media.MediaTypeTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.http.media.MimeTypeTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.http.media.servlet.RequestMediaRangeInterrogatorTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.004 sec
Running com.rackspace.papi.commons.util.http.media.VariantParserTest
Tests run: 9, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.071 sec
Running com.rackspace.papi.commons.util.http.normal.QueryStringNormalizerTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 2, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.io.buffer.CyclicByteBufferTest
Tests run: 22, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.io.buffer.SynchronizedByteBufferTest
Tests run: 11, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.io.BufferCapacityExceptionTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec
Running com.rackspace.papi.commons.util.io.ByteBufferInputStreamTest
Tests run: 20, Failures: 0, Errors: 0, Skipped: 2, Time elapsed: 0.035 sec
Running com.rackspace.papi.commons.util.io.ByteBufferOutputStreamTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.io.ByteBufferServletOutputStreamTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.io.charset.CharacterSetSupportTest
0 [main] ERROR com.rackspace.papi.commons.util.io.charset.CharacterSets - The character set encoding UFT-33 is not avaiable on this system but is required to run Repose. This is a fatal system exception. Exiting.
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.039 sec
Running com.rackspace.papi.commons.util.io.FilePathReaderImplTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.io.FileReaderImplTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec
Running com.rackspace.papi.commons.util.io.InputStreamMergerTest
Stream1Stream2
Tests run: 19, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.067 sec
Running com.rackspace.papi.commons.util.io.MessageDigesterOutputStreamTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.io.ObjectSerializerTest
Tests run: 3, Failures: 0, Errors: 0, Skipped: 1, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.io.OutputStreamSplitterTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.io.RawInputStreamReaderTest
Tests run: 5, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.io.SimpleBufferInputStreamTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.io.stream.LimitedReadInputStreamTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.io.stream.ServletInputStreamWrapperTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec
Running com.rackspace.papi.commons.util.logging.apache.constraint.StatusCodeConstraintTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.logging.apache.format.converters.DateConversionFormatTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Running com.rackspace.papi.commons.util.logging.apache.format.converters.DateTimeFormatConverterTest
112 [main] WARN com.rackspace.papi.commons.util.logging.apache.format.converters.DateTimeFormatConverter - Invalid date conversion parameters: not a date/ISO_8601/RFC_1123
java.text.ParseException: Unparseable date: "not a date"
at java.text.DateFormat.parse(DateFormat.java:357)
at com.rackspace.papi.commons.util.logging.apache.format.converters.DateTimeFormatConverter.convert(DateTimeFormatConverter.java:23)
at com.rackspace.papi.commons.util.logging.apache.format.converters.FormatConverter$convert.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at com.rackspace.papi.commons.util.logging.apache.format.converters.DateTimeFormatConverterTest.invalid input value with valid formats passes through(DateTimeFormatConverterTest.groovy:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:172)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:104)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:70)
122 [main] WARN com.rackspace.papi.commons.util.logging.apache.format.converters.DateTimeFormatConverter - Invalid date conversion parameters: Sat, 05 Nov 1994 13:15:30 GMT/squirrel noises/ISO_8601
java.text.ParseException: Unparseable date: "Sat, 05 Nov 1994 13:15:30 GMT"
at java.text.DateFormat.parse(DateFormat.java:357)
at com.rackspace.papi.commons.util.logging.apache.format.converters.DateTimeFormatConverter.convert(DateTimeFormatConverter.java:23)
at com.rackspace.papi.commons.util.logging.apache.format.converters.FormatConverter$convert.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
at com.rackspace.papi.commons.util.logging.apache.format.converters.DateTimeFormatConverterTest.valid input value with a bad input format defaults to rfc-1123(DateTimeFormatConverterTest.groovy:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:172)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:104)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:70)
Tests run: 8, Failures: 1, Errors: 0, Skipped: 2, Time elapsed: 0 sec <<< FAILURE!

another:

Running com.rackspace.papi.commons.util.xslt.LogErrorListenerTest
3114 [main] WARN com.rackspace.papi.commons.util.xslt.LogErrorListener - This is simply a warning
3120 [main] WARN com.rackspace.papi.commons.util.xslt.LogErrorListener - Throwing Error!
3121 [main] ERROR com.rackspace.papi.commons.util.xslt.LogErrorListener - Fatal error while processing XSLT, see previous LogErrorListener WARN for a hint. MSG : Termination forced by an xsl:message instruction
javax.xml.transform.TransformerException: Termination forced by an xsl:message instruction
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.postErrorToListener(TransformerImpl.java:811)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:754)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:359)
at com.rackspace.papi.commons.util.xslt.LogErrorListenerTest$WhenTransformingXSLWithErrors.shouldThrowRuntimeExceptionOnFailXML(LogErrorListenerTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:22)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:24)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:172)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:104)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:70)

Results :

Failed tests: shouldOutputCorrectFormat(com.rackspace.papi.commons.util.http.HttpDateTest$WhenMarshallingToRFC1123): Date format did not match expected expected:<[Sun, 06 N]ov 1994 08:49:37 GMT> but was:<[sΓΆ, 06 n]ov 1994 08:49:37 GMT>
valid input value with a bad input format defaults to rfc-1123(com.rackspace.papi.commons.util.logging.apache.format.converters.DateTimeFormatConverterTest): assert (result.equals('1994-11-05T13:15:30Z'))

Tests run: 445, Failures: 2, Errors: 0, Skipped: 10

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Repose ............................................ SUCCESS [0.099s]
[INFO] Repose - Build Support Profiles ................... SUCCESS [0.375s]
[INFO] Repose - External Library Support ................. SUCCESS [0.015s]
[INFO] JavaEE 6 - XML Schema Library ..................... SUCCESS [3.478s]
[INFO] Repose - Servlet API Spec ......................... SUCCESS [1.438s]
[INFO] OpenStack Auth XML Schemas ........................ SUCCESS [2.973s]
[INFO] Rackspace Cloud Auth 1.1 XML Schemas .............. SUCCESS [6.195s]
[INFO] Repose Services ................................... SUCCESS [0.014s]
[INFO] Repose Services - HttpClient Support .............. SUCCESS [0.012s]
[INFO] Repose Services - HttpClient API .................. SUCCESS [1.464s]
[INFO] Repose Services - HttpClient Connection Pool Impl . SUCCESS [8.484s]
[INFO] Repose Commons - Commons Support .................. SUCCESS [0.083s]
[INFO] Repose Commons - Utilities ........................ FAILURE [7.688s]
[INFO] Repose Services - ServiceClient Support ........... SKIPPED
[INFO] Repose Services - AuthClient API .................. SKIPPED
[INFO] Repose Service Clients - Service Clients Support .. SKIPPED
[INFO] Repose Service Clients - Auth Service ............. SKIPPED
[INFO] Repose Commons - Configuration Management ......... SKIPPED
[INFO] Repose Commons - Class Loader ..................... SKIPPED
[INFO] Repose Services - AuthClient Akka Impl ............ SKIPPED
[INFO] Repose Core - Core Support ........................ SKIPPED
[INFO] Repose Core - Power API Core Library .............. SKIPPED
[INFO] Repose Services - Rate Limiting ................... SKIPPED
[INFO] Repose Commons - Jetty Container Support .......... SKIPPED
[INFO] Repose Components - Components Support ............ SKIPPED
[INFO] Repose Components - Distributed Datastore ......... SKIPPED
[INFO] Repose Components - Rate Limiting ................. SKIPPED
[INFO] Repose Test - Testing Service and Mocks ........... SKIPPED
[INFO] PlanetJ CompressingFilter ......................... SKIPPED
[INFO] Repose Services - Configuration Support ........... SKIPPED
[INFO] Repose Services - Configuration API ............... SKIPPED
[INFO] Repose Services - Configuration Impl .............. SKIPPED
[INFO] Repose Core - Root Web Application ................ SKIPPED
[INFO] Repose Components - Versioning .................... SKIPPED
[INFO] Repose Components - Client Authentication ......... SKIPPED
[INFO] Repose Valve - Integration Proxy Container ........ SKIPPED
[INFO] Repose Components - Default Request Routing Component SKIPPED
[INFO] Repose Components - URI Normalization ............. SKIPPED
[INFO] Repose Components - Content Normalization ......... SKIPPED
[INFO] Repose Components - Header Normalization .......... SKIPPED
[INFO] Repose Components - Client Identity By Header ..... SKIPPED
[INFO] Repose Components - Client Header Identity Mapping SKIPPED
[INFO] Repose Components - Client Identity By URI ........ SKIPPED
[INFO] Repose Components - Client Identity By Content - Auth 1.1 SKIPPED
[INFO] Repose Components - Client Identity By Content - Auth 2.0 SKIPPED
[INFO] Repose Components - Service Authentication ........ SKIPPED
[INFO] Repose Components - Destination Router ............ SKIPPED
[INFO] Repose Components - HTTP Logging .................. SKIPPED
[INFO] Repose Components - Replicated Datastore .......... SKIPPED
[INFO] Repose Components - Translation ................... SKIPPED
[INFO] Repose Components - Testing Echo Filter ........... SKIPPED
[INFO] Repose Components - Client Authorization .......... SKIPPED
[INFO] Repose Components - Client Identity By IP ......... SKIPPED
[INFO] Repose Components - Flush Output Stream ........... SKIPPED
[INFO] Repose Components - Compression ................... SKIPPED
[INFO] Repose Components - Header Translation ............ SKIPPED
[INFO] Repose Components - URI Stripper .................. SKIPPED
[INFO] Repose Components - EAR Bundle .................... SKIPPED
[INFO] Repose Components - Command Line Utilities ........ SKIPPED
[INFO] Repose Components - Extensions Support ............ SKIPPED
[INFO] Repose Components - API Validator ................. SKIPPED
[INFO] Repose Components - Extensions EAR Bundle ......... SKIPPED
[INFO] Repose - Installation ............................. SKIPPED
[INFO] Repose - Installation RPM ......................... SKIPPED
[INFO] Repose - Installation ROOT.WAR RPM ................ SKIPPED
[INFO] Repose - Installation Filters RPM ................. SKIPPED
[INFO] Repose - Installation Extension Filters RPM ....... SKIPPED
[INFO] Repose - Valve Installation RPM ................... SKIPPED
[INFO] Repose - Installation Cloud Integration CLI-Utils RPM SKIPPED
[INFO] Repose - Installation Utility Grid Filters RPM .... SKIPPED
[INFO] Repose - Installation Utility Grid Valve RPM ...... SKIPPED
[INFO] Repose - Installation DEB ......................... SKIPPED
[INFO] Repose - Installation Cloud Integration CLI-Utilities DEB SKIPPED
[INFO] Repose - Installation Repose Filter Bundle DEB .... SKIPPED
[INFO] Repose - Installation Extension Filters DEB ....... SKIPPED
[INFO] Repose - Installation Repose Valve DEB ............ SKIPPED
[INFO] Repose - Management ............................... SKIPPED
[INFO] Repose - Functional Test Support .................. SKIPPED
[INFO] Repose Test - Testing embedded support for Repose . SKIPPED
[INFO] Repose Test - Testing Repose with Embedded Glassfish SKIPPED
[INFO] Repose Test - Testing Repose with Embedded Tomcat . SKIPPED
[INFO] Repose Tests - Spock Functional Tests ............. SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 33.011s
[INFO] Finished at: Thu Nov 21 16:52:24 CET 2013
[INFO] Final Memory: 62M/149M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.9:test (default-test) on project utilities: There are test failures.
[ERROR]
[ERROR] Please refer to C:\Users\ece\repose-master\repose-aggregator\commons\utilities\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.9:test (default-test) on project utilities: There are test failures.

Please refer to C:\Users\ece\repose-master\repose-aggregator\commons\utilities\target\surefire-reports for the individual test results.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures.

Please refer to C:\Users\ece\repose-master\repose-aggregator\commons\utilities\target\surefire-reports for the individual test results.
at org.apache.maven.plugin.surefire.SurefireHelper.reportExecution(SurefireHelper.java:87)
at org.apache.maven.plugin.surefire.SurefirePlugin.writeSummary(SurefirePlugin.java:631)
at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary(SurefirePlugin.java:605)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:136)
at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:97)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 19 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :utilities

Repose Threads are getting choked when the downstream is latent

Hi All,
we have observed that the repose http connection threads are getting choked while the downstreams are getting latent and eventually repose reaching a non responsive state, Any one have faced the similar situation? is there any plan to move the repose downstream connections to Async IO so that repose wont run out of threads, due to the thread waiting in Network IO
PS: we have reduced the time out in the HttpPool config but since there are expected latent service this is not solving the issue for us. Please suggest

Regards,
Raj

issue with url encoding of spaces

As per http://www.w3schools.com/tags/ref_urlencode.asp, spaces in url can be replaces with '%20' or '+', Now if any request reaching repose has '%20' then repose decodes it and re-encodes it with '+', which is actually kind of changing the request in some way.

For Example - if client which is making the call creates a checksum of the encoded url and sends it as header for identifying the request tampering then in that case things may fail at the origin service coz the checksum it will make out of encoded url will be different than the one in the header

I know one can argue why create the checksum after encoding, why not before it, however i am not arguing over it. what my point is, that there can be systems which may be doing this, and if they want to use repose they can't, they will have to make changes in there code, and ideally introducing repose should not lead to such situations.

copyrights? Licenses?

I see there are no copyrights or license text in the repose source files (fwiw, I only checked some.)

Likewise there is no license information in rackspace maven. E.g.
https://maven.research.rackspacecloud.com/content/groups/aggregate/com/rackspace/papi/components/datastore-distributed/6.2.2.0/datastore-distributed-6.2.2.0.pom does not have any license information.

While i do see the license info at the top of this github account, the expectation is license would also be in packaged deliverables.

(E.g. compare with https://repo1.maven.org/maven2/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.pom which has a present element.)

This is not critical, but for consumers that need to track license usage, having the license info present helps with any license compliance processes that consumer might be implementing.

[LOGJAM] Allow for the ability to increase the DH key size

To mitigate the logjam vulnerability in ssl, we need to be able to increase the DHParam key size from the default, which is 512 bits, to 2048 bits, like you can with nginx or apache by providing a larger key to use, or just setting to use a larger value.

https://cipherli.st/

It looks like java 7 does not work for this in certain situations.

https://wiki.mozilla.org/Security/Server_Side_TLS#DHE_and_Java
https://wiki.mozilla.org/Security/Server_Side_TLS#Logjam_attack_on_weak_Diffie-Hellman

https://weakdh.org/

Thanks
Daniel

repose converts requests into chunked and breaks opestack apis running under httpd

Keystone (and I believe other OpenStack APIs) do not support "Transfer-Encoding: chunked" when run under httpd:

https://git.openstack.org/cgit/openstack/keystone/commit/?id=05c01e26d1e62298489ba3894576faf3c352e2c9

Repose is converting non chunked requests into chunked requests, even with "pass-through" configuration.

If you try to turn off WSGIChunkedRequest in httpd configuration, you get a 411 response, indicating Content-Length needs to be set:
HTTP/1.1 411 Length Required

If you leave it on, python will error on read.

How to use ip-identity and header-identity filter together ?

the usecase is one wants to rate limit the requests based on either ip or a particular header value which ever limit is breached first. I have tried different apporaches given below:

  1. putting both the filter with same quality value and one rate limiting filter(headerlimit=50requests/min,iplimit=100requests/min): observation - only ip based filtering is happening.
  2. putting higher quality value for the header-identity filter than ip-identity filter(headerlimit=100requests/min,iplimit=50requests/min): observation - only header based filtering is happening

in the above two apporaches the filter sequence was as below:

<filter name="ip-identity"/>
<filter name="header-identity"/>
<filter name="rate-limiting"/> 

and i have also tried with the above apporaches with the below sequence:

<filter name="header-identity"/>
<filter name="ip-identity"/>
<filter name="rate-limiting"/> 
  1. putting both the filter with same quality value and two rate limiting filter (with below filter sequence): observation - which ever lesser limit is breached either header-identity or ip-identity, works as expected, but there is unnecessary addition of latency with the addition of rate limiting filter twice(with distributed database).
<filter name="header-identity"/>
<filter name="rate-limiting"/>
<filter name="ip-identity"/>
<filter name="rate-limiting"/>

so the question is what is the correct way of approaching the problem? To me it seem 1st apporach is logical and intuitive approach. plz correct if wrong.

Lots of files in /var/repose

Hi All,

In MaaS our buildbot is seeing a ton of folders/files in /var/repose which will fill up the disk within 2-3 days or so. Any idea why repose would be doing this?

Thanks.

Missing metrics.cfg.xml

When starting the Repose server, I notice the following error message:

[repose:repose_node1] ERROR com.rackspace.papi.service.config.impl.PowerApiConfigurationManager  - An I/O error has occured while processing resource metrics.cfg.xml that is used by filter specified in system-model.cfg.xml - Reason: /etc/repose/metrics.cfg.xml (No such file or directory)

What should the metrics.cfg.xml file contain?

Next release date

I'm dependent on a couple of resolved issues in the trunk. Any timelines on when the next release will be out?

Thanks,
Ganesh

prerm doesn't stop repose before removing it

there is no repose-valve.prerm that insures repose is stopped (ie /etc/init.d/repose-valve stop) before removing the package.

this means that on package removal repose is still running (but no init script to stop it) or on package upgrade that the old repose is still running and the init script might not stop it.

openstack v3 identity filter fails to get scoped token

When using V3 auth the token that is returned when a project ID Is not specified is an unscoped token. This token can not be used by repose to validate user tokens as an unscoped token has no associated roles with it. You can have repose get a scoped token by specifying a Project-ID. However, the current implementation requires a numeric project ID which can not be properly applied with automation.

A project name could be used for the project ID, but in order for this to work the domain needs to be included as part of the request.

The body that repose currently sends looks like this: https://gist.github.com/ephur/9ed524cc501317307d18

A working body for v3 when not specifying a project ID, but rather a project name looks like this:
https://gist.github.com/ephur/8bbcd53f6140905d10d4

Error when generating build with Maven

I'm getting an error when generating a build with Maven. Here are the followed steps:

  1. Clone repo

C:\tools\repose\repose>git clone git://github.com/rackerlabs/repose.git

  1. Generate build using Maven build

C:\tools\repose\repose>mvn package > log.txt

Am I missing anything? Can't load the error log, however here's a snapshot.

error

4322 [main] WARN com.rackspace.papi.commons.util.xslt.LogErrorListener - Throwing Error!
4324 [main] ERROR com.rackspace.papi.commons.util.xslt.LogErrorListener - Fatal error while processing XSLT, see previous LogErrorListener WARN for a hint. MSG : Termination forced by an xsl:message instruction
javax.xml.transform.TransformerException: Termination forced by an xsl:message instruction
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.postErrorToListener(TransformerImpl.java:788)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:731)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:336)
at com.rackspace.papi.commons.util.xslt.LogErrorListenerTest$WhenTransformingXSLWithErrors.shouldThrowRuntimeExceptionOnFailXML(LogErrorListenerTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.ExpectException.evaluate(ExpectException.java:21)
at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:24)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:53)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:123)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:104)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:164)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:110)
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:172)
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcessWhenForked(SurefireStarter.java:104)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:70)
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.172 sec
Running com.rackspace.papi.commons.validate.xsd.JAXBValidatorTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec

Thanks,
Diego

CompressionFilter Logging is to Verbose @ INFO

I don't think that this level of detail is needed at INFO level logging. Four lines for each request is excessive for INFO I believe. Please limit this to one line of data, or move all to DEBUG.

2013-09-24 10:02:51,917 1037094548 [repose:node1] INFO / - [CompressingFilter/1.7] Request is not compressed, so not decompressing
2013-09-24 10:02:51,917 1037094548 [repose:node1] INFO / - [CompressingFilter/1.7] Request for: '/v1.0/1234567890/servers/detail'
2013-09-24 10:02:51,917 1037094548 [repose:node1] INFO / - [CompressingFilter/1.7] Setting Vary Header because the response could be compressed. Vary : Accept-Encoding
2013-09-24 10:02:51,917 1037094548 [repose:node1] INFO / - [CompressingFilter/1.7] Compression not supported or declined by request

Does Repose support CORS?

I was wondering to use Repose as a kind of reverse proxy for a thing that needs CORS, is it possible?

Issue Running ProxyApp (Valve) in IDE and Via Shade

I recently imported Reprose into IntelliJ 12 and tried running ProxyApp. I receive..

Caused by: java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal

Upon further research I have found that if I include the following transitive dependency then the IDE is happier...

    <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>2.0.2-rax</version>
    </dependency>

My next step is using Valve to run reprose. Even with the dependency change above the shaded jar does not include org.w3c. Below are relevant excerpts from the mvn -X output...

[DEBUG] xml-apis:xml-apis:jar:2.0.2-rax:compile
[INFO] Including xml-apis:xml-apis:jar:2.0.2-rax in the shaded jar.

HTTP health check URL for repose

We have a use case with AWS. Repose service is exposed via an ELB. As of now the health checks are based on TCP,but that's causing issues , as service is up but its giving HTTP 5xx because some filters did not got loaded and it throws some exception in the logs says repose is not ready.

How about we have a HTTP health check URL for checking repose healthiness. So consider when we are loading the filters chain and something goes wrong in between , we log repose is not ready in the log file and that HTTP health check would return some HTTP code apart from 200 for that health check URL in that way ELB will get to know if repose is not ready.

In this way it will take the repose service box out of rotation.

Ultimate goal is to know the status of the cluster via a HTTP call.

Docker image not running container

I created docker image on ubuntu:18.04 following this document: https://www.openrepose.org/versions/8.7.0.1/recipes/docker.html
but the container is giving this error:

2021-02-17 12:57:53,645 28545 [main] ERROR org.openrepose.commons.config.parser.jaxb.JaxbConfigurationParser - Failed to utilize the UnmarshallerValidator. Reason: cvc-assertion-failure-mesg: Assertion failed for schema type 'DestinationList'. Must have at least one destination defined.
2021-02-17 12:57:53,647 28547 [main] ERROR org.openrepose.core.services.config.impl.ConfigurationServiceImpl - Configuration update error. Reason: Parsed object from XML does not match the expected configuration class. Expected: org.openrepose.core.systemmodel.config.SystemModel - Actual: null

I am using this because the docker image rackerlabs/repose is not giving any API where I can make healthcheck for pod readiness.

The whole requirement is to deploy this on K8s

Ability to utilize JAVA_HOME in deb/rpm/sysconfig on startup

As an administrator that runs multiple java versions on an environment, I would like to be able to specify different version than /usr/bin/java for repose.

Use case:

root@2e076c6d8df5:/opt# service repose-valve start
Repose requires a Java version of at least 8 to function.
Please install a JRE 1.8 or greater.
root@2e076c6d8df5:/opt# java -version
java version "1.7.0_121"
OpenJDK Runtime Environment (IcedTea 2.6.8) (7u121-2.6.8-1ubuntu0.14.04.3)
OpenJDK 64-Bit Server VM (build 24.121-b00, mixed mode)
root@2e076c6d8df5:/opt# printenv
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Relevate lines:

Please allow me to overwrite default path of java in either of those 2 locations.

Versioning and default version

Hi, I'd like to configure the versioning filter to be able to redirect all calls without a specified version to a default version.

host:port/v1/user should be equal to host:port/user and different to host:port/v2/user.

Is there a way to do this?

latest docker image does not redirect to Rackspace.com

Following repose documentation for quick start, latest docker image seems to be having issues.
After docker pull,

docker run --name repose --detach --publish 7070:8080 rackerlabs/repose:latest

Request to localhost, does not redirect to rackspace.com, it does endless re-directs to localhost (Location: http://localhost:7070) instead.

curl -i http://localhost:7070
HTTP/1.1 301 Moved Permanently
Date: Tue, 26 Mar 2024 16:13:40 GMT
Content-Type: text/html
Date: Tue, 26 Mar 2024 16:13:40 GMT
Location: http://localhost:7070
Via: 1.1 Repose (Repose/9.1.0.5)
X-Trans-Id: eyJyZXF1ZXN0SWQiOiIzMGM0ZmU2OS1hZWJiLTQ4ZDItYThjNi0wOThkYzk1ZGEwMjkiLCJvcmlnaW4iOm51bGx9
Content-Length: 134

<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
</body>
</html>

Filter has not yet initialized

While following the steps from https://repose.atlassian.net/wiki/display/REPOSE/Quick+Setup , getting following error in the logs :

Trans-Id:b85a8f7e-b789-406e-9eb3-900c9d38bbbc - 2016-07-17 17:40:06,451 1310341 [qtp130494156-40] ERROR org.openrepose.filters.headertranslation.HeaderTranslationFilter - Filter has not yet initialized... Please check your configuration files and your artifacts directory.

But i see header-translation artifacts :
$ find /var/repose -name header-translation*
/var/repose/09e7e933-eecb-4b41-a067-09dc24cac595/13bfb428-81ac-426f-a3fd-d9b9b3eaa769/lib/header-translation-filter-8.0.1.0.jar
/var/repose/67fe8017-70cd-47a6-a5fd-2ac77d378095/c1e8a301-0892-4e73-bb39-1fa6f959bf1c/lib/header-translation-filter-8.0.1.0.jar
/var/repose/7ddce673-b12d-4030-a245-2e0f9abecf6a/03d5c94f-61f4-4fe2-bed2-4c8d253b0b06/lib/header-translation-filter-8.0.1.0.jar
/var/repose/b15e2f65-9350-45c9-996c-8365dfe6369e/1ef5f309-f100-40b6-a9f5-7bbdc3301505/lib/header-translation-filter-8.0.1.0.jar
/var/repose/69b7c4fe-da8b-4ad8-a1f9-ac88a0496fea/6581cf90-85c3-4f80-b2d0-52d2d4e38af4/lib/header-translation-filter-8.0.1.0.jar
/var/repose/4bf09cbc-f6e9-4828-9900-d41bdc766173/f3f1f52a-5468-453c-aa87-9fd1122c107a/lib/header-translation-filter-8.0.1.0.jar
/var/repose/c32825f8-788a-4a7d-8b84-389fccb46e4e/9e816bc3-82c0-42d6-a87f-8b5f46895256/lib/header-translation-filter-8.0.1.0.jar

Public discussion platform?

Hi,
I am trying to learn about OpenRepose and have a couple of questions. I notice that the Repose Discourse forum now forwards to an Atlassian platform, which is closed to the public. What is the recommended asynchronous communications platform for OpenRepose community members?

repose-valve startup script no longer honors $JAVA

The java version check introduced by 4eac73b isn't using the /etc/sysconfig/repose $JAVA environment variable. We don't use the java on the path (and the path java is < 1.7) so repose isn't starting at the moment.

I started to make a PR for this, but wasn't sure if all the new "java executable on the path" statements needed updating as well. Does it really require a java executable on the path, or just a valid (and > 1.7) java executable referenced by $JAVA? πŸ˜„

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.