Git Product home page Git Product logo

airship's Introduction

Airlift

Maven Central Build Status

Airlift is a framework for building REST services in Java.

This project is used as the foundation for distributed systems like Trino (formerly PrestoSQL).

Airlift pulls together stable, mature libraries from the Java ecosystem into a simple, light-weight package that lets you focus on getting things done and includes built-in support for configuration, metrics, logging, dependency injection, and much more, enabling you and your team to ship a production-quality web service in the shortest time possible.

Airlift takes the best-of-breed libraries from the Java ecosystem and glues them together based on years of experience in building high performance Java services without getting in your way and without forcing you into a large, proprietary framework.

Getting Started

Reference

Recipes

airship's People

Contributors

11xor6 avatar dain avatar electrum avatar hgschmie avatar martint avatar mattstep avatar supertango 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

airship's Issues

Config bundler doesn't push release tags

The config bundler when creating a release pushes the artifact up to nexus, but does not push the tag to git. This can cause problems if someone forgets to push the tags for the released config.

Is this expected behavior?

Config bundler NPE when missing server settings

An NPE occurs if the settings file doesn't have a <server> entry with a matching <id>. The result of settings.getServer(...) needs to be checked for null with an appropriate user error thrown.

Exception in thread "main" java.lang.NullPointerException
at io.airlift.airship.configbundler.Maven.makeRemoteRepository(Maven.java:102)
at io.airlift.airship.configbundler.Maven.<init>(Maven.java:90)
at io.airlift.airship.configbundler.SnapshotCommand.call(SnapshotCommand.java:60)
at io.airlift.airship.configbundler.SnapshotCommand.call(SnapshotCommand.java:21)
at io.airlift.airship.configbundler.ConfigBundler.main(ConfigBundler.java:31)

Additionally, the constructor for that class has the repository info parameters as @Nullable when they should not be. The validateRepositoryMetadata method should validate them as not null.

Git default HEAD not pointing to master causes inability to do a snapshot or release

If you have a repository that you clone who's HEAD points to a different branch than master (on initial clone) you can not do a release or snapshot until the master branch is checked out.

Theoretical reproduction:
$ git clone {git repo} foo
$ cd foo
$ git checkout config-branch
$ asconfig snapshot
Exception in thread "main" java.lang.NullPointerException
at io.airlift.airship.configbundler.Model.readMetadata(Model.java:60)
at io.airlift.airship.configbundler.SnapshotCommand.call(SnapshotCommand.java:35)
at io.airlift.airship.configbundler.SnapshotCommand.call(SnapshotCommand.java:21)
at io.airlift.airship.configbundler.ConfigBundler.main(ConfigBundler.java:31)

This problem goes away after you checkout the master branch.

"coordinator ssh" doesn't work

$ airship --debug coordinator ssh
2013-06-11T12:25:32.703-0700 INFO main io.airlift.log.Logging Logging to stderr
Exception in thread "main" UnexpectedResponseException{request=Request{uri=http://ec2-23-22-68-45.compute-1.amazonaws.com:64000/v1/admin/coordinator, method=GET, headers={}, bodyGenerator=null}, statusCode=500, statusMessage=Cannot compute unique prefix size for collection with duplicate entries, headers={Content-Length=[1411], Content-Type=[text/html;charset=ISO-8859-1], Cache-Control=[must-revalidate,no-cache,no-store]}}
at io.airlift.http.client.JsonResponseHandler.handle(JsonResponseHandler.java:75)
at io.airlift.http.client.ApacheHttpClient$1.handleResponse(ApacheHttpClient.java:134)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1070)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1044)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:1035)
at io.airlift.http.client.ApacheHttpClient.execute(ApacheHttpClient.java:122)
at io.airlift.airship.cli.HttpCommander.sshCoordinator(HttpCommander.java:268)
at io.airlift.airship.cli.Airship$CoordinatorSshCommand.execute(Airship.java:818)
at io.airlift.airship.cli.Airship$AirshipCommanderCommand.execute(Airship.java:276)
at io.airlift.airship.cli.Airship$AirshipCommanderCommand.execute(Airship.java:220)
at io.airlift.airship.cli.Airship$AirshipCommand.call(Airship.java:179)
at io.airlift.airship.cli.Airship.main(Airship.java:153)

Ssh command uses local username

The ssh command always uses the local username when connecting to a remote machine. This is generally never what's expected; especially in the case of AWS where all the machines have a single username.

An incomplete configuration can be created

I created a configuration bundle using asconfig that did not have a jvm.properties and I was allowed to create this bundle and discovered the issue when the server started up. Would be nice to be warned while creating the configuration that its insufficient.

Agent terminate doesn't function

Repro steps:

  1. Create a new environment
  2. Provision one or more agents
  3. Run 'airship agent terminate' with the uuid of one of the agents
    The above fails saying it can't find the agent.

install --all doesn't work

Performing an 'airship install --all' only tries to install the specified software on one server, not all available servers. Doing some packet sniffing it does seem like the Coordinator returns all of the existing servers, but the airship cli must not be handling them correctly.

I have tested this with 3 existing airship agents.

Steps that work for me to reproduce:

  1. Build new environment
  2. Make 3 agent servers
  3. Try to do install --all

My airship cli server is a RHEL 6.x Linux box with the latest JDK from Oracle and I'm running as the root user.

Airship config bundler broken since 0.11

The config bundler is broken after 0.11, but worked in 0.10.

There are two issues; first you can not initialize a new config repo:

$ asconfig-0.12 init --groupId com.example.config --releasesRepository nexus --snapshotsRepository nexus --releasesRepositoryUri 'http://192.168.193.6:8082/nexus/content/repositories/releases' --snapshotsRepositoryUri 'http://192.168.193.6:8082/nexus/content/repositories/snapshots'
Exception in thread "main" java.lang.IllegalArgumentException: io.airlift.airship.configbundler.Metadata could not be converted to json
    at io.airlift.json.JsonCodec.toJson(JsonCodec.java:142)
    at io.airlift.airship.configbundler.Metadata.save(Metadata.java:48)
    at io.airlift.airship.configbundler.Model.initialize(Model.java:88)
    at io.airlift.airship.configbundler.InitCommand.call(InitCommand.java:57)
    at io.airlift.airship.configbundler.InitCommand.call(InitCommand.java:12)
    at io.airlift.airship.configbundler.ConfigBundler.main(ConfigBundler.java:30)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Class com.fasterxml.jackson.databind.ser.BeanPropertyWriter can not access a member of class io.airlift.airship.configbundler.Metadata with modifiers "public" (through reference chain: io.airlift.airship.configbundler.Metadata["groupId"])
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:232)
    at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:197)
    at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:183)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:559)
    at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:143)
    at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:120)
    at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:2623)
    at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:2119)
    at io.airlift.json.JsonCodec.toJson(JsonCodec.java:139)
    ... 5 more
Caused by: java.lang.IllegalAccessException: Class com.fasterxml.jackson.databind.ser.BeanPropertyWriter can not access a member of class io.airlift.airship.configbundler.Metadata with modifiers "public"
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:95)
    at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:261)
    at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:253)
    at java.lang.reflect.Method.invoke(Method.java:594)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:653)
    at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:509)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:551)
    ... 10 more

Second, you can not work with a currently created config repo:

$ asconfig-0.12 snapshot
Exception in thread "main" java.lang.IllegalArgumentException: Invalid [simple type, class io.airlift.airship.configbundler.Metadata] json string
    at io.airlift.json.JsonCodec.fromJson(JsonCodec.java:124)
    at io.airlift.airship.configbundler.Model.readMetadata(Model.java:65)
    at io.airlift.airship.configbundler.SnapshotCommand.call(SnapshotCommand.java:30)
    at io.airlift.airship.configbundler.SnapshotCommand.call(SnapshotCommand.java:16)
    at io.airlift.airship.configbundler.ConfigBundler.main(ConfigBundler.java:30)
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Could not find creator property with name 'groupId' (in class io.airlift.airship.configbundler.Metadata)
 at [Source: java.io.StringReader@19fc0a04; line: 1, column: 1]
    at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
    at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:608)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.addBeanProps(BeanDeserializerFactory.java:551)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:267)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:171)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:388)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:264)
    at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:244)
    at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:143)
    at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:342)
    at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:2895)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2789)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:1957)
    at io.airlift.json.JsonCodec.fromJson(JsonCodec.java:121)
    ... 4 more
'''

JNR issue at 93bc0bc97abb76d4930b97dccec40de9faef68f5 (Current HEAD)

First provisioned a coordinator; which worked correctly:

$ ./airship environment provision-aws --coordinator-config \
> com.example.config:airship-coordinator:1 \
> --instance-type t1.micro --security-group sec-group --ami ami-3e41d257 --key-pair airship-test \
> --repository http://example.com:8082/nexus/content/groups/public/ staging
Waiting for access key to register with AWS......done!

Second tried to provision some agents:

$ ./airship agent provision --agent-config @com.example.config:agent-aws-t1.micro:1 \
> --instance-type t1.micro --security-group sec-group --ami ami-3e41d257 \
> --key-pair airship-test --count 3

And get this:

Exception in thread "main" java.lang.NoClassDefFoundError: jnr/ffi/Struct
    at jnr.posix.POSIXFactory.<clinit>(POSIXFactory.java:12)
    at io.airlift.airship.cli.POSIXFactory.getPOSIX(POSIXFactory.java:22)
    at io.airlift.airship.cli.Ansi.<clinit>(Ansi.java:15)
    at io.airlift.airship.cli.SimpleRecord$Builder.addValue(SimpleRecord.java:56)
    at io.airlift.airship.cli.TablePrinter.<init>(TablePrinter.java:40)
    at io.airlift.airship.cli.TablePrinter.<init>(TablePrinter.java:28)
    at io.airlift.airship.cli.TableOutputFormat.displayAgents(TableOutputFormat.java:52)
    at io.airlift.airship.cli.Airship$AirshipCommanderCommand.displayAgents(Airship.java:332)
    at io.airlift.airship.cli.Airship$AgentProvisionCommand.execute(Airship.java:866)
    at io.airlift.airship.cli.Airship$AirshipCommanderCommand.execute(Airship.java:274)
    at io.airlift.airship.cli.Airship$AirshipCommanderCommand.execute(Airship.java:218)
    at io.airlift.airship.cli.Airship$AirshipCommand.call(Airship.java:177)
    at io.airlift.airship.cli.Airship.main(Airship.java:151)
Caused by: java.lang.ClassNotFoundException: jnr.ffi.Struct
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 13 more

The machines do start, but it is impossible to do anything with them:

$ ./airship agent
Exception in thread "main" java.lang.NoClassDefFoundError: jnr/ffi/Struct
    at jnr.posix.POSIXFactory.<clinit>(POSIXFactory.java:12)
    at io.airlift.airship.cli.POSIXFactory.getPOSIX(POSIXFactory.java:22)
    at io.airlift.airship.cli.Ansi.<clinit>(Ansi.java:15)
    at io.airlift.airship.cli.SimpleRecord$Builder.addValue(SimpleRecord.java:56)
    at io.airlift.airship.cli.TablePrinter.<init>(TablePrinter.java:40)
    at io.airlift.airship.cli.TablePrinter.<init>(TablePrinter.java:28)
    at io.airlift.airship.cli.TableOutputFormat.displayAgents(TableOutputFormat.java:52)
    at io.airlift.airship.cli.Airship$AirshipCommanderCommand.displayAgents(Airship.java:332)
    at io.airlift.airship.cli.Airship$AgentShowCommand.execute(Airship.java:819)
    at io.airlift.airship.cli.Airship$AirshipCommanderCommand.execute(Airship.java:274)
    at io.airlift.airship.cli.Airship$AirshipCommanderCommand.execute(Airship.java:218)
    at io.airlift.airship.cli.Airship$AirshipCommand.call(Airship.java:177)
    at io.airlift.airship.cli.Airship.main(Airship.java:151)
Caused by: java.lang.ClassNotFoundException: jnr.ffi.Struct
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)

NPE on install with uuid filter

Command:

# airship --debug install -u f9cc discovery-server:1.4 @discovery:1-SNAPSHOT
2012-11-19T18:45:58.173-0800     INFO   main    io.airlift.log.Logging  Logging to stderr
Exception in thread "main" java.lang.RuntimeException: Server Error
    at io.airlift.airship.cli.HttpCommander.showAgents(HttpCommander.java:282)
    at io.airlift.airship.cli.Airship$InstallCommand.execute(Airship.java:437)
    at io.airlift.airship.cli.Airship$AirshipCommanderCommand.execute(Airship.java:270)
    at io.airlift.airship.cli.Airship$AirshipCommanderCommand.execute(Airship.java:214)
    at io.airlift.airship.cli.Airship$AirshipCommand.call(Airship.java:173)
    at io.airlift.airship.cli.Airship.main(Airship.java:147)

Launcher log:

2012-11-19T18:45:58.774-0800     WARN   http-worker-85  org.eclipse.jetty.servlet.ServletHandler        /v1/admin/agent
java.lang.NullPointerException: null
        at io.airlift.airship.coordinator.StringFunctions$1.apply(StringFunctions.java:20) ~[main.jar:0.9-SNAPSHOT]
        at io.airlift.airship.coordinator.StringFunctions$1.apply(StringFunctions.java:17) ~[main.jar:0.9-SNAPSHOT]
        at com.google.common.base.Predicates$CompositionPredicate.apply(Predicates.java:534) ~[guava-12.0.jar:na]
        at com.google.common.collect.Iterators$8.computeNext(Iterators.java:688) ~[guava-12.0.jar:na]
        at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143) ~[guava-12.0.jar:na]
        at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) ~[guava-12.0.jar:na]
        at com.google.common.collect.Iterators.size(Iterators.java:191) ~[guava-12.0.jar:na]
        at com.google.common.collect.Collections2$FilteredCollection.size(Collections2.java:228) ~[guava-12.0.jar:na]
        at io.airlift.airship.coordinator.AgentFilterBuilder$UuidPredicate.<init>(AgentFilterBuilder.java:273) ~[main.jar:0.9-SNAPSHOT]
        at io.airlift.airship.coordinator.AgentFilterBuilder$1.apply(AgentFilterBuilder.java:160) ~[main.jar:0.9-SNAPSHOT]
        at io.airlift.airship.coordinator.AgentFilterBuilder$1.apply(AgentFilterBuilder.java:156) ~[main.jar:0.9-SNAPSHOT]
        at com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:491) ~[guava-12.0.jar:na]
        at java.util.AbstractList$Itr.next(AbstractList.java:358) ~[na:1.7.0_06]
        at com.google.common.base.Predicates.defensiveCopy(Predicates.java:619) ~[guava-12.0.jar:na]
        at com.google.common.base.Predicates.or(Predicates.java:146) ~[guava-12.0.jar:na]
        at io.airlift.airship.coordinator.AgentFilterBuilder.build(AgentFilterBuilder.java:155) ~[main.jar:0.9-SNAPSHOT]
        at io.airlift.airship.coordinator.AgentFilterBuilder.build(AgentFilterBuilder.java:94) ~[main.jar:0.9-SNAPSHOT]
        at io.airlift.airship.coordinator.AdminResource.getAllAgents(AdminResource.java:78) ~[main.jar:0.9-SNAPSHOT]
        at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source) ~[na:na]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_06]
        at java.lang.reflect.Method.invoke(Method.java:601) ~[na:1.7.0_06]
        at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) ~[jersey-server-1.9.1.jar:1.9.1]
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) ~[jersey-server-1.9.1.jar:1.9.1]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) ~[javax.servlet-3.0.0.v201112011016.jar:na]
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:594) ~[jetty-servlet-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1365) ~[jetty-servlet-8.1.1.v20120215.jar:8.1.1.v20120215]
        at io.airlift.airship.coordinator.auth.AuthFilter.doFilter(AuthFilter.java:70) ~[main.jar:0.9-SNAPSHOT]
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336) ~[jetty-servlet-8.1.1.v20120215.jar:8.1.1.v20120215]
        at io.airlift.http.server.GZipRequestFilter.doFilter(GZipRequestFilter.java:49) ~[http-server-0.66.jar:na]
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336) ~[jetty-servlet-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.servlets.UserAgentFilter.doFilter(UserAgentFilter.java:77) ~[jetty-servlets-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.servlets.GzipFilter.doFilter(GzipFilter.java:181) ~[jetty-servlets-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336) ~[jetty-servlet-8.1.1.v20120215.jar:8.1.1.v20120215]
        at io.airlift.http.server.TimingFilter.doFilter(TimingFilter.java:50) ~[http-server-0.66.jar:na]
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1336) ~[jetty-servlet-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:483) [jetty-servlet-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1065) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:412) [jetty-servlet-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:999) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:121) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:47) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.Server.handle(Server.java:351) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:454) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.AbstractHttpConnection.messageComplete(AbstractHttpConnection.java:909) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.messageComplete(AbstractHttpConnection.java:966) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:897) [jetty-http-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235) [jetty-http-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:76) [jetty-server-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:609) [jetty-io-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:45) [jetty-io-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599) [jetty-util-8.1.1.v20120215.jar:8.1.1.v20120215]
        at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534) [jetty-util-8.1.1.v20120215.jar:8.1.1.v20120215]
        at java.lang.Thread.run(Thread.java:722) [na:1.7.0_06]

Upgrading a coordinator clobbers aws-credentials.properties file

To repro:

  1. Provision an aws environment
  2. Ssh manually to the coordinator
  3. "airship -e airship upgrade -b airship-coordinator @some-new-config:42"

At this point the aws-credentials.properties file has been deleted by the config upgrade and the coordinator both dies and is not recoverable.

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.