From 961c1ab4fff5e48e71c38ae6b67f1ac6dedbcaaf Mon Sep 17 00:00:00 2001 From: Ioannis Kakavas Date: Wed, 30 May 2018 10:56:32 +0300 Subject: [PATCH 1/2] Retain the expiryDate for trial licenses While updating the license signature to the new license spec retain the trial license expiration date to that of the existing license. Resolves #30882 --- .../license/StartupSelfGeneratedLicenseTask.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/license/StartupSelfGeneratedLicenseTask.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/license/StartupSelfGeneratedLicenseTask.java index 823283ac5a852..2e3b33a85a784 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/license/StartupSelfGeneratedLicenseTask.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/license/StartupSelfGeneratedLicenseTask.java @@ -61,10 +61,10 @@ public ClusterState execute(ClusterState currentState) throws Exception { "]. Must be trial or basic."); } return updateWithLicense(currentState, type); - } else if (LicenseUtils.licenseNeedsExtended(currentLicensesMetaData.getLicense())) { - return extendBasic(currentState, currentLicensesMetaData); } else if (LicenseUtils.signatureNeedsUpdate(currentLicensesMetaData.getLicense())) { return updateLicenseSignature(currentState, currentLicensesMetaData); + } else if (LicenseUtils.licenseNeedsExtended(currentLicensesMetaData.getLicense())) { + return extendBasic(currentState, currentLicensesMetaData); } else { return currentState; } @@ -75,11 +75,10 @@ private ClusterState updateLicenseSignature(ClusterState currentState, LicensesM MetaData.Builder mdBuilder = MetaData.builder(currentState.metaData()); String type = license.type(); long issueDate = license.issueDate(); - long expiryDate; + long expiryDate = license.expiryDate(); + // extend the basic license expiration date if needed since extendBasic will not be called now if ("basic".equals(type)) { expiryDate = LicenseService.BASIC_SELF_GENERATED_LICENSE_EXPIRATION_MILLIS; - } else { - expiryDate = issueDate + LicenseService.NON_BASIC_SELF_GENERATED_LICENSE_DURATION.getMillis(); } License.Builder specBuilder = License.builder() .uid(license.uid()) @@ -92,6 +91,8 @@ private ClusterState updateLicenseSignature(ClusterState currentState, LicensesM Version trialVersion = currentLicenseMetaData.getMostRecentTrialVersion(); LicensesMetaData newLicenseMetadata = new LicensesMetaData(selfGeneratedLicense, trialVersion); mdBuilder.putCustom(LicensesMetaData.TYPE, newLicenseMetadata); + logger.info("Updating existing license to the new version.\n\nOld license:\n {}\n\n New license:\n{}", + license, newLicenseMetadata.getLicense()); return ClusterState.builder(currentState).metaData(mdBuilder).build(); } From bcb35fad5b7b02d87148691edd0919d205862992 Mon Sep 17 00:00:00 2001 From: Ioannis Kakavas Date: Wed, 30 May 2018 11:17:33 +0300 Subject: [PATCH 2/2] Only update basic expirydate if not already set --- .../elasticsearch/license/StartupSelfGeneratedLicenseTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/plugin/core/src/main/java/org/elasticsearch/license/StartupSelfGeneratedLicenseTask.java b/x-pack/plugin/core/src/main/java/org/elasticsearch/license/StartupSelfGeneratedLicenseTask.java index 2e3b33a85a784..13d6326f3ce1d 100644 --- a/x-pack/plugin/core/src/main/java/org/elasticsearch/license/StartupSelfGeneratedLicenseTask.java +++ b/x-pack/plugin/core/src/main/java/org/elasticsearch/license/StartupSelfGeneratedLicenseTask.java @@ -77,7 +77,7 @@ private ClusterState updateLicenseSignature(ClusterState currentState, LicensesM long issueDate = license.issueDate(); long expiryDate = license.expiryDate(); // extend the basic license expiration date if needed since extendBasic will not be called now - if ("basic".equals(type)) { + if ("basic".equals(type) && expiryDate != LicenseService.BASIC_SELF_GENERATED_LICENSE_EXPIRATION_MILLIS) { expiryDate = LicenseService.BASIC_SELF_GENERATED_LICENSE_EXPIRATION_MILLIS; } License.Builder specBuilder = License.builder()