Skip to content

Commit

Permalink
Merge branch 'release/0.8'
Browse files Browse the repository at this point in the history
  • Loading branch information
jtnelson committed Apr 17, 2018
2 parents e1c675e + 7143906 commit 511ac60
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 19 deletions.
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.8.1
0.8.2
5 changes: 4 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
* Fixed a bug that caused the server to fail to start if the `conf/stopwords.txt` configuration file did not exist.
* Added the ability for the storage engine to track stats and metadata about database structures.

#### Version 0.8.1 (TBD)
#### Version 0.8.2 (April 17, 2018)
* Fixed a bug in the `ManagedConcourseServer#install` method that caused the server installation to randomly fail due to race conditions. This caused unit tests that extended the `concourse-ete-test-core` framework to intermittently fail.

#### Version 0.8.1 (March 26, 2018)
* Fixed a bug that caused local CCL resolution to not work in the `findOrInsert` methods.
* Fixed an issue that caused conversion from string to `Operator` to be case sensitive.
* Fixed a bug that caused the `putAll` method in the map returned from `TrackingMultimap#invert` to store data inconsistently.
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# Concourse

![](https://img.shields.io/badge/version-0.8.1-green.svg)
![](https://img.shields.io/badge/version-0.8.2-green.svg)
![](https://img.shields.io/badge/status-alpha-orange.svg) ![](https://img.shields.io/badge/license-Apache%202-blue.svg)
[![Join the chat at https://gitter.im/cinchapi/concourse](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cinchapi/concourse?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![](https://circleci.com/gh/cinchapi/concourse.svg?style=shield&circle-token=954a20e6114d649b1b6a046d95b953e7d05d2e2f)](https://circleci.com/gh/cinchapi/concourse)

> [Concourse](http://concoursedb.com) is a self-tuning database for both ACID transactions and ad-hoc analytics across time. Developers prefer Concourse because it makes it easy to build operational software with on-demand data intelligence. Furthermore, Concourse greatly simplifies end-to-end data management by requiring no extra infrastructure, no prior configuration and no continuous tuning–all of which greatly reduce costs, and allow developers to focus on core business problems.
This is version 0.8.1 of Concourse.
This is version 0.8.2 of Concourse.

## Quickstart
[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/cinchapi/concourse/tree/develop)
Expand Down
4 changes: 2 additions & 2 deletions concourse-driver-java/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ The concourse jar is available at [Maven Central](http://search.maven.org/#searc
}

dependencies {
compile 'com.cinchapi:concourse-driver-java:0.8.1+'
compile 'com.cinchapi:concourse-driver-java:0.8.2+'
}

If you prefer to use another dependency manager like Maven or Ivy, then use the following project information when declaring the dependency:

GroupId: com.cinchapi
ArtifactId: concourse-driver-java
Version: 0.8.1+
Version: 0.8.2+

Alternatively, you can [download](http://cinchapi.org/concourse/download-api) the latest jar and manually add it to your project's classpath.

Expand Down
2 changes: 1 addition & 1 deletion concourse-driver-php/composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "cinchapi/concourse-driver-php",
"description": "Official PHP driver for Concourse",
"version": "0.8.1",
"version": "0.8.2",
"type": "library",
"keywords": ["concourse", "nosql", "bigdata"],
"homepage": "http://concoursedb.com",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import java.util.Random;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;

import javax.management.MBeanServerConnection;
import javax.management.remote.JMXConnector;
Expand Down Expand Up @@ -240,23 +241,39 @@ private static String install(String installer, String directory) {
binary.toString(), "--", "skip-integration"));
builder.directory(new File(directory));
builder.redirectErrorStream();
Process process = builder.start();
// The concourse-server installer prompts for an admin password in
// order to make optional system wide In order to get around this
// prompt, we have to "kill" the process, otherwise the server
// install will hang.
AtomicBoolean terminated = new AtomicBoolean(false);
Process proc1 = builder.start();
Stopwatch watch = Stopwatch.createStarted();
while (watch.elapsed(TimeUnit.SECONDS) < 1) {
continue;
}
watch.stop();
process.destroy();
new Thread(() -> {
// The concourse-server installer prompts for an admin password
// in order to complete optional system wide integration.
// Concourse versions >= 0.5.0 have a skip-integration flag that
// skips the prompt. Since older versions don't support the
// prompt, we have to "kill" the process, otherwise the server
// install will hang.
while (!terminated.get()) {
if(watch.elapsed(TimeUnit.SECONDS) > 10) {
proc1.destroy();
watch.stop();
}
else {
log.debug("Waiting for server install to finish...");
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {}
continue;
}
}
}).start();
proc1.waitFor();
terminated.set(true);
TerminalFactory.get().restore();
String application = directory + File.separator
+ "concourse-server"; // the install directory for the
// concourse-server application
process = Runtime.getRuntime().exec("ls " + application);
List<String> output = Processes.getStdOut(process);
Process proc2 = Runtime.getRuntime().exec("ls " + application);
List<String> output = Processes.getStdOut(proc2);
if(!output.isEmpty()) {
// delete the dev prefs because those would take precedence over
// what is configured in this class
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
* Copyright (c) 2013-2017 Cinchapi Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.cinchapi.concourse.server;

import org.junit.Assert;
import org.junit.Test;

/**
* Tests for the installability of various Concourse versions using the
* {@link ManagedConcourseServer} framework.
*
* @author Jeff Nelson
*/
public class ManagedConcourseServerInstallTest {

@Test
public void testInstallVersion0_8_1() {
testInstall(ManagedConcourseServer.manageNewServer("0.8.1"));
}

@Test
public void testInstallVersionBefore0_5_0DoesNotHang() {
testInstall(ManagedConcourseServer.manageNewServer("0.4.4"));
// An "error" occurs in the shutdown hook that checks to see if the
// server is still running because the Tanuki control script (used
// before version 0.5) returns an exit code of 1 on the "status"
// command...
System.out.println("IGNORE EXCEPTION STACKTRACE!!!");
}

/**
* Utility method to test installability of a given server.
*
* @param server
*/
private static void testInstall(ManagedConcourseServer server) {
server.start();
server.stop();
Assert.assertTrue(true); // lack of exception means test passes...
}

}

0 comments on commit 511ac60

Please sign in to comment.