#IGNITE-GG-10449 marshal credentials in client discovery.
Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/a3d8e603 Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/a3d8e603 Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/a3d8e603 Branch: refs/heads/ignite-648 Commit: a3d8e603a5c9a7fbf3f81a7dd2aded2a8139f578 Parents: 1cc0000 Author: nikolay_tikhonov <ntikho...@gridgain.com> Authored: Mon Jun 22 11:33:53 2015 +0300 Committer: nikolay_tikhonov <ntikho...@gridgain.com> Committed: Mon Jun 22 11:33:53 2015 +0300 ---------------------------------------------------------------------- .../ignite/spi/discovery/tcp/ClientImpl.java | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/a3d8e603/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java index e255e08..68e5dbd 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java @@ -362,6 +362,9 @@ class ClientImpl extends TcpDiscoveryImpl { long startTime = U.currentTimeMillis(); + // Marshal credentials for backward compatibility and security. + marshalCredentials(locNode); + while (true) { if (Thread.currentThread().isInterrupted()) throw new InterruptedException(); @@ -541,6 +544,26 @@ class ClientImpl extends TcpDiscoveryImpl { return null; } + /** + * Marshalls credentials with discovery SPI marshaller (will replace attribute value). + * + * @param node Node to marshall credentials for. + * @throws IgniteSpiException If marshalling failed. + */ + private void marshalCredentials(TcpDiscoveryNode node) throws IgniteSpiException { + try { + // Use security-unsafe getter. + Map<String, Object> attrs = new HashMap<>(node.getAttributes()); + + attrs.put(IgniteNodeAttributes.ATTR_SECURITY_CREDENTIALS, + spi.marsh.marshal(attrs.get(IgniteNodeAttributes.ATTR_SECURITY_CREDENTIALS))); + + node.setAttributes(attrs); + } + catch (IgniteCheckedException e) { + throw new IgniteSpiException("Failed to marshal node security credentials: " + node.id(), e); + } + } /** * @param topVer New topology version.