Skip to content

Latest commit

 

History

History
428 lines (386 loc) · 22.2 KB

CHANGELOG.md

File metadata and controls

428 lines (386 loc) · 22.2 KB

Change Log

All notable changes to this project will be documented in this file. This project aims to adhere to Semantic Versioning.

[3.2.3] - 2018-08-03

Fixed

Added

Changed

  • MBeans registered in JMX no longer use an incrementing integer and instead are created under unique IDs for each client.
  • JMX is no longer used to expose configuration and pool stats by default. To reenable JMX, set manta.metric_reporter.mode/MANTA_METRIC_REPORTER_MODE to JMX.
  • Upgraded upstream dependencies to latest stable versions:
    • HTTP Signatures dependency: 4.0.6 → 4.0.8
    • jna-gmp: 2.0.0 → 2.1.0
    • BouncyCastle: 1.58 → 1.59
    • Apache HttpClient: 4.5.3 → 4.5.5

[3.2.2] - 2018-05-04

Fixed

[3.2.1] - 2017-12-01

Added

  • Load balancer IP has been added to response headers as x-load-balancer. The header will be injected into the response if it is not already present.
  • Azul Systems' Zulu JDK has been added to the Travis-CI test matrix.
  • Recursive directory creation can now attempt to skip a configurable number of levels in order to avoid redundant PUT requests. See manta.skip_directory_depth / MANTA_SKIP_DIRECTORY_DEPTH in the configuration documentation for an explanation of how the optimization can be enabled.
  • Expect: 100-continue header can now be set by configuring a timeout value for manta.expect_continue_timeout / MANTA_EXPECT_CONTINUE_TIMEOUT.

Fixed

[3.2.0] - 2017-11-03

Added

  • Added method MantaClient.find() which allows for recursive directory listing.
  • Support for reading content-type and content-md5 header information from directory listings
  • Added connection request timeout configuration parameter: manta.connection_request_timeout / MANTA_CONNECTION_REQUEST_TIMEOUT
  • MantaClient will now accept an externally-created HttpClientBuilder in order to allow for customization now available through standard configuration parameters. Users are expected to provide a MantaConnectionFactoryConfigurator containing their custom instance to the MantaClient(ConfigContext, MantaConnectionFactoryConfigurator) constructor. Constructor documentation explains the benefits and trade offs.
  • MantaClient now allows for modification of authentication parameters by dynamically-reloading configuration state. AuthAwareConfigContext can be used to wrap the desired configuration and provides a method to update derived objects atomically.

Fixed

Changed

  • Validation of paths passed to MantaClient is now more consistently strict. More useful errors should be thrown sooner for invalid paths, without any change to valid requests.
  • Core library code has has been extracted from java-manta-client into a separate module named java-manta-client-unshaded allowing users to incorporate the library into their project without bundled dependencies.
  • Constructor signatures for StandardHttpHelper, EncryptionHttpHelper, and MantaSeekableByteChannel which accepted a MantaConnectionFactory have been deprecated.

[3.1.6] - 2017-08-15

Fixed

  • Potential file corruption caused by automatic retries as a result of 503 responses when utilizing client-side encryption with regular PUT requests.
  • MPU finalization meant it was impossible to retry last part in case of 503 responses.
  • Object content verification of standard PUT requests was being skipped if the server omitted the computed MD5 from the response.

[3.1.5] - 2017-07-28

Fixed

  • MPU retries still causing file corruption when server responds with 503 Service Unavailable. Apache HttpClient code path audited to ensure no other automatic retries can occur.

[3.1.4] - 2017-07-21

Changed

  • The heuristics for guessing Content-Type have been adjusted to give more consistent results across platforms.

Fixed

  • When using encryption in combination with Multipart Uploads, automatic retries triggered by the underlying HTTP library could cause file corruption. In case of a network error automatically certain requests would be retried transparently (e.g. those backed by Files and byte[] data). This caused authentication and encryption state erroneously include the partial content from the initial request. As a result of this fix encrypted MPU operations will utilize the BouncyCastle cryptography library even when libnss (PKCS#11) is installed.

[3.1.3] - 2017-06-29

Fixed

[3.1.2] - 2017-06-22

Fixed

[3.1.1] - 2017-06-14

Changed

  • Added additional error context information for IOExceptions thrown during read() in encrypted streams.

Fixed

[3.1.0] - 2017-06-07

Several related URL encoding bugs have been fixed. Objects with non-alphanumeric characters created by java-manta may have been created with unexpected encoding characters. Only the object names were affected, not the content.

Changed

[3.0.0] - 2017-04-06

Changed

  • Upgraded HTTP Signatures library to 4.0.1.
  • Moved configuration validation into a static method on ConfigContext.
  • Manta specific content-types are now contained in MantaContentTypes.
  • MantaClient.close() no longer throws Exception.
  • Liberalized boolean parsing in configuration - true, t, T, yes, and 1 are equal true.
  • Job related classes have been moved to the com.joyent.manta.client.jobs package.
  • In BaseChainedConfigContext, setHttpsCiphers has been renamed to setHttpsCipherSuites to be in alignment with the getter of a similar name.
  • Request IDs are now generated using time-based UUIDs.

Added

  • Added version information to user agent and debug output.
  • Added simple CLI to use for debugging.
  • Added configuration dump system property: manta.configDump
  • Add JMX to monitor configuration and thread pools
  • SettableConfigContext has been added as an interface to indicate that a given config context has settable properties.
  • Added isClosed() method to MantaClient.
  • Added HTTP buffer size configuration parameter.
  • Added TCP socket time out configuration parameter.
  • Added verify upload checksum configuration parameter.
  • Added upload buffer size configuration parameter.
  • Added getInputStream method that accepts byte range parameter.
  • Added support for client-side encryption.
  • Added support for server supported multipart.
  • Added support for client-side encrypted multipart upload.
  • Added support for client-side encrypted HTTP range download.
  • Added module supporting serializing encrypted MPU upload objects.
  • Added support for libnss via PKCS11.
  • Added support for FastMD5 native MD5 calculation.
  • Added support for single-second caching of HTTP signatures.
  • Added support for ECDSA and DSA HTTP signatures.

Removed

  • Remove Google HTTP Client and replaced it with stand-alone Apache Commons HTTPClient.
  • Removed MantaCryptoException.
  • Removed signature cache TTL and HTTP transport configuration parameters because they are no longer relevant in the 3.0 implementation.

Fixed

[2.7.1] - 2016-11-11

Added

  • Added id getter to MantaJobBuilder.Run.

Fixed

[2.7.0] - 2016-11-10

Changed

  • Added set -o pipefail to multipart upload jobs so that we catch job failure states explicitly.
  • We now throw exceptions when ABORTED and UNKNOWN upload states are encountered when executing MantaMultipartManager.waitForCompletion().
  • We now explicitly handle InterruptedExceptions on MantaClient.close() by not exiting early and continuing to close all of the dangling resources.
  • Added check for SHA256 fingerprints. We error and display a message to inform the user to use a MD5 fingerprint for the time being.
  • We now store the multipart upload job id on the metadata of the metadata object which allows us to get the job id without doing a listing.

[2.6.0] - 2016-11-03

Added

  • Added support for multipart uploads implemented as Manta jobs.

Changed

  • Upgraded HTTP Signatures dependency.
  • Resolved numerous compiler warnings.
  • Improvements in recursive delete operations.

Fixed

[2.5.0] - 2016-10-10

Added

  • Setting HTTP Headers is now supported when making GET requests.

Changed

  • Upgraded HTTP Signatures dependency.
  • Upgraded Apache HTTP Client.
  • Upgraded Google HTTP Client.
  • Resolved compiler warnings for MantaSSLSocketFactory and HttpRequestFactoryProvider.

[2.4.3] - 2016-09-22

Changed

  • Wait / notify behavior in MantaObjectOutputStream was improved for close() events.

Fixed

[2.4.2]

Version skipped due to a release error.

[2.4.1] - 2016-06-14

Fixed

[2.4.0] - 2016-06-01

Added

  • MantaSeekableByteChannel now extends from InputStream.
  • Added move method to MantaClient.
  • MantaClient.putDirectory now returns a boolean value indicating the successful creation of a new directory.
  • Added OutputStream implementation that allows for uploads via an OutputStream.
  • Added support for uploading using File objects, thereby getting retryable requests.
  • Added support for uploading byte arrays directly, thereby getting retryable requests.
  • Added logging of load balancer IP upon exception. This is implemented using the SLF4J MDC class.

Changed

  • Putting strings now acts as a retryable request.
  • Fixed retrying so that it works consistently with Google HTTP Client.
  • We try to discover the mime-type from the filename when it isn't set as part of the header.

Fixed

[2.3.0] - 2016-04-22

Changed

  • Upgraded http-signatures to 2.2.0 so that we are keeping pace with upstream changes.
  • Rejiggered Maven shade settings to better exclude certain dependencies and shade others so that they won't cause conflicts.
  • Upgraded Apache Commons Collections to 4.1 because it has security patches.
  • Added Apache Commons Lang as a dependency.
  • Added additional details about HTTP requests to all exceptions.
  • Changed license to MPLv2.

[2.2.3] - 2016-03-12

Added

  • We catch IOExceptions and rethrow them with additional debug output appended.

Changed

  • Upgraded http-signatures to 2.0.2 so that we support native gmp on SmartOS.

[2.2.2] - 2016-01-13

Changed

  • Changed signature algorithm log statement to debug from info.
  • Change DNS resolver implementation to randomly rotate among the IPs returned from DNS for the Manta host when using the ApacheHttpTransport.

[2.2.1] - 2016-01-07

Added

  • Added logging message for signing algorithm.
  • Added x-request-id output on HTTP errors.
  • Add toString methods for ConfigContext.

[2.2.0] - 2016-01-02

Added

  • Added http transport library configuration parameter.
  • We now honor TLS cipher suite parameters (https.cipherSuites) when using ApacheHttpTransport.
  • We now honor TLS protocols parameters (https.protocols) when using ApacheHttpTransport.
  • We now allow configuration of TLS protocols and ciphers.
  • Upgraded http-signatures library to 1.1.0.
  • We now allow you to disable HTTP signature based authentication altogether.
  • We now allow you to disable native code cryptographic performance enhancements.
  • We now enable HTTP signature caching by default with a TTL of 1000ms, but it can be disabled by setting it to 0ms.

[2.1.0] - 2015-12-28

Added

  • Added maximum connections configuration parameter.

[2.0.0] - 2015-12-21

Changed

  • MantaException now inherits from RuntimeException.
  • MantaClientHttpResponseException now inherits from IOException.
  • MantaUtils.inputStreamToString now supports specifying a Charset.
  • Changed newInstance() methods to constructors in MantaClient.
  • Changed to a multi-module Maven project.
  • Broke out integration tests into a separate Maven module so that we can test classes in their shaded state.
  • Bumped minimum Java version to 1.8.
  • Changed to a JDK 8 Stream model for streamable resources.
  • Many utility methods used for making HTTP requests have been moved to the HttpHelper class.

Added

  • Added read-only support for NIO SeekableByteChannel streams.
  • Added support for recursive directory creation.
  • Added support for home directory path look up in ConfigContext.
  • Added MantaMetadata class for handling object metadata.
  • Added MantaHttpHeaders class for handling custom HTTP headers.
  • Added build to Travis CI.
  • Added closeQuietly() to MantaClient.
  • Added parsing of JSON error responses from Manta API.
  • Added error response enum MantaErrorCode.
  • Added support for signed URLs.
  • Added support for RBAC roles.
  • Added Manta compute job support.
  • Added HTTP retries as a configuration parameter.
  • Added additional Maven enforcer checks.

Removed

  • Removed all non-context based constructors from MantaClient.

[1.6.0] - 2015-11-11

Changed

  • Massive reformatting and clean up of the entire code base.
  • We now use Apache HTTP Client to make all of our HTTP requests.

Added

  • Added additional documentation.
  • Added system properties configuration support.
  • Added chained configuration context support.
  • Added configuration context unit tests.

Fixed

[1.5.4] - 2015-10-31

Changed

  • Project came under new leadership.
  • Unit test framework changed to TestNG.
  • MantaClient is no longer declared final.
  • Changed developer information in pom.xml.
  • More code formatting clean up and javadoc changes.

Added

  • Added MantaUtils test cases.
  • Added additional key file path sanity checks.

[1.5.3] - 2015-10-28

Changed

  • Migrated logger to use slf4j.
  • Upgraded google-http-client to 1.19.0
  • Moved Junit Maven scope to test.
  • Upgraded JDK to 1.7 and replaced Commons IO method calls with standard library method calls.
  • Upgraded bouncycastle libraries to 1.51.
  • Maven now creates a shaded version that includes everything except bouncycastle and slf4j.
  • Bumped Maven dependency versions.
  • Enabled Manta unit tests to draw their configuration from environment variables.
  • Updated release documentation.

Added

  • Added nexus release plugin.

Fixed

  • Fixed checkstyle failures.
  • Fixed pom.xml settings so that it will properly release to Maven Central.