Skip to content

Commit

Permalink
Merge branch 'release/0.10'
Browse files Browse the repository at this point in the history
  • Loading branch information
jtnelson committed Nov 12, 2019
2 parents 8f88af2 + 5f5f06b commit af2f127
Show file tree
Hide file tree
Showing 35 changed files with 3,082 additions and 623 deletions.
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
build:
docker:
- image: circleci/openjdk:8-jdk-browsers
resource_class: medium+
resource_class: large
environment:
GRADLE_OPTS: "-Djenkins=true -Xmx1024m"
TERM: dumb
Expand Down
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.10.2
0.10.3
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
## Changelog

#### Version 0.10.3 (TBD)
* Fixed an issue where the `Database` unnecessarily loaded data from disk when performing a read for a `key` in a `record` after a previous read for the entire `record` made the desired data available in memory.
* Fixed a minor bug that caused the Database to create unnecessary temporary directories when performing a reindex.
* The `Criteria` builder now creates a `NavigationKeySymbol` for navigation keys instead of a `KeySymbol`.
* Fixed a bug that caused `Convert#stringToJava` to throw an `NumberFormatException` when trying to convert numeric strings that appeared to be numbers outside of Java's representation range. As a result of this fix, those kinds of values will remain as strings.
* Added a `ForwardingConcourse` wrapper that can be extended by subclasses that provide additional functionality around a subset of Concourse methods.
* Fixed a bug that prevent a custom `ConnectionPool` using a custom `Concourse` instance (e.g. one that extends `ForwardingConcourse`) from returning a connection of the correct class. As a result of this change, the `ConnectionPool` constructors that accept explicit Concourse connection parameters have been deprecated in favor of one that takes a `Supplier` of Concourse connections.
* Fixed a bug that caused `TObject#compareTo` to return logically inconsistent results relative to `TObject#equals`. Previously, comparing `TObjects` with type `STRING` occurred in a case insensitive manner whereas the `equals` evaluation was case sensitive. Now, the `compareTo` method is case sensitive.
* Added the ability to compare `TObjects` in a case insensitive manner.
* Fixed a bug that made it possible for storage engine to return inaccurate results for `REGEX` and `NOT_REGEX` queries if matching values had different case formats.
* Fixed a bug that caused historical queries to incorrectly return logically different results compared to present state queries if matching values had different case formats.
* Fixed a bug that made it possible for reads within the `Buffer` to cause write lock starvation and resource exhaustion; preventing any further writes from occurring and generating a backlog of reads that never terminated.

#### Version 0.10.2 (August 24, 2019)
* Fixed a bug that caused an error to be thrown when creating a `Criteria` containing a navigation key using the `Criteria#parse` factory.
* Added an option to limit the length of substrings that are indexed for fulltext search. It is rare to add functionality in a patch release, but this improvement was needed to alleviate Concourse deployments that experience `OutOfMemory` exceptions because abnormally large String values are stuck in the Buffer waiting to be indexed. This option is **turned off by default** to maintain consistency with existing Concourse expectations for fulltext indexing. The option can be enabled by specifying a positive integer value for the newly added `max_search_substring_length` preference. When a value is supplied, the Storage Engine won't index any substrings longer than the provided value for any word in a String value.
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.10.2-green.svg)
![](https://img.shields.io/badge/version-0.10.3-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 distributed database warehouse for transactions search and analytics across time. Developers prefer Concourse because it simplifies building misssion-critical systems with on-demand data intelligence. Furthermore, Concourse makes end-to-end data management trivial 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.10.2 of Concourse.
This is version 0.10.3 of Concourse.

## Quickstart
### Docker
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ subprojects {
compile 'joda-time:joda-time:2.2'
compile 'org.apache.thrift:libthrift:0.12.0'
compile 'commons-configuration:commons-configuration:1.9'
compile group: 'com.cinchapi', name: 'accent4j', version: '1.8.0', changing:true
compile group: 'com.cinchapi', name: 'accent4j', version: '1.9.0', changing:true
compile 'com.cinchapi:lib-config:1.5.1'

testCompile 'junit:junit:4.11'
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.10.2+'
compile 'com.cinchapi:concourse-driver-java:0.10.3+'
}

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.10.2+
Version: 0.10.3+

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
package com.cinchapi.concourse;

import java.util.Queue;
import java.util.concurrent.Callable;

import com.cinchapi.concourse.util.ConcurrentLoadingQueue;

Expand All @@ -29,13 +28,6 @@
*/
class CachedConnectionPool extends ConnectionPool {

// Connection Info
private final String host;
private final int port;
private String username;
private final String password;
private final String environment;

/**
* Construct a new instance.
*
Expand All @@ -62,25 +54,13 @@ protected CachedConnectionPool(String host, int port, String username,
*/
protected CachedConnectionPool(String host, int port, String username,
String password, String environment, int poolSize) {
super(host, port, username, password, environment, poolSize);
this.host = host;
this.port = port;
this.username = username;
this.password = password;
this.environment = environment;
super(() -> Concourse.connect(host, port, username, password,
environment), poolSize);
}

@Override
protected Queue<Concourse> buildQueue(int size) {
return ConcurrentLoadingQueue.create(new Callable<Concourse>() {

@Override
public Concourse call() throws Exception {
return Concourse.connect(host, port, username, password,
environment);
}

});
return ConcurrentLoadingQueue.create(supplier::get);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,7 @@ public Object calculate(String method, Object... args) {
* the {@link Set} of values that were stored in the field after
* that change
*/
public abstract Map<Timestamp, Set<Object>> chronologize(String key,
public abstract <T> Map<Timestamp, Set<T>> chronologize(String key,
long record);

/**
Expand All @@ -479,7 +479,7 @@ public abstract Map<Timestamp, Set<Object>> chronologize(String key,
* the {@link Set} of values that were stored in the field after
* that change
*/
public abstract Map<Timestamp, Set<Object>> chronologize(String key,
public abstract <T> Map<Timestamp, Set<T>> chronologize(String key,
long record, Timestamp start);

/**
Expand Down Expand Up @@ -510,7 +510,7 @@ public abstract Map<Timestamp, Set<Object>> chronologize(String key,
* the {@link Set} of values that were stored in the field after
* that change
*/
public abstract Map<Timestamp, Set<Object>> chronologize(String key,
public abstract <T> Map<Timestamp, Set<T>> chronologize(String key,
long record, Timestamp start, Timestamp end);

/**
Expand Down Expand Up @@ -5164,7 +5164,7 @@ public abstract void revert(String key, Collection<Long> records,
* {@link Map} associating every key in that record to a {@link Set}
* containing all the values stored in the respective field
*/
public abstract Map<Long, Map<String, Set<Object>>> select(
public abstract <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records);

/**
Expand All @@ -5178,7 +5178,7 @@ public abstract Map<Long, Map<String, Set<Object>>> select(
* {@link Map} associating every key in that record to a {@link Set}
* containing all the values stored in the respective field
*/
public abstract Map<Long, Map<String, Set<Object>>> select(
public abstract <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Order order);

/**
Expand All @@ -5192,7 +5192,7 @@ public abstract Map<Long, Map<String, Set<Object>>> select(
* {@link Map} associating every key in that record to a {@link Set}
* containing all the values stored in the respective field
*/
public abstract Map<Long, Map<String, Set<Object>>> select(
public abstract <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Page page);

/**
Expand All @@ -5208,7 +5208,7 @@ public abstract Map<Long, Map<String, Set<Object>>> select(
* {@link Map} associating every key in that record to a {@link Set}
* containing all the values stored in the respective field
*/
public abstract Map<Long, Map<String, Set<Object>>> select(
public abstract <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Order order, Page page);

/**
Expand All @@ -5224,7 +5224,7 @@ public abstract Map<Long, Map<String, Set<Object>>> select(
* {@link Map} associating every key in that record to a {@link Set}
* containing all the values stored in the respective field
*/
public final Map<Long, Map<String, Set<Object>>> select(
public final <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Page page, Order order) {
return select(records, order, page);
}
Expand All @@ -5247,7 +5247,7 @@ public final Map<Long, Map<String, Set<Object>>> select(
* {@code timestamp} to a {@link Set} containing all the values
* stored in the respective field at {@code timestamp}
*/
public abstract Map<Long, Map<String, Set<Object>>> select(
public abstract <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Timestamp timestamp);

/**
Expand All @@ -5270,7 +5270,7 @@ public abstract Map<Long, Map<String, Set<Object>>> select(
* {@code timestamp} to a {@link Set} containing all the values
* stored in the respective field at {@code timestamp}
*/
public abstract Map<Long, Map<String, Set<Object>>> select(
public abstract <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Timestamp timestamp, Order order);

/**
Expand All @@ -5293,7 +5293,7 @@ public abstract Map<Long, Map<String, Set<Object>>> select(
* {@code timestamp} to a {@link Set} containing all the values
* stored in the respective field at {@code timestamp}
*/
public abstract Map<Long, Map<String, Set<Object>>> select(
public abstract <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Timestamp timestamp, Page page);

/**
Expand All @@ -5318,7 +5318,7 @@ public abstract Map<Long, Map<String, Set<Object>>> select(
* {@code timestamp} to a {@link Set} containing all the values
* stored in the respective field at {@code timestamp}
*/
public abstract Map<Long, Map<String, Set<Object>>> select(
public abstract <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Timestamp timestamp, Order order,
Page page);

Expand All @@ -5344,7 +5344,7 @@ public abstract Map<Long, Map<String, Set<Object>>> select(
* {@code timestamp} to a {@link Set} containing all the values
* stored in the respective field at {@code timestamp}
*/
public final Map<Long, Map<String, Set<Object>>> select(
public final <T> Map<Long, Map<String, Set<T>>> select(
Collection<Long> records, Timestamp timestamp, Page page,
Order order) {
return select(records, timestamp, order, page);
Expand Down Expand Up @@ -6251,7 +6251,7 @@ public final <T> Map<Long, Map<String, Set<T>>> select(Criteria criteria,
* {@link Set} containing all the values stored in the respective
* field
*/
public abstract Map<String, Set<Object>> select(long record);
public abstract <T> Map<String, Set<T>> select(long record);

/**
* Return all the data from {@code record} at {@code timestamp}.
Expand All @@ -6269,7 +6269,7 @@ public final <T> Map<Long, Map<String, Set<T>>> select(Criteria criteria,
* {@link Set} containing all the values stored in the respective
* field at {@code timestamp}
*/
public abstract Map<String, Set<Object>> select(long record,
public abstract <T> Map<String, Set<T>> select(long record,
Timestamp timestamp);

/**
Expand All @@ -6280,7 +6280,7 @@ public abstract Map<String, Set<Object>> select(long record,
* {@link Set} containing all the values stored in the respective
* field
*/
public final Map<String, Set<Object>> select(Long record) {
public final <T> Map<String, Set<T>> select(Long record) {
return select(record.longValue());
}

Expand All @@ -6300,7 +6300,7 @@ public final Map<String, Set<Object>> select(Long record) {
* {@link Set} containing all the values stored in the respective
* field at {@code timestamp}
*/
public final Map<String, Set<Object>> select(Long record,
public final <T> Map<String, Set<T>> select(Long record,
Timestamp timestamp) {
return select(record.longValue(), timestamp);
}
Expand Down
Loading

0 comments on commit af2f127

Please sign in to comment.