Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ignite 2.3.2.b1 #3452

Closed
wants to merge 181 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
181 commits
Select commit Hold shift + click to select a range
be91bbf
Fixed "IGNITE-6234 Initialize schemaIds to empty set if schemas field…
kristoffSC Oct 10, 2017
0838960
IGNITE-6545: Failure during Ignite Service.cancel() can break normal …
AMashenkov Oct 10, 2017
57547b5
Merge branch 'ignite-2.3.1' into ignite-2.3.2
Oct 13, 2017
08798f8
IGNITE-6605: SQL: common backup filter. This closes #2836.
Oct 13, 2017
2b59a24
IGNITE-6631: Minor improvements to GridH2KeyValueRowOnheap. This clos…
Oct 16, 2017
98438c9
IGNITE-6632: SQL: simplified GridH2Row inheritance tree. This closes …
Oct 16, 2017
95b7ab5
IGNITE-6634: Removed IgniteDistributedJoinTestSuite. It's tests are d…
Oct 16, 2017
9c91def
Merge branch 'ignite-2.3.1' into ignite-2.3.2
Oct 16, 2017
911ab7a
IGNITE-6627 .NET: Fix serialization of enums within generic collections
Oct 17, 2017
3ba374c
IGNITE-6463 Web Console: Fixed output of big numbers in SQL query res…
akuznetsov-os Oct 6, 2017
b67feb0
IGNITE-5767 Web console: Use byte array type instead of java.lang.Obj…
vsisko Oct 9, 2017
8e15603
IGNITE-6574 Remove pending requests in case STATUS_AUTH_FAILURE && cr…
akuznetsov-os Oct 6, 2017
7a0300a
Merge branch 'ignite-2.3.1' into ignite-2.3.2
Oct 18, 2017
ad01f9b
IGNITE-6647 Web Console: Implemented support of schema migration scri…
akuznetsov-os Oct 19, 2017
0c66344
IGNITE-6627 .NET: Fix repeated known metadata updates
ptupitsyn Oct 19, 2017
1b8abd2
IGNITE-6647 Added missing Mongo injector.
akuznetsov-os Oct 20, 2017
a221066
IGNITE-6647 Web Console: Added folder for modules migrations.
akuznetsov-os Oct 20, 2017
da8a9d5
Merge branch 'ignite-2.3.1' into ignite-2.3.2
ptupitsyn Oct 23, 2017
69fdac3
IGNITE-5909 Added list editable component.
Oct 23, 2017
4a2c383
IGNITE-6362 NPE in Log4J2Logger
Oct 24, 2017
089ebec
IGNITE-6671 Web Agent: Fixed data type conversion for Oracle NUMBER(N…
vsisko Oct 25, 2017
1e56de8
IGNITE-6572: SQL: allowed many cache to share the same schema. This c…
dmekhanikov Oct 25, 2017
e53e093
Merge branch 'ignite-2.3.1' into ignite-2.3.2
Oct 26, 2017
531086e
IGNITE-6539 WAL parser fails if empty log files exist in directory - …
Oct 5, 2017
24e063f
IGNITE-6553 Standalone WAL iterator fails to handle WAL delete data r…
Oct 5, 2017
ac86276
IGNITE-6111: SQL: ability to execute INSERT INTO without specifying c…
Oct 26, 2017
937bc30
IGNITE-6534: SQL: configure NotNull fields with annotations. This clo…
shroman Oct 26, 2017
3675d64
ignite-5860 Try process TcpDiscoveryClientReconnectMessage from socke…
dmekhanikov Oct 27, 2017
b1e6701
IGNITE-6570 Added missing import.
akuznetsov-os Oct 30, 2017
748f6df
IGNITE-6670 Web Agent: Improved demo startup.
akuznetsov-os Oct 30, 2017
923b744
IGNITE-6789 Web Console: Reworked sorting of caches on Queries screen.
akuznetsov-os Oct 30, 2017
488c209
IGNITE-6398 Web Console: Added support for ClientConnectorConfiguration.
vsisko Oct 30, 2017
b433df4
IGNITE-6746 Persist system cache when persistent data regions are pre…
agoncharuk Oct 30, 2017
436987f
Merge branch 'ignite-2.3.1' into ignite-2.3.2
Nov 1, 2017
b6cd74c
IGNITE-6641 Improved partition ID handling for links - Fixes #2866.
sergey-chugunov-1985 Oct 27, 2017
0a80f2a
IGNITE-6641 Fixed partition ID handling improvement
sergey-chugunov-1985 Nov 1, 2017
926b5aa
IGNITE-6624: SQL: optimized backup filtering (no key wrap/unwrap). Th…
Nov 1, 2017
d405306
IGNITE-6626: SQL: avoid row materialization when filtering out not re…
devozerov Nov 2, 2017
7f39934
IGNITE-6778 Fixed GridCacheDatabaseSharedManager#persistenceEnabled m…
agoncharuk Nov 3, 2017
61e07a6
IGNITE-6825: SQL: Fixed GridH2Table unlock in case of interrupt. This…
Nov 3, 2017
0721b21
IGNITE-4172: SQL: Added support for Java 8 Time API classes in date\t…
symbicator Nov 3, 2017
4fafd18
IGNITE-6555 When a CacheStore with a @SpringResource annotated field …
symbicator Oct 25, 2017
47f02bf
IGNITE-6511: Fixed SQLGetDiagRec behaviour in ODBC
isapego Oct 25, 2017
3c1efb6
IGNITE-6639 TCP communication skip local node loopback address. This …
mcherkasov Oct 25, 2017
6ba2ec8
IGNITE-6774 Java doc is broken: "LUDecomposition.java:40: warning - T…
Mikhail1988 Oct 27, 2017
80fce62
IGNITE-6654 Ignite client can hang in case IgniteOOM on server. This …
niktikhonov Oct 25, 2017
c50c9ad
IGNITE-6071 White list of exceptions to suppress in createTcpClient. …
niktikhonov Oct 26, 2017
e0dcdac
IGNITE-6668 Do not block metadata read when calling from discovery th…
sergey-chugunov-1985 Oct 23, 2017
8d86348
IGNITE-6536 Node fails when detects mapping storage corruption
sergey-chugunov-1985 Oct 11, 2017
f418645
IGNITE-6737 GridDeploymentPerVersionStore retries loading class infin…
Nov 8, 2017
691d1e1
Fixed licensed header
Nov 8, 2017
f129ab6
IGNITE-6722 Writing to disk metadate in registerLocally methods was a…
sergey-chugunov-1985 Nov 7, 2017
c297770
IGNITE-6833 Web Console: Fixed incremental SASS compilation in dev-se…
AlexDel Nov 10, 2017
4f59b3b
IGNITE-6824 Web Console: Upgraded Angular from 1.5.x to 1.6.x.
AlexDel Nov 10, 2017
ef00c02
IGNITE-6357: Added support of multiple SQL statements for ODBC
isapego Oct 31, 2017
83ec043
IGNITE-6765: Added test for closing ODBC statement
isapego Nov 3, 2017
b066e01
IGNITE-6841: Increased ODBC protocol version for multiple statements.
isapego Nov 10, 2017
b97e04c
Backport of IGNITE-6649: Added eviction policy factory to cache confi…
AMashenkov Nov 10, 2017
cee1824
IGNITE-6859 Don't register "cols" directive by it's function name.
Nov 13, 2017
f52faa8
IGNITE-6824 Add step validator support to pcScaleNumber directive, ad…
Nov 13, 2017
70a8ed2
GG-13021: Fixed NPE on node stop when SSL is used.
AMashenkov Nov 13, 2017
c756374
IGNITE-6795 WebConsole: Improved file name with query export results.
akuznetsov-os Nov 14, 2017
f05c03b
IGNITE-6863 Visor CMD: Fixed check that cache available on node.
vsisko Nov 14, 2017
8cdfced
IGNITE-6835 ODBC driver now handles ungraceful TCP disconnects
isapego Nov 14, 2017
5270067
IGNITE-6859 Web Console: Do not split base64 strings to multiple line…
Klaster1 Nov 15, 2017
e080b8e
IGNITE-6836: Implemented query timeout.
isapego Nov 15, 2017
854499a
IGNITE-5635 Web Console: Added spinning wheel for execute, scan and e…
AlexDel Nov 15, 2017
0602360
IGNITE-4394 Web Console: Select only server nodes for local queries o…
AlexDel Nov 15, 2017
49c447a
IGNITE-6926 Web console: Fixed SimpleWorkerPool next worker selection…
akuznetsov-os Nov 16, 2017
775e5d0
IGNITE-6932: SQL: cache-less query execution now checks for cluster s…
Nov 17, 2017
2ac0170
IGNITE-6876: Added in ODBC support for SQL_ATTR_CONNECTION_TIMEOUT
isapego Nov 20, 2017
c1b75f7
IGNITE-4454. Added duration and node ID in results header and 'Show q…
AlexDel Nov 21, 2017
cd6e315
5195 DataStreamer can fails if non-data node enter\leave the grid.
mcherkasov Nov 14, 2017
ae5ad71
IGNITE-6914. Web Console: Exporting large CSV files via file-saver li…
AlexDel Nov 21, 2017
74cb0e9
IGNITE-6976 Visor CMD: Task to put/get/remove data to/from caches.
vsisko Nov 21, 2017
cf1a73c
IGNITE-4394 Web Console: Fixed memory leak in Messages.service.
AlexDel Nov 21, 2017
b1ecbdd
IGNITE-5641 Web Console: Added "Copy to clipboard" action on Queries …
AlexDel Nov 21, 2017
305b1b3
IGNITE-6984: Make cache creation slightly more verbose.
AMashenkov Nov 22, 2017
9a92adf
IGNITE-6922 Class cannot undeploy from grid in some specific cases - …
Nov 22, 2017
b8c7663
master Fixed serialVersionUID for compatibility.
akuznetsov-os Nov 27, 2017
89a7a27
Fixed IGNITE-6838.
sboikov Jan 9, 2017
3f7d3bb
IGNITE-7020 Web Console: fixed resize of pinned columns.
Nov 28, 2017
7b9d31d
IGNITE-4454. Web Console: Minor UI changes.
AlexDel Nov 28, 2017
601c90c
IGNITE-6919. Web Console: Minor fix of page title.
AlexDel Nov 28, 2017
9e5ea43
Backported IGNITE-6690 DiscoverySpi: Clientmode Ignite should not fai…
Oct 31, 2017
0edbeb7
Fixed TcpDiscoveryWithWrongServerTest.
Nov 2, 2017
0e04b36
GG-13042 Backport GG-13035 changes to 1.9.x to keep libs in sync
Nov 9, 2017
c2b8c93
IGNITE-6818 Handle half open connection in communication.
dkarachentsev Nov 13, 2017
2644b51
IGNITE-4398. Prevent $http caching in IE11.
AlexDel Dec 5, 2017
248ad6a
IGNITE-6873 Notify users about outdated browser.
Dec 5, 2017
4f5c30a
IGNITE-6971 Ignite Logger type & logging file config indication. This…
Dec 6, 2017
b61b4d0
IGNITE-7088 Fix implementation of DIRECT comparator for ordering cach…
ezhuravl Dec 7, 2017
73a6ab4
IGNITE-7008 TcpDiscoverySharedFsIpFinder fails with NPE if address ca…
AMashenkov Dec 7, 2017
b0c8d95
IGNITE-7085 When PDS is enabled and IGNITE_BINARY_SORT_OBJECT_FIELDS …
symbicator Dec 8, 2017
ea857ff
IGNITE-6999 Visor CMD: Added support for "-quiet" option in batch mode.
vsisko Dec 10, 2017
c1a4745
IGNITE-6920 Added direct-install build for Web Console.
nva Nov 17, 2017
41f4373
IGNITE-6927 Added Web Console direct-install build.
Nov 20, 2017
46cd6d9
IGNITE-6390 Web Console: Added component for cluster selection.
Dec 6, 2017
3bf69d5
IGNITE-7106 Optimized cache metrics collection.
akuznetsov-os Dec 6, 2017
b331fa5
IGNITE-6987 Showed actual client connector configuration "Thread pool…
vsisko Dec 6, 2017
a15abff
IGNITE-6897 Visor: Show valid message for caches when cluster is inac…
vsisko Dec 6, 2017
375dfa5
IGNITE-7133 Web Console: Implemented service for managing icons.
Klaster1 Dec 7, 2017
2f1b749
WC-253 Web Console: Show user-friendly error message.
vsisko Dec 11, 2017
aa04bd7
IGNITE-4835 Visor CMD: Added ability to start cache rebalance.
akuznetsov-os Dec 11, 2017
b5782b0
ignite-1267 Fixed job stealing so that newly joined node is able to s…
AMashenkov Dec 5, 2017
352d59f
IGNITE-7157: Fixed deadlock when partition eviction run in different …
AMashenkov Dec 11, 2017
96585f2
IGNITE-7145 Visor CMD: Fixed stack overflow for VisorConsoleCommand.w…
vsisko Dec 11, 2017
cfa86ab
IGNITE-7121 Visor CMD: Fixed reading last command line in batch mode.
vsisko Dec 12, 2017
c0a9790
IGNITE-7147 Web Console: Added "Number of connected clusters" component.
dmitriyff Dec 12, 2017
24ffe3e
IGNITE-7147 Minor fix.
akuznetsov-os Dec 12, 2017
e613692
IGNITE-7052 S3 IP finder: add an ability to provide endpoint address.…
Dec 8, 2017
71bd096
IGNITE-7053 S3 IP finder: support server side encryption. This close …
Dec 11, 2017
d876123
S3CheckpointSpi javadoc merge error fixed
Dec 12, 2017
7fd7072
IGNITE-7114: C++ node can start without example folder now
isapego Dec 12, 2017
1cd4d25
IGNITE-6920 Fixed dependencies resolving.
nva Nov 24, 2017
95381a3
IGNITE-6390 Web Console: Fixed cluster selector on topology changed.
akuznetsov-os Dec 13, 2017
d7cb5b8
IGNITE-6828 Fixed confusing messages SLF4J: Failed to load class at I…
Nov 30, 2017
428c9bf
IGNITE-6423: PDS could be corrupted if partition have been evicted an…
AMashenkov Dec 13, 2017
2209f35
IGNITE-4454 Minor fix for duration filter.
akuznetsov-os Dec 13, 2017
4546eb3
IGNITE-6995 Visor CMD: Updated eviction policy factory in configs.
akuznetsov-os Dec 13, 2017
394e831
IGNITE-4943 Web Console: Improved tooltips on "Admin panel" screen.
vsisko Dec 14, 2017
abb9254
IGNITE-6920 Fixed rhel detection in web console direct-install.
nva Dec 14, 2017
b9436eb
IGNITE-7199 Web console: several minor improvements.
akuznetsov-os Dec 14, 2017
0089fd7
IGNITE-7199 Visor CMD: minor refactoring.
akuznetsov-os Dec 14, 2017
37f4bf0
IGNITE-7172 Minor fix.
akuznetsov-os Dec 14, 2017
61f6d17
IGNITE-7172 Added examples on queries page.
Dec 12, 2017
24f0e47
IGNITE-7172 Minor fix.
akuznetsov-os Dec 14, 2017
b4b528e
IGNITE-7172 Fix minor CSS issues.
Klaster1 Dec 13, 2017
bb55707
IGNITE-7208 Fixed pug template.
akuznetsov-os Dec 15, 2017
8965230
IGNITE-5741 Enable test after fix - Fixes #2865.
Oct 23, 2017
16ab241
IGNITE-6423: PDS could be corrupted if partition have been evicted an…
AMashenkov Dec 13, 2017
0781f19
IGNITE-7086 - Backups are not updated when ReadFromBackup=true and Re…
dkarachentsev Dec 8, 2017
1c32e65
IGNITE-2766 Ensure that cache is available after client ID changes. T…
niktikhonov Nov 27, 2017
e19cf50
ignite-6788 Ignite WAL reader fails on Tx marker record for persisten…
Nov 1, 2017
36f2aab
IGNITE-6839 Delete binary meta before tests, PDS compatibility tests …
Oct 4, 2017
e38ecc9
IGNITE-7091 Fixing assertion raising because of serializer switch - F…
Dec 4, 2017
ea00851
IGNITE-6916: node joining with enabled pds and empty disc space cause…
zstan Nov 22, 2017
325f837
IGNITE-7070 Ignite PDS compatibility framework improvements - Fixes #…
Nov 30, 2017
c71da0c
IGNITW-7093 added plugin to build test.jar to ignite-compatibility po…
Dec 5, 2017
46769a1
IGNITE-7244 Added missing README.txt for development utils
agoncharuk Dec 19, 2017
bc1329a
IGNITE-7170 Fix javadoc MemoryConfiguration (20% instead of 80%). Thi…
Dec 12, 2017
d929c84
IGNITE-7206 Stop pings if current node is stopping.
dkarachentsev Dec 20, 2017
0abfc34
IGNITE-6976 Visor CMD: Implemented simple cache put/get/remove operat…
vsisko Dec 21, 2017
23f5e81
IGNITE-7106 Improved collecting of rebalance metrics.
akuznetsov-os Dec 21, 2017
fed3016
master - Added missing license file
agoncharuk Dec 21, 2017
ebb20d5
IGNITE-7244 Added missing README.txt for development utils
Oct 4, 2017
ac918c8
IGNITE-7197 Avoid NPE in services() by waiting on latch
alamar Dec 20, 2017
0bb705b
IGNITE-7021 IgniteOOM is not propogated to client in case of implicit…
mcherkasov Dec 22, 2017
0c575b2
ignite-6667 Reuse DiscoCache when possible.
ascherbakoff Oct 26, 2017
20a8945
ignite-6667 Reuse DiscoCache when possible
ascherbakoff Nov 16, 2017
72da7b2
ignite-6973 Fixed cache deploymentId generation for cache started on …
sboikov Nov 22, 2017
c5f3491
IGNITE-6767 Reset non-valid ner cache entry
Nov 13, 2017
e4dd0a6
fixing issue with checkpoint lock
Dec 19, 2017
282103e
Fixing checkpoint lock acquisition
agoncharuk Dec 22, 2017
42e3737
IGNITE-7257 Web Console: Fixed reconnection after change profile.
dmitriyff Dec 27, 2017
62432a6
IGNITE-7168 Remove remains of web agent download feature from web-con…
Dec 27, 2017
06fafb6
IGNITE-6647 Web Console: Support recreate index in migrations.
akuznetsov-os Dec 28, 2017
4d3701d
IGNITE-7034 Web Console: Hide connected clusters in "Become this user…
vsisko Jan 10, 2018
2330b2c
ignite-6858 Fail query if thread has is cache lock and exchange is in…
ascherbakoff Nov 16, 2017
d1b6334
IGNITE-7036 Web Console: Improved export of grouped data on Admin panel.
dmitriyff Jan 11, 2018
84cb907
ignite-2.3.2 Version for release.
akuznetsov-os Jan 11, 2018
142322a
IGNITE-6995 Web Console: Fixed code generation for near cache for ser…
vsisko Jan 11, 2018
698cdfa
IGNITE-7391 Web Console: Fixed code generation.
vsisko Jan 12, 2018
b924697
IGNITE-7177 Correctly handle custom messages which do not change affi…
agoncharuk Dec 12, 2017
ca72c82
Fixed affinityReadyFuture (lastFinishedFuture could be null for compu…
sboikov Oct 24, 2017
4b74a68
IGNITE-6437: DataStructure can not be obtained on client if it is cre…
zstan Nov 21, 2017
29876c2
Minor: moved custom events processing in GridContinuousProcessor's me…
sboikov Nov 29, 2017
be91de4
IGNITE-6015: Rollback on exception in commitIfLocked.
andrey-kuznetsov Dec 22, 2017
8acf356
ignite-5955 Skip disconnected clients in GridAbstractTest.awaitTopolo…
zstan Dec 25, 2017
6a9c177
ignite-7049 Fixed error in tx timeout processing for optimistic/seria…
ascherbakoff Dec 2, 2017
9f60a89
ignite-7377 Correctly re-create cache entry for tx entry
sboikov Jan 11, 2018
250c0df
IGNITE-6947 Abandon remap after single map if future is done (fixes NPE)
agoncharuk Nov 17, 2017
f495c6d
ignite-7340 Fix flaky GridServiceProcessorMultiNodeConfigSelfTest#che…
dkarachentsev Jan 11, 2018
9580c53
IGNITE-6542 Reliably close SocketChannel in TcpCommunicationSpi.
alamar Oct 11, 2017
ff79d6e
IGNITE-7212 Fixed infinite loop in TCP communication SPI skipping loc…
agoncharuk Dec 15, 2017
2f54fc3
GridNioServer: ses can be null on close if async connect failed
sboikov Dec 18, 2017
af11448
Removed unused GridDhtLocalPartition.evictHist.
sboikov Oct 10, 2017
1e3cd0d
ignite-6700 Tcp discovery: ignore message's failedNodes list received…
sboikov Oct 24, 2017
48b0adf
BinaryMetadataTransport: do not cache local node id, it can change af…
sboikov Nov 29, 2017
614b877
IGNITE-6793 More debug output
agoncharuk Oct 30, 2017
60de282
IGNITE-7512: fixed NPE when entry processor removes entry and queries…
skalashnikov Jan 24, 2018
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 1 addition & 7 deletions examples/pom-standalone-lgpl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,7 @@
<dependency>
<groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>spymemcached</artifactId>
<version>2.7.3</version>
<exclusions>
<exclusion>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
</exclusions>
<version>2.8.4</version>
</dependency>
</dependencies>

Expand Down
8 changes: 1 addition & 7 deletions examples/pom-standalone.xml
Original file line number Diff line number Diff line change
Expand Up @@ -81,13 +81,7 @@
<dependency>
<groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>spymemcached</artifactId>
<version>2.7.3</version>
<exclusions>
<exclusion>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
</exclusions>
<version>2.8.4</version>
</dependency>
</dependencies>

Expand Down
14 changes: 1 addition & 13 deletions examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,7 @@
<dependency>
<groupId>com.google.code.simple-spring-memcached</groupId>
<artifactId>spymemcached</artifactId>
<version>2.7.3</version>
<exclusions>
<exclusion>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</exclusion>
</exclusions>
<version>2.8.4</version>
</dependency>

<dependency>
Expand Down Expand Up @@ -140,12 +134,6 @@
<artifactId>ignite-spark</artifactId>
<version>${project.version}</version>
</dependency>

<dependency>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
<version>3.2.9.Final</version>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,15 @@
* <h2 class="header">Mandatory</h2>
* This SPI has one mandatory configuration parameter:
* <ul>
* <li>{@link #setAwsCredentials(AWSCredentials)}</li>
* <li>AWS credentials (see {@link #setAwsCredentials(AWSCredentials)}
* </ul>
* <h2 class="header">Optional</h2>
* This SPI has following optional configuration parameters:
* <ul>
* <li>{@link #setBucketNameSuffix(String)}</li>
* <li>{@link #setClientConfiguration(ClientConfiguration)}</li>
* <li>Bucket name suffix (see {@link #setBucketNameSuffix(String)})</li>
* <li>Client configuration (see {@link #setClientConfiguration(ClientConfiguration)})</li>
* <li>Bucket endpoint (see {@link #setBucketEndpoint(String)})</li>
* <li>Server side encryption algorithm (see {@link #setSSEAlgorithm(String)})</li>
* </ul>
* <h2 class="header">Java Example</h2>
* {@link S3CheckpointSpi} can be configured as follows:
Expand Down Expand Up @@ -155,6 +157,12 @@ public class S3CheckpointSpi extends IgniteSpiAdapter implements CheckpointSpi {
/** Bucket name (generated). */
private String bucketName;

/** Bucket endpoint (set by user). */
private @Nullable String bucketEndpoint;

/** Server side encryption algorithm */
private @Nullable String sseAlg;

/** Amazon client configuration. */
private ClientConfiguration cfg;

Expand All @@ -174,6 +182,24 @@ public String getBucketName() {
return bucketName;
}

/**
* Gets S3 bucket endpoint to use.
*
* @return S3 bucket endpoint to use.
*/
public @Nullable String getBucketEndpoint() {
return bucketEndpoint;
}

/**
* Gets S3 server-side encryption algorithm.
*
* @return S3 server-side encryption algorithm to use.
*/
public @Nullable String getSSEAlgorithm() {
return sseAlg;
}

/**
* Gets S3 access key.
*
Expand Down Expand Up @@ -241,6 +267,37 @@ public S3CheckpointSpi setBucketNameSuffix(String bucketNameSuffix) {
return this;
}

/**
* Sets bucket endpoint.
* If the endpoint is not set then S3CheckpointSpi will go to each region to find a corresponding bucket.
* For information about possible endpoint names visit
* <a href="http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">docs.aws.amazon.com</a>
*
* @param bucketEndpoint Bucket endpoint, for example, {@code }s3.us-east-2.amazonaws.com.
* @return {@code this} for chaining.
*/
@IgniteSpiConfiguration(optional = true)
public S3CheckpointSpi setBucketEndpoint(String bucketEndpoint) {
this.bucketEndpoint = bucketEndpoint;

return this;
}

/**
* Sets server-side encryption algorithm for Amazon S3-managed encryption keys.
* For information about possible S3-managed encryption keys visit
* <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">docs.aws.amazon.com</a>.
*
* @param sseAlg Server-side encryption algorithm, for example, AES256 or SSES3.
* @return {@code this} for chaining.
*/
@IgniteSpiConfiguration(optional = true)
public S3CheckpointSpi setSSEAlgorithm(String sseAlg) {
this.sseAlg = sseAlg;

return this;
}

/**
* Sets Amazon client configuration.
* <p>
Expand Down Expand Up @@ -283,6 +340,8 @@ public S3CheckpointSpi setAwsCredentials(AWSCredentials cred) {
log.debug(configInfo("awsCredentials", cred));
log.debug(configInfo("clientConfiguration", cfg));
log.debug(configInfo("bucketNameSuffix", bucketNameSuffix));
log.debug(configInfo("bucketEndpoint", bucketEndpoint));
log.debug(configInfo("SSEAlgorithm", sseAlg));
}

if (cfg == null)
Expand All @@ -298,6 +357,9 @@ public S3CheckpointSpi setAwsCredentials(AWSCredentials cred) {

s3 = cfg != null ? new AmazonS3Client(cred, cfg) : new AmazonS3Client(cred);

if (!F.isEmpty(bucketEndpoint))
s3.setEndpoint(bucketEndpoint);

if (!s3.doesBucketExist(bucketName)) {
try {
s3.createBucket(bucketName);
Expand Down Expand Up @@ -528,6 +590,9 @@ private void write(S3CheckpointData data) throws IgniteCheckedException, AmazonC

meta.setContentLength(buf.length);

if (!F.isEmpty(sseAlg))
meta.setSSEAlgorithm(sseAlg);

s3.putObject(bucketName, data.getKey(), new ByteArrayInputStream(buf), meta);
}

Expand Down Expand Up @@ -734,6 +799,16 @@ private class S3CheckpointSpiMBeanImpl extends IgniteSpiMBeanAdapter implements
return S3CheckpointSpi.this.getBucketName();
}

/** {@inheritDoc} */
@Override public String getBucketEndpoint() {
return S3CheckpointSpi.this.getBucketName();
}

/** {@inheritDoc} */
@Override public String getSSEAlgorithm() {
return S3CheckpointSpi.this.getSSEAlgorithm();
}

/** {@inheritDoc} */
@Override public String getAccessKey() {
return S3CheckpointSpi.this.getAccessKey();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,18 @@ public interface S3CheckpointSpiMBean extends IgniteSpiManagementMBean {
@MXBeanDescription("S3 bucket name.")
public String getBucketName();

/**
* @return S3 bucket endpoint.
*/
@MXBeanDescription("S3 bucket endpoint.")
public String getBucketEndpoint();

/**
* @return S3 server-side encryption algorithm.
*/
@MXBeanDescription("S3 server-side encryption algorithm.")
public String getSSEAlgorithm();

/**
* @return S3 access key.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import org.apache.ignite.spi.IgniteSpiConfiguration;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinderAdapter;
import org.jetbrains.annotations.Nullable;

/**
* AWS S3-based IP finder.
Expand All @@ -60,6 +61,8 @@
* <ul>
* <li>Client configuration (see {@link #setClientConfiguration(ClientConfiguration)})</li>
* <li>Shared flag (see {@link #setShared(boolean)})</li>
* <li>Bucket endpoint (see {@link #setBucketEndpoint(String)})</li>
* <li>Server side encryption algorithm (see {@link #setSSEAlgorithm(String)})</li>
* </ul>
* <p>
* The finder will create S3 bucket with configured name. The bucket will contain entries named
Expand All @@ -78,14 +81,9 @@ public class TcpDiscoveryS3IpFinder extends TcpDiscoveryIpFinderAdapter {
/** Entry content. */
private static final byte[] ENTRY_CONTENT = new byte[] {1};

/** Entry metadata with content length set. */
private static final ObjectMetadata ENTRY_METADATA;

static {
ENTRY_METADATA = new ObjectMetadata();

ENTRY_METADATA.setContentLength(ENTRY_CONTENT.length);
}
/** Entry metadata. */
@GridToStringExclude
private final ObjectMetadata objMetadata = new ObjectMetadata();

/** Grid logger. */
@LoggerResource
Expand All @@ -98,6 +96,12 @@ public class TcpDiscoveryS3IpFinder extends TcpDiscoveryIpFinderAdapter {
/** Bucket name. */
private String bucketName;

/** Bucket endpoint */
private @Nullable String bucketEndpoint;

/** Server side encryption algorithm */
private @Nullable String sseAlg;

/** Init guard. */
@GridToStringExclude
private final AtomicBoolean initGuard = new AtomicBoolean();
Expand Down Expand Up @@ -187,7 +191,7 @@ public TcpDiscoveryS3IpFinder() {
String key = key(addr);

try {
s3.putObject(bucketName, key, new ByteArrayInputStream(ENTRY_CONTENT), ENTRY_METADATA);
s3.putObject(bucketName, key, new ByteArrayInputStream(ENTRY_CONTENT), objMetadata);
}
catch (AmazonClientException e) {
throw new IgniteSpiException("Failed to put entry [bucketName=" + bucketName +
Expand Down Expand Up @@ -251,6 +255,11 @@ private void initClient() throws IgniteSpiException {
if (F.isEmpty(bucketName))
throw new IgniteSpiException("Bucket name is null or empty (provide bucket name and restart).");

objMetadata.setContentLength(ENTRY_CONTENT.length);

if (!F.isEmpty(sseAlg))
objMetadata.setSSEAlgorithm(sseAlg);

s3 = createAmazonS3Client();

if (!s3.doesBucketExist(bucketName)) {
Expand Down Expand Up @@ -299,9 +308,14 @@ private void initClient() throws IgniteSpiException {
* @return Client instance to use to connect to AWS.
*/
private AmazonS3Client createAmazonS3Client() {
return cfg != null
AmazonS3Client cln = cfg != null
? (cred != null ? new AmazonS3Client(cred, cfg) : new AmazonS3Client(credProvider, cfg))
: (cred != null ? new AmazonS3Client(cred) : new AmazonS3Client(credProvider));

if (!F.isEmpty(bucketEndpoint))
cln.setEndpoint(bucketEndpoint);

return cln;
}

/**
Expand All @@ -317,6 +331,37 @@ public TcpDiscoveryS3IpFinder setBucketName(String bucketName) {
return this;
}

/**
* Sets bucket endpoint for IP finder.
* If the endpoint is not set then IP finder will go to each region to find a corresponding bucket.
* For information about possible endpoint names visit
* <a href="http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region">docs.aws.amazon.com</a>.
*
* @param bucketEndpoint Bucket endpoint, for example, s3.us-east-2.amazonaws.com.
* @return {@code this} for chaining.
*/
@IgniteSpiConfiguration(optional = true)
public TcpDiscoveryS3IpFinder setBucketEndpoint(String bucketEndpoint) {
this.bucketEndpoint = bucketEndpoint;

return this;
}

/**
* Sets server-side encryption algorithm for Amazon S3-managed encryption keys.
* For information about possible S3-managed encryption keys visit
* <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html">docs.aws.amazon.com</a>.
*
* @param sseAlg Server-side encryption algorithm, for example, AES256 or SSES3.
* @return {@code this} for chaining.
*/
@IgniteSpiConfiguration(optional = true)
public TcpDiscoveryS3IpFinder setSSEAlgorithm(String sseAlg) {
this.sseAlg = sseAlg;

return this;
}

/**
* Sets Amazon client configuration.
* <p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ public class S3CheckpointManagerSelfTest extends GridCheckpointManagerAbstractSe

spi.setAwsCredentials(cred);

spi.setBucketNameSuffix("unit-test-bucket");
spi.setBucketNameSuffix(S3CheckpointSpiSelfTest.getBucketNameSuffix());

cfg.setCheckpointSpi(spi);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.ObjectListing;
import com.amazonaws.services.s3.model.S3ObjectSummary;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.concurrent.ThreadLocalRandom;
import org.apache.ignite.GridTestIoUtils;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
Expand Down Expand Up @@ -55,7 +58,7 @@ public class S3CheckpointSpiSelfTest extends GridSpiAbstractTest<S3CheckpointSpi

spi.setAwsCredentials(cred);

spi.setBucketNameSuffix("unit-test-bucket");
spi.setBucketNameSuffix(getBucketNameSuffix());

super.spiConfigure(spi);
}
Expand Down Expand Up @@ -222,4 +225,25 @@ public void testDuplicates() throws Exception {
private void assertWithRetries(GridAbsClosureX assertion) throws IgniteInterruptedCheckedException {
GridTestUtils.retryAssert(log, 6, 5000, assertion);
}

/**
* Gets a Bucket name suffix
* Bucket name suffix should be unique for the host to parallel test run on one bucket.
* Please note that the final bucket name should not exceed 63 chars.
*
* @return Bucket name suffix.
*/
static String getBucketNameSuffix() {
String bucketNameSuffix;
try {
bucketNameSuffix = IgniteS3TestSuite.getBucketName(
"unit-test-" + InetAddress.getLocalHost().getHostName().toLowerCase());
}
catch (UnknownHostException e) {
bucketNameSuffix = IgniteS3TestSuite.getBucketName(
"unit-test-rnd-" + ThreadLocalRandom.current().nextInt(100));
}

return bucketNameSuffix;
}
}