Skip to content

Commit b73df81

Browse files
authored
Merge pull request #4615 from Blargian/landing_page_improvements
Integrations: updates to landing page to fix intermittent loading issue
2 parents 159a60f + 1916f9e commit b73df81

File tree

2 files changed

+56
-21
lines changed

2 files changed

+56
-21
lines changed

scripts/sed_links.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
1919
sed -i '' 's|(/cloud/security/cloud-access-management/overview#initial-settings)|(/cloud/security/console-roles)|g' docs/sql-reference/statements/grant.md
2020
sed -i '' 's|(/cloud/security/secure-s3#access-your-s3-bucket-with-the-clickhouseaccess-role)|(/cloud/data-sources/secure-s3#access-your-s3-bucket-with-the-clickhouseaccess-role)|g' docs/sql-reference/table-functions/s3.md
2121
sed -i '' 's|(/cloud/security/secure-s3#access-your-s3-bucket-with-the-clickhouseaccess-role)|(/cloud/data-sources/secure-s3#access-your-s3-bucket-with-the-clickhouseaccess-role)|g' docs/sql-reference/table-functions/s3Cluster.md
22-
sed -i '' 's|<auxiliary_zookeepers>|`<auxiliary_zookeepers>`|g' docs/operations/server-configuration-parameters/settings.md
22+
sed -i '' 's|(#cuttofirstsignificantsubdomaincustom)|(#cutToFirstSignificantSubdomainCustom)|g' docs/sql-reference/functions/url-functions.md
2323
else
2424
# Linux
2525
sed -i 's|(../../quick-start\.mdx)|(/get-started/quick-start)|g' docs/operations/utilities/clickhouse-local.md
@@ -32,5 +32,5 @@ else
3232
sed -i 's|(/cloud/security/cloud-access-management/overview#initial-settings)|(/cloud/security/console-roles)|g' docs/sql-reference/statements/grant.md
3333
sed -i 's|(/cloud/security/secure-s3#access-your-s3-bucket-with-the-clickhouseaccess-role)|(/cloud/data-sources/secure-s3#access-your-s3-bucket-with-the-clickhouseaccess-role)|g' docs/sql-reference/table-functions/s3.md
3434
sed -i 's|(/cloud/security/secure-s3#access-your-s3-bucket-with-the-clickhouseaccess-role)|(/cloud/data-sources/secure-s3#access-your-s3-bucket-with-the-clickhouseaccess-role)|g' docs/sql-reference/table-functions/s3Cluster.md
35-
sed -i 's|<auxiliary_zookeepers>|`<auxiliary_zookeepers>`|g' docs/operations/server-configuration-parameters/settings.md
35+
sed -i 's|(#cuttofirstsignificantsubdomaincustom)|(#cutToFirstSignificantSubdomainCustom)|g' docs/sql-reference/functions/url-functions.md
3636
fi

src/components/IntegrationGrid/IntegrationGrid.tsx

Lines changed: 54 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -162,37 +162,72 @@ function useCMSIntegrations() {
162162

163163
useEffect(() => {
164164
const fetchIntegrations = async () => {
165+
// Step 1: Load fallback data first for immediate display
165166
try {
166-
setLoading(true);
167-
const response = await fetch('https://cms.clickhouse-dev.com:1337/api/integrations?populate[]=logo&populate[]=logo_dark');
167+
const fallbackResponse = await fetch('/integrations-fallback.json', {
168+
cache: 'force-cache' // Use cached version if available
169+
});
170+
171+
if (fallbackResponse.ok) {
172+
const fallbackData = await fallbackResponse.json();
173+
const transformedData = transformCMSData(fallbackData.data || []);
174+
setIntegrations(transformedData);
175+
setError(null);
176+
setLoading(false); // Show content immediately with fallback data
177+
console.log('Loaded fallback integrations data');
178+
} else {
179+
console.warn('Fallback file not available, will try CMS only');
180+
}
181+
} catch (fallbackErr) {
182+
console.error('Failed to load fallback integrations data:', fallbackErr);
183+
// Continue to try CMS even if fallback fails
184+
}
185+
186+
// Step 2: Try to fetch fresh data from CMS with timeout
187+
try {
188+
const controller = new AbortController();
189+
const timeoutId = setTimeout(() => {
190+
controller.abort();
191+
console.log('CMS request timed out after 8 seconds');
192+
}, 8000); // 8 second timeout
193+
194+
const response = await fetch(
195+
'https://cms.clickhouse-dev.com:1337/api/integrations?populate[]=logo&populate[]=logo_dark',
196+
{
197+
signal: controller.signal,
198+
// Add headers to help with CORS and caching
199+
headers: {
200+
'Accept': 'application/json',
201+
}
202+
}
203+
);
204+
205+
clearTimeout(timeoutId);
168206

169207
if (!response.ok) {
170208
throw new Error(`HTTP error! status: ${response.status}`);
171209
}
172210

173211
const data = await response.json();
174212
const transformedData = transformCMSData(data.data || []);
213+
214+
// Update with fresh CMS data
175215
setIntegrations(transformedData);
176216
setError(null);
177-
} catch (err) {
178-
console.error('Error loading integrations data from endpoint. Falling back to static JSON file.');
179-
180-
// Fallback to static JSON file
181-
try {
182-
const fallbackResponse = await fetch('/integrations-fallback.json');
183-
184-
if (!fallbackResponse.ok) {
185-
throw new Error(`Failed to load fallback data: ${fallbackResponse.status}`);
217+
console.log('Successfully updated with fresh CMS data');
218+
} catch (cmsErr) {
219+
// CMS fetch failed, but that's okay - we already have fallback data
220+
if (cmsErr instanceof Error) {
221+
if (cmsErr.name === 'AbortError') {
222+
console.log('CMS request was aborted due to timeout, using fallback data');
223+
} else {
224+
console.error('Error loading integrations from CMS:', cmsErr.message);
186225
}
226+
}
187227

188-
const fallbackData = await fallbackResponse.json();
189-
const transformedData = transformCMSData(fallbackData.data || []);
190-
setIntegrations(transformedData);
191-
setError(null);
192-
} catch (fallbackErr) {
193-
console.error('Failed to load fallback integrations data:', fallbackErr);
194-
setError(fallbackErr instanceof Error ? fallbackErr.message : 'Failed to fetch integrations');
195-
setIntegrations([]);
228+
// Only set error if we don't have any integrations data at all
229+
if (integrations.length === 0) {
230+
setError('Unable to load integrations. Please try refreshing the page.');
196231
}
197232
} finally {
198233
setLoading(false);

0 commit comments

Comments
 (0)