Skip to content

Latest commit

 

History

History
623 lines (488 loc) · 24.2 KB

CHANGELOG.asc

File metadata and controls

623 lines (488 loc) · 24.2 KB

Appendix A: Release Notes

Version 0.5.3 (January 12, 2015)

Features:

  • Added regex support for Lucene

  • Added optional customization of Elasticsearch index settings (e.g. shard count or refresh interval)

  • Removed some internal uses of ThreadLocal and made remaining uses optional

  • Gave the exception thrown when a held lock expires a more descriptive name (ExpiredLockException) and message

Bugfixes:

  • Allowed index hostnames to be overwritten in a local configuration file

  • hasNot with undefined key

  • Using $timestamp in query constraints

  • Filtering out null-values in vertex-centric index queries

  • Queries now use deep Array equality when appropriate

  • Schema reads on Cassandra now use QUORUM regardless of read-consistency-level (schema writes were already done at QUROUM)

  • Removed obsolete precondition check causing spurious failures on some Contain.IN queries

Version 0.5.2 (November 24, 2014)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.5.2</version>
</dependency>

Tested Compatibility:

  • Cassandra 2.0.8

  • HBase 0.94.25, 0.96.2-hadoop2, 0.98.8-hadoop2

  • BerkeleyJE 5.0.73

  • Elasticsearch 1.2.1

  • Lucene 4.8.1

  • Solr 4.8.1

  • Java 1.7 (partially compatible with Java 1.6)

Features:

  • Added query optimizer support for Contain.IN conditions with multiple values

  • Added Astyanax options controlling the host supplier and local datacenter

  • Added titan.hadoop.output.location option similar to the old Faunus 0.4 output.location option

  • Added titan.hadoop.mr.classpath-configurer to support replacing Titan’s builtin Hadoop DistributedCache and MapReduce job-jar behavior

  • Added log statements that dump the complete job sequence compiled by Titan-Hadoop prior to job execution and each again just prior to execution

  • Changed return type of HadoopPipeline.submit to an int signaling whether the job chain completed successfully (previously void)

  • Replaced schema-related IllegalArgumentExceptions with more specific SchemaViolationExceptions

  • Restored gremlin.sh’s optional groovy-bootstrap-script-path argument

Bugfixes:

  • Fixed Titan-Hadoop NullPointerException caused by reading Titan graph schema

  • Fixed Titan-Hadoop failing to set OutputFormat when executing a single job with one or more mapper(s) and no reducers on Hadoop 2

  • Changed Elasticsearch backend’s version check to log a warning instead of throwing an exception when downgrading the client to an ES runtime version older than that used to compile Titan

  • Made StandardTitanGraph’s JVM shutdown hook never attempt to remove itself to avoid potential IllegalStateException

  • Made the Cassandra daemon started by titan.sh interpret the paths to its data and logfiles relative to the directory containing titan.sh, not the working directory when the script was invoked

  • Added broader catch block around some ReflectiveConfigOptionLoader logic to prevent dependencies with class linkage errors from causing exceptions at startup

  • Eliminated an ExceptionInInitializerError that could be triggered when using TitanFactory’s shorthand argument syntax, e.g. TitanFactory.open('berkeleyje:/tmp/scratch'), right after JVM startup

  • Reduced log level on some harmless messages set to an unintentionally high threshold in previous releases

Version 0.5.1 (October 10, 2014)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.5.1</version>
</dependency>

Tested Compatibility:

  • Cassandra 2.0.8

  • HBase 0.94.21, 0.96.1.1-hadoop2, 0.98.3-hadoop2

  • BerkeleyJE 5.0.73

  • Elasticsearch 1.2.1

  • Lucene 4.8.1

  • Solr 4.8.1

  • Java 1.7 (partially compatible with Java 1.6)

Features:

  • Added an experimental Solr indexing adapter

  • Reimplemented incremental loading in Titan-Hadoop

  • Substantially expanded ES configuration options, including support for custom transports

  • Optimized ReflectiveConfigOptionLoader for quicker graph startup and added options to configure or disable it

  • Titan now warns when settings in its config file are overridden by the storage-hosted global configuration

  • Titan-Hadoop on Hadoop 2 now supports HBase’s DIGEST-MD5 auth token mechanism for running MR jobs against Kerberized HBase

Bugfixes:

  • Fixed a stack overflow involving stale graph elements

  • Fixed a regression that caused custom Cassandra read/write consistency level settings to be ignored (defaulting to QUORUM)

  • Fixed SSL in the cassandrathrift backend

  • Attempts to create a partitioned vertex label with cluster.partition=false are now detected during earlier schema definition instead of later during vertex creation

  • Made the Gremlin console explicitly call System.exit just prior to the main thread’s termination; this makes the shell more aggressive about terminating on quit/exit even if there are background non-daemon threads which haven’t been cleanly stopped

  • Fixed outdated config keys in GraphOfTheGodsFactory.create

  • Miscellaneous documentation bugfixes

Version 0.5.0 (August 15, 2014)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.5.0</version>
</dependency>

Tested Compatibility:

  • Cassandra 2.0.8

  • HBase 0.94.21, 0.96.1.1-hadoop2, 0.98.3-hadoop2

  • BerkeleyJE 5.0.73

  • Elasticsearch 1.2.1

  • Lucene 4.8.1

  • Java 1.7 (partially compatible with Java 1.6)

Features:

  • Separating schema definitions from index building thus supporting index building after definition, global re-indexing, and multiple indexes for one schema element

  • Support for a transaction write-ahead log and transaction recovery process to detect and fix inconsistencies due to system failure

  • Global graph configuration system to coordinate graph-wide configuration options

  • Better consistency checking and completeness checking of configuration options

  • Support for transaction logging and a log processing framework to implement triggers and downstream system updates

  • Support for vertex labels

  • Better support for global graph partitioning through edge cut minimization

  • Support for vertex cut partitioning to enable graph partitioning on graphs with very skewed degree distributions

  • Support for multi-properties with SET cardinality

  • Support for indexing of multi-properties

  • Support for time-to-live (TTL) on edges and vertices

  • Dedicated serialization engine that can detect byte order requirements and chooses the most efficient serializer and only uses Kryo for backup where needed.

  • Support for Blueprints 2.5.0

  • Introduction of Decimal and Precision data types

  • Compressed string serialization by default

  • More efficient memory footprint of Titan transactions

  • More robust error handling and transation processing

  • Changed Titan’s data layout to support adjacency queries and faster edge queries

  • Consolidated time handling across the entire Titan codebase

  • Using faster hash functions and centralized hash function library

  • Using upsert methods for ES mutations to improve performance

  • Support for additional configuration options in Cassandra connector

  • Support for configuring the isolation level in BerkeleyDB

  • Removed FullDouble and FullFloat: Double and Float are now serialized as full precision floating points. Introduced Decimal and Precision with a fixed number of decimals and order preserving binary representation

  • Migrated Faunus to a new package in Titan named Titan/Hadoop

  • Isolated HadoopElement serialization into HadoopSerializer

  • All HadoopVertex and HadoopEdge construction leverages Hadoop Configuration for deserialization rules

  • Removed pathEnabled boolean from element serialization (now part of Configuration as trackPaths)

  • Added state tracking for loaded, new, and deleted elements/properties (in Configuration via trackState)

  • HadoopCompiler updates HadoopGraph configurations with global pipeline requirements

  • Removed HadoopVertex.reuse() in support of short-lived HadoopVertex objects

  • Updated ScriptInputFormat to use HadoopVertex.setId(long) to "reuse" vertices

  • PropertyMapMap now includes Edge.getLabel() in the returned property map (via _label)

  • Added TitanGraphOutputMapReduce@ to support Titan-specific features (e.g. multi-properties on vertices)

  • TitanGraphOutputMapReduce respects state tracking and get/create/delete in outputting TitanGraph

  • Added JUnit test support for executing local (non-pseudo-cluster) MapReduce jobs

  • Provided MapReduce-based integration testing between Titan and Titan/Hadoop

  • Provided MapReduce-based integration testing around HadoopPipeline

  • Added error handling for invalid RDF parameters

  • Added support for incremental edge loading with BlueprintsGraphOutputMapReduce

Bugfixes:

  • Fixed potential inconsistency issue in the locking protocol due to usage of non-key consistent storage transactions.

  • Fixed name collision in index backends

  • Fixed error in ES mutate logic

  • Support for Blueprints wrappers on Titan transactions

  • Fixed shutdown hook

  • Improved robustness of the id allocation process

  • Fixed data balance issues with Hbase

  • Changed serialization order for Date.class - the byte serialization now matches Comparable

  • Fixed a SideEffectMap bug around edge processing (only out edges were being processed)

  • See all GitHub issues associated with Milestone 0.5.0

Acknowledgements:

Version 0.4.4 (April 22, 2014)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.4.4</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.2

  • HBase 0.94.12

  • BerkeleyJE 5.0.73

  • Elasticsearch 0.90.5

  • Lucene 4.4.0

  • Persistit 3.3.0

  • Java 1.7+ (partially compatible with Java 1.6)

Bugfixes:

Added 0.4.2 to compatible-version string (and 0.4.3)

Version 0.4.3 (April 21, 2014)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.4.3</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.2

  • HBase 0.94.12

  • BerkeleyJE 5.0.73

  • Elasticsearch 0.90.5

  • Lucene 4.4.0

  • Persistit 3.3.0

  • Java 1.7+ (partially compatible with Java 1.6)

Features:

  • Can configure the serializer for strings to get better string compression. ONLY ENABLE THIS IF STRINGS ARE NOT USED AS SORT KEYS since the sort order is no longer guaranteed.

  • Added Blueprints RDF dependency

Bugfixes:

  • Use all hosts for establishing thrift connection to Cassandra

  • A number of bug fixes and improvements for the Cassandra adapter

  • A number of bug fixes and improvements for the HBase adapter

  • Fixed background pool thread size

  • Improved ID Allocation

Version 0.4.2 (December 30, 2013)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.4.2</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.2

  • HBase 0.94.12

  • BerkeleyJE 5.0.73

  • Elasticsearch 0.90.5

  • Lucene 4.4.0

  • Persistit 3.3.0

  • Java 1.7+ (partially compatible with Java 1.6)

Features:

  • Finer-grained Thrift connection pooling that gracefully handles failure to close result iterators

  • Optionally silently ignore unrecognized fields on index queries instead of throwing an exception

  • Configurable Astyanax RetryBackoffStrategy

  • Allow comparison of heterogeneous numeric types

  • Added Codahale-Metrics coverage for query, locker, and get-vertex-by-id activity

Bugfixes:

  • Deleting edges with multiple properties

  • Deleting edges labeled with a reverse-ordered sort key

  • Avoid NullPointerException during graph shutdown when running without a Backend threadpool

  • Shell portability improvement and shutdown race condition fix in titan.sh

Version 0.4.1 (November 24, 2013)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.4.1</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.2

  • HBase 0.94.12

  • BerkeleyJE 5.0.73

  • Elasticsearch 0.90.5

  • Lucene 4.4.0

  • Persistit 3.3.0

  • Java 1.7+ (partially compatible with Java 1.6)

Features:

  • Property pre-fetching to speed up multiple property lookups per vertex. Configurable through fast-property option.

  • Shortened HBase column-family names to reduce the HBase storage footprint. This feature is disabled by default for backwards-compatibility. Enable it via storage.short-cf-names

  • Metrics per Transaction: Gathering measurements on the transaction level and group them by transaction template name configurable through graph.buildTransaction().setMetricsPrefix(String)

  • Metrics Ganglia and Graphite support

  • Improvements to the internal memory structures and algorithms of a Titan transaction which lead to much improved traversal times (a lot of credit goes to Pavel for these optimizations!!)

  • Added database level cache for lower latency query answering against warm data. Enable via cache.db-cache. Learn more about [[Database Cache]].

  • Better caching implementation for relations (RelationCache) to provide faster de-serialization performance

  • Addition of a new query optimizer that can significantly speed up a subset of traversals

  • Support for reverse ordering in vertex centric queries by defining: makeLabel(..).sortKey(..).sortOrder(Order.DESC).make()

  • Support for index configuration parameters passed into KeyMaker.indexed(String,Class,Parameter…​) to change the default indexing behavior of an indexing backend.

  • Support for TEXT and STRING mapping of strings in both Lucene and ElasticSearch configurable as a parameter. Learn more about [[Full Text and String Search]]

  • Refactored Text.REGEX/PREFIX to Text.CONTAINS_REGEX/CONTAINS_PREFIX to accurately reflect their semantics. Added Text.REGEX/PREFIX for full string matching. See [[Indexing Backend Overview]]

  • Added support for scaling the id allocation to hundreds of parallel Titan instances through additional configuration options. See [[Bulk Loading]].

Bugfixes:

  • Fixed multiQuery() for specific has() conditions. Added support for multiQuery(Collection).

  • Fixed limit adjustment issue for unconstraint IN/OUT queries

  • Fixed packaging issues

  • Fixed cache misses due to wrong limit interpretation

Version 0.4.0 (October 16, 2013)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.4.0</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.2

  • HBase 0.94.7

  • BerkeleyJE 5.0.73

  • Elasticsearch 0.90.5

  • Lucene 4.4.0

  • Persistit 3.3.0

  • Hazelcast 3.0.2

  • Java 1.7+ (partially compatible with Java 1.6)

Features:

  • Initial Fulgora (alpha) release: Added CacheStore interface and adapter as well as a specific implementation based on the Hazelcast distributed data grid

  • Configurable LRU transaction cache for all data loaded into a transaction which allows rolling transactions without memory exceptions

  • MultiQuery which allows combining multiple queries into one request to speed up deep traversals by orders of magnitude against remote backends

  • Completely refactored query optimization and execution framework which makes query answering faster

  • GraphQuery optimizer combines multiple indexing backends to determine the result set most efficiently

  • Support for ordering in GraphQuery

  • Persistit storage adapter for local graph storage

  • Metrics integration for monitoring

  • Support for regular expressions in GraphQuery

  • Refactoring and improvement of the locking protocol

  • Renaming of type definition methods to reduce the confusion surrounding this topic (see UPGRADE for more detail)

  • Re-implemented scanning operations in storage backends to make getVertices() and getEdges() more efficient and functionally correct

  • Added performance test suite and automatic benchmark execution framework

  • Refactored attribute handling and made it explicit

  • Transactions are configurable by the user

  • Titan interprets relative paths in configuration files relative to the directory containing said configuration file (instead of the directory from which e.g. Gremlin was invoked)

  • Attribute Handling has been refactored and extended to allow custom converters and data type checkers

Bugfixes:

  • Cassandra compression

  • Resolution of elements across transaction boundaries

  • Tokenization of strings for full text search

  • Explicit mapping of elasticsearch elements

  • Changed index format to ensure uniqueness

  • Correct limit behavior for queries

  • Fixed incorrect query caching behavior

  • Correct string serialization

  • Correct handling of hybrid GraphQuery

  • Better handling of data degradation issues

Check the issue tracker for a full list of fixed issues.

Special Thanks to:

Version 0.3.2 (July 29, 2013)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.3.2</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.2

  • HBase 0.94.1

  • BerkeleyJE 5.0.73

  • Elasticsearch 0.90.0

  • Lucene 4.1.0

  • Java 1.6+

Features:

  • Support for multiple standard index conditions in queries

Bugfixes:

  • Fixed potential transaction leak when using thread-bound transactions

  • Let vertex.removeProperty(…​) kill multivalued properties as the javadoc says

  • Avoided two spurious cases of "timestamp mismatch" exception

  • Removed unchecked cast in AbstractElement.equals(…​)

  • Adjusted default Astyanax exponential backoff settings to avoid integer overflow against a dead peer

  • Fixed Astyanax config regression that caused node discovery and connection pool type to be ignored

  • Fixed double-checked locking on StandardVertex’s added relations

Check the issue tracker for a full list of fixed issues.

Version 0.3.1 (May 14, 2013)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.3.1</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.2

  • HBase 0.94.1

  • BerkeleyJE 5.0.73

  • Elasticsearch 0.90.0

  • Lucene 4.1.0

  • Java 1.6+

Features:

  • Improved in-transaction index handling for equality matches

  • Support for Lucene 4 throughout

  • Storage backend compression enabled by default where applicable

  • Removed RexsterTitanClient since all the functionality has been rolled into RexsterClient

  • Automatic type-casting of most primitive types and Geoshape where possible

  • Refactored to using immutable data structures for storage backend communication

  • Re-implemented InMemory storage backend for better performance

Bugfixes:

  • Launching multiple Titan servers in one cluster with RF>1

  • Updated and improved the Astyanax adapter for Cassandra

  • Improved robustness of ID allocation

  • Vertex iteration in embedded Cassandra with BoP

  • Updated Titan server scripts and configuration files

  • Fixed issues around automatic transaction migration of vertices and edges

  • Fixed BerkeleyJE concurrency clean-up issue

  • Cleaned up and trimmed storage backend interfaces

  • Fixed ghost vertex issue when iterating over vertices

  • Fixed datatype conversion issues

Check the issue tracker for a full list of fixed issues.

Version 0.3.0 (March 29, 2013)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.3.0</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.2

  • HBase 0.94

  • BerkeleyJE 5.0.73

Features:

  • Geo, numeric range, and full-text indexing supporting multiple index backends

  • Edge Indexing

  • Refactoring of Titan-core for enhanced performance due to selective de-serialization

  • New query optimizer for vertex-centric and graph queries

  • Vertex centric query caching for selective queries

  • InMemoryGraph implementation

  • IdGraph support

  • Relaxed transactional scope requirement for vertices

  • Edge no longer extends Vertex

  • Updated to Kryo 2

Bugfixes:

  • Cassandra Thrift Max-Message-Size issue

  • JMX settings for Titan Server

  • Out-unique edges

  • Modified state in global graph operations

  • see issue tracker for a full list

Version 0.2.1 (March 22, 2013)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan-core</artifactId>
   <version>0.2.1</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.2.0

  • HBase 0.94

  • BerkeleyJE 5.0.58

Features:

  • Refactored POM into multi-module project

  • Support for global vertex (g.V) and edge (g.E) iteration for cassandra and hbase backends

  • Compatible with Cassandra 1.2.0 for all three storage adapters: embedded, thrift, astyanax

  • Improved HBase adapter:

    • Automatic Master launch for testing

    • Refactored batch mutation and reading

    • Optimized HBase operations

  • Updated to Blueprints 2.3.0

  • Better integration with Rexster Rexpro

  • Automatic directory creation for local storage backends

  • Internal Titan version handling and compatibility checks

  • Added additional performance tests

Bugfixes:

  • Resolved issues around Java 1.7

  • Shutdown error in astyanax adapter

  • Made thrift frame and message size configurable for cassandra adapters

  • see issue tracker for a full list

Special Thanks to:

  • Pavel Yaskevich (xedin)

Version 0.2.0 (December 24, 2012)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan</artifactId>
   <version>0.2.0</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.1.3 & 1.1.4

  • HBase 0.94.1

  • BerkeleyDB 5.0.58

  • TinkerPop (Blueprints, Gremlin, Rexster) 2.2.0

  • This version is incompatible with the previous version of Titan. Please follow the [[Upgrade Instructions]] to switch to the new version.

Features:

  • Embedded Cassandra: Titan can be embedded with Cassandra, that means, Titan starts a Cassandra node in the same JVM and uses efficient in process communication to store and retrieve data.

  • [[Titan Server]]: Titan comes with a light-weight Gremlin query server.

  • Streamlined configuration settings. Please review the new configuration options if you are upgrading from an older version of Titan.

  • Many small performance improvements throughout the code. Please review the issue tracker and the commit log for more details.

Bugfixes:

  • Fixed edge sorting bug which caused edges to be returned in a random order even when a vertex centric index was defined.

  • Fixed id allocation bug that causes Titan to read the entire row during id allocation which can lead to id allocation failures.

  • Completely refactored diskstorage package for better code quality and performance.

  • Fixed edge caching bug for composite primary keys on edges.

  • Fixed a number of smaller bugs. Please review the issue tracker and the commit log for more details.

Special Thanks to:

Version 0.1.0 (September 7, 2012)

<dependency>
   <groupId>com.thinkaurelius.titan</groupId>
   <artifactId>titan</artifactId>
   <version>0.1.0</version>
</dependency>

Tested Compatibility:

  • Cassandra 1.1.3 & 1.1.4

  • HBase 0.94.1

  • BerkeleyDB 5.0.58

Features:

  • The focus of the initial Titan release was on building a stable and robust graph database as well as incorporating community feature suggestions and feedback from early adopters of Titan.

Bugfixes:

  • Fixed concurrency and synchronization issues

Special Thanks to: