Titan Changelog

What's new in Titan 1.0.0

Oct 10, 2015
  • Features added since version 0.5:
  • Includes a number of bug fixes and optimizations
  • Query execution engine optimizations
  • TinkerPop 3 compatibility:
  • Includes support for Spark and Giraph GraphComputers
  • Titan test suite includes TP3 compliance tests
  • A number of Titan-specific TraversalStrategies to optimize traversal execution for graph-global and vertex-centric indexes
  • Tested Compatibility:
  • Cassandra 2.1.9
  • HBase 0.94.25, 0.96.2-hadoop2, 0.98.8-hadoop2, 1.0.2
  • BerkeleyJE 5.0.73
  • Elasticsearch 1.5.1
  • Lucene 4.10.4
  • Solr 5.2.1
  • TinkerPop 3.0.1-incubating
  • Java 1.8

New in Titan 0.5.4 (Feb 16, 2015)

  • Features:
  • Optimized away an unnecessary property read in certain property overwrite cases
  • Added gremlin.sh option w : sets the number of initial elements in a result collection shown in the shell
  • Bug fixes:
  • Interacting with Edge properties of type Long no longer fails when storage.meta.edgestore.timestamps=true
  • Fixed a titan-hadoop bug triggered when reading unidirectional edges from Titan
  • Fixed a Solr query string composer bug
  • Fixed titan-hadoop fragmenting vertices when cassandra.input.widerows=true

New in Titan 0.5.3 (Jan 10, 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
  • Bug fixes:
  • 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

New in Titan 0.5.2 (Dec 30, 2014)

  • 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
  • Bug fixes:
  • 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

New in Titan 0.4.4 (Apr 25, 2014)

  • 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)
  • Bug fixes:
  • Added 0.4.2 to compatible-version string (and 0.4.3)

New in Titan 0.4.3 (Apr 25, 2014)

  • 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
  • Bug fixes:
  • 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

New in Titan 0.4.2 (Jan 8, 2014)

  • 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
  • Bug fixes:
  • 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

New in Titan 0.4.1 (Nov 26, 2013)

  • 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.
  • Bug fixes:
  • 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

New in Titan 0.4.0 (Nov 6, 2013)

  • 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
  • Bug fixes:
  • 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

New in Titan 0.3.2 (Oct 10, 2013)

  • 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
  • Bug fixes:
  • 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