diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c
index 1a047a97d74e7fe5b2cad22cd54cf30f7129bf84..21cfbfffdd1b58df821adbdd577fb599bc2747cf 100644
--- a/src/backend/utils/adt/pg_locale.c
+++ b/src/backend/utils/adt/pg_locale.c
@@ -1406,6 +1406,14 @@ make_icu_collator(const char *iculocstr,
 #ifdef USE_ICU
 	UCollator  *collator;
 	UErrorCode	status;
+	const char *default_icu_locale;
+	UVersionInfo versioninfo;
+	char		buf[U_MAX_VERSION_STRING_LENGTH];
+	const char *valid_locale;
+
+	default_icu_locale = uloc_getDefault();
+	elog(LOG, "make_icu_collator uloc_getDefault() %s",
+		 default_icu_locale ? default_icu_locale : "(null)");
 
 	status = U_ZERO_ERROR;
 	collator = ucol_open(iculocstr, &status);
@@ -1417,6 +1425,20 @@ make_icu_collator(const char *iculocstr,
 	if (U_ICU_VERSION_MAJOR_NUM < 54)
 		icu_set_collation_attributes(collator, iculocstr);
 
+	status = U_ZERO_ERROR;
+	valid_locale = ucol_getLocaleByType(collator, ULOC_VALID_LOCALE, &status);
+	if (U_FAILURE(status) || valid_locale == NULL)
+		ereport(ERROR,
+				(errmsg("failed to get valid locale for collator with "
+						"requested locale \"%s\": %s",
+						iculocstr, u_errorName(status))));
+
+	ucol_getVersion(collator, versioninfo);
+	u_versionToString(versioninfo, buf);
+
+	elog(LOG, "make_icu_collator icu_locale %s valid_locale %s version %s",
+		 iculocstr ? iculocstr : "(null)", valid_locale, buf);
+
 	/* We will leak this string if the caller errors later :-( */
 	resultp->info.icu.locale = MemoryContextStrdup(TopMemoryContext, iculocstr);
 	resultp->info.icu.ucol = collator;
@@ -1654,6 +1676,12 @@ get_collation_actual_version(char collprovider, const char *collcollate)
 		UErrorCode	status;
 		UVersionInfo versioninfo;
 		char		buf[U_MAX_VERSION_STRING_LENGTH];
+		const char *default_icu_locale;
+		const char *valid_locale;
+
+		default_icu_locale = uloc_getDefault();
+		elog(LOG, "get_collation_actual_version uloc_getDefault() %s",
+			 default_icu_locale ? default_icu_locale : "(null)");
 
 		status = U_ZERO_ERROR;
 		collator = ucol_open(collcollate, &status);
@@ -1661,10 +1689,25 @@ get_collation_actual_version(char collprovider, const char *collcollate)
 			ereport(ERROR,
 					(errmsg("could not open collator for locale \"%s\": %s",
 							collcollate, u_errorName(status))));
-		ucol_getVersion(collator, versioninfo);
-		ucol_close(collator);
 
+		status = U_ZERO_ERROR;
+		valid_locale = ucol_getLocaleByType(collator, ULOC_VALID_LOCALE,
+											&status);
+		if (U_FAILURE(status) || valid_locale == NULL)
+			ereport(ERROR,
+					(errmsg("failed to get valid locale for collator with "
+							"requested locale \"%s\": %s",
+							collcollate, u_errorName(status))));
+
+		ucol_getVersion(collator, versioninfo);
 		u_versionToString(versioninfo, buf);
+
+		elog(LOG,
+			 "get_collation_actual_version icu_locale %s valid_locale %s "
+			 "version %s",
+			 collcollate ? collcollate : "(null)", valid_locale, buf);
+
+		ucol_close(collator);
 		collversion = pstrdup(buf);
 	}
 	else
@@ -1955,6 +1998,14 @@ check_icu_locale(const char *icu_locale)
 #ifdef USE_ICU
 	UCollator  *collator;
 	UErrorCode	status;
+	const char *default_icu_locale;
+	UVersionInfo versioninfo;
+	char		buf[U_MAX_VERSION_STRING_LENGTH];
+	const char *valid_locale;
+
+	default_icu_locale = uloc_getDefault();
+	elog(LOG, "check_icu_locale uloc_getDefault() %s",
+		 default_icu_locale ? default_icu_locale : "(null)");
 
 	status = U_ZERO_ERROR;
 	collator = ucol_open(icu_locale, &status);
@@ -1965,6 +2016,21 @@ check_icu_locale(const char *icu_locale)
 
 	if (U_ICU_VERSION_MAJOR_NUM < 54)
 		icu_set_collation_attributes(collator, icu_locale);
+
+	status = U_ZERO_ERROR;
+	valid_locale = ucol_getLocaleByType(collator, ULOC_VALID_LOCALE, &status);
+	if (U_FAILURE(status) || valid_locale == NULL)
+		ereport(ERROR,
+				(errmsg("failed to get valid locale for collator with "
+						"requested locale \"%s\": %s",
+						icu_locale, u_errorName(status))));
+
+	ucol_getVersion(collator, versioninfo);
+	u_versionToString(versioninfo, buf);
+
+	elog(LOG, "check_icu_locale icu_locale %s valid_locale %s version %s",
+		 icu_locale ? icu_locale : "(null)", valid_locale, buf);
+
 	ucol_close(collator);
 #else
 	ereport(ERROR,
