Skip to content

Commit 7ab42c3

Browse files
authored
[HOTFIX][BE]: Fix unmitigated Guzzle timeout error #294 (#295)
Changelog: - Increase timeout into http request (30 seconds) by default, this to mitigate current http timeout (3 seconds) - Add handler when timeout already running out to return proper error message and avoid backend server crashes
2 parents 03a8079 + 3096b37 commit 7ab42c3

File tree

3 files changed

+132
-67
lines changed

3 files changed

+132
-67
lines changed

app/Helpers/AppHelper.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ class AppHelper
1919
{
2020
function checkWebAvailable($url){
2121
try {
22-
$response = Http::timeout(5)->get($url);
22+
$response = Http::timeout(30)
23+
->get($url);
2324
if ($response->successful()) {
2425
return true;
2526
} else {

app/Http/Controllers/Api/Core/convertController.php

+6-6
Original file line numberDiff line numberDiff line change
@@ -243,9 +243,9 @@ public function convert(Request $request) {
243243
$newFileSize,
244244
$batchId,
245245
'FAIL',
246-
'Aspose API v3.0 - '.$convertType,
246+
'cnvTo'.$convertType,
247247
'FTP Server Connection Failed !',
248-
null
248+
'Aspose API v3.0 - '.$convertType
249249
);
250250
Storage::disk('local')->delete('public/'.$pdfUpload_Location.'/'.$trimPhase1);
251251
return $this->returnDataMesage(
@@ -276,7 +276,7 @@ public function convert(Request $request) {
276276
$newFileSize,
277277
$batchId,
278278
'FAIL',
279-
'cnvToXls',
279+
'cnvTo'.$convertType,
280280
'Aspose API v3.0 - '.$convertType.' failure',
281281
$asposeAPI->body()
282282
);
@@ -309,7 +309,7 @@ public function convert(Request $request) {
309309
$newFileSize,
310310
$batchId,
311311
'FAIL',
312-
'cnvToXls',
312+
'cnvTo'.$convertType,
313313
'Guzzle HTTP failure',
314314
$e->getMessage()
315315
);
@@ -342,9 +342,9 @@ public function convert(Request $request) {
342342
$newFileSize,
343343
$batchId,
344344
'FAIL',
345-
'Aspose API v3.0 - '.$convertType.' failure',
345+
'cnvTo'.$convertType,
346346
'Failed to generated Aspose Token !',
347-
null
347+
'Aspose API v3.0 - '.$convertType.' failure'
348348
);
349349
Storage::disk('local')->delete('public/'.$pdfUpload_Location.'/'.$trimPhase1);
350350
return $this->returnDataMesage(

app/Http/Controllers/Api/Misc/versionController.php

+124-60
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function versioningCheck(Request $request) {
4242
$appServicesReferrerFE = $request->post('appServicesReferrer');
4343
$appMajorVersionBE = 3;
4444
$appMinorVersionBE = 6;
45-
$appPatchVersionBE = 1;
45+
$appPatchVersionBE = 3;
4646
$appVersioningBE = null;
4747
$appVersioningFE = null;
4848
$appServicesReferrerBE = "BE";
@@ -59,55 +59,84 @@ public function versioningCheck(Request $request) {
5959
]);
6060

6161
if (appHelper::instance()->checkWebAvailable($url)) {
62-
$response = Http::get($url);
6362
try {
64-
$data = $response->json();
65-
foreach ($data as $service) {
66-
if ($service['appServices'] === 'BE') {
67-
$majorVersionBE = $service['versioning']['majorVersion'];
68-
$minorVersionBE = $service['versioning']['minorVersion'];
69-
$patchVersionBE = $service['versioning']['patchVersion'];
70-
$appVersioningBE = $appMajorVersionBE.'.'.$appMinorVersionBE.'.'.$appPatchVersionBE;
71-
$versioningBE = $majorVersionBE.'.'.$minorVersionBE.'.'.$patchVersionBE;
72-
} else if ($service['appServices'] === 'FE') {
73-
$majorVersionFE = $service['versioning']['majorVersion'];
74-
$minorVersionFE = $service['versioning']['minorVersion'];
75-
$patchVersionFE = $service['versioning']['patchVersion'];
76-
$appVersioningFE = $appMajorVersionFE.'.'.$appMinorVersionFE.'.'.$appPatchVersionFE;
77-
$versioningFE = $majorVersionFE.'.'.$minorVersionFE.'.'.$patchVersionFE;
63+
$response = Http::timeout(30)
64+
->acceptJson()
65+
->get($url);
66+
if ($response->successful()) {
67+
$data = $response->json();
68+
foreach ($data as $service) {
69+
if ($service['appServices'] === 'BE') {
70+
$majorVersionBE = $service['versioning']['majorVersion'];
71+
$minorVersionBE = $service['versioning']['minorVersion'];
72+
$patchVersionBE = $service['versioning']['patchVersion'];
73+
$appVersioningBE = $appMajorVersionBE.'.'.$appMinorVersionBE.'.'.$appPatchVersionBE;
74+
$versioningBE = $majorVersionBE.'.'.$minorVersionBE.'.'.$patchVersionBE;
75+
} else if ($service['appServices'] === 'FE') {
76+
$majorVersionFE = $service['versioning']['majorVersion'];
77+
$minorVersionFE = $service['versioning']['minorVersion'];
78+
$patchVersionFE = $service['versioning']['patchVersion'];
79+
$appVersioningFE = $appMajorVersionFE.'.'.$appMinorVersionFE.'.'.$appPatchVersionFE;
80+
$versioningFE = $majorVersionFE.'.'.$minorVersionFE.'.'.$patchVersionFE;
81+
}
7882
}
79-
}
8083

81-
if ($appVersioningBE == $versioningBE) {
82-
$validateBE = true;
83-
if ($appVersioningFE == $versioningFE) {
84-
$validateFE = true;
84+
if ($appVersioningBE == $versioningBE) {
85+
$validateBE = true;
86+
if ($appVersioningFE == $versioningFE) {
87+
$validateFE = true;
88+
} else {
89+
$validateFE = false;
90+
$validateMessage = 'Front-End module version missmatch !';
91+
}
8592
} else {
93+
$validateBE = false;
8694
$validateFE = false;
87-
$validateMessage = 'Front-End module version missmatch !';
95+
$validateMessage = 'Back-End module version missmatch !';
8896
}
89-
} else {
90-
$validateBE = false;
91-
$validateFE = false;
92-
$validateMessage = 'Back-End module version missmatch !';
93-
}
9497

95-
if ($validateBE && $validateFE) {
96-
return $this->returnVersioningMessage(
97-
200,
98-
'OK',
99-
$appVersioningBE,
100-
$versioningBE,
101-
$appVersioningFE,
102-
$versioningFE,
103-
null
104-
);
98+
if ($validateBE && $validateFE) {
99+
return $this->returnVersioningMessage(
100+
200,
101+
'OK',
102+
$appVersioningBE,
103+
$versioningBE,
104+
$appVersioningFE,
105+
$versioningFE,
106+
null
107+
);
108+
} else {
109+
appLogModel::where('groupId', '=', $Muuid)
110+
->update([
111+
'errReason' => 'Version Check Failed !',
112+
'errStatus' => $validateMessage
113+
]);
114+
NotificationHelper::Instance()->sendVersioningErrNotify(
115+
$appVersioningFE,
116+
$versioningFE,
117+
$appVersioningBE,
118+
$versioningBE,
119+
'FAIL',
120+
$Muuid,
121+
'Version Check Failed !',
122+
$validateMessage
123+
);
124+
return $this->returnVersioningMessage(
125+
400,
126+
'Version Check Failed !',
127+
$appVersioningBE,
128+
$versioningBE,
129+
$appVersioningFE,
130+
$versioningFE,
131+
$validateMessage
132+
);
133+
}
105134
} else {
106135
appLogModel::where('groupId', '=', $Muuid)
107-
->update([
108-
'errReason' => 'Version Check Failed !',
109-
'errStatus' => $validateMessage
110-
]);
136+
->update([
137+
'errReason' => 'Failed to parse response from request server !',
138+
'errStatus' => 'Version Check Failed !'
139+
]);
111140
NotificationHelper::Instance()->sendVersioningErrNotify(
112141
$appVersioningFE,
113142
$versioningFE,
@@ -116,7 +145,7 @@ public function versioningCheck(Request $request) {
116145
'FAIL',
117146
$Muuid,
118147
'Version Check Failed !',
119-
$validateMessage
148+
'Failed to parse response from request server !'
120149
);
121150
return $this->returnVersioningMessage(
122151
400,
@@ -125,14 +154,14 @@ public function versioningCheck(Request $request) {
125154
$versioningBE,
126155
$appVersioningFE,
127156
$versioningFE,
128-
$validateMessage
157+
'Failed to parse response from request server !'
129158
);
130159
}
131160
} catch (\Exception $e) {
132161
appLogModel::where('groupId', '=', $Muuid)
133162
->update([
134-
'errReason' => 'Unable to parsing JSON versioning !',
135-
'errStatus' => $e->getMessage()
163+
'errReason' => $e->getMessage(),
164+
'errStatus' => 'Cannot establish response with the server'
136165
]);
137166
NotificationHelper::Instance()->sendVersioningErrNotify(
138167
null,
@@ -141,12 +170,12 @@ public function versioningCheck(Request $request) {
141170
null,
142171
'FAIL',
143172
$Muuid,
144-
'Unable to parsing JSON versioning !',
173+
'Cannot establish response with the server',
145174
$e->getMessage()
146175
);
147176
return $this->returnVersioningMessage(
148177
500,
149-
'Unable to parsing JSON versioning !',
178+
'Cannot establish response with the server',
150179
null,
151180
null,
152181
null,
@@ -157,8 +186,8 @@ public function versioningCheck(Request $request) {
157186
} else {
158187
appLogModel::where('groupId', '=', $Muuid)
159188
->update([
160-
'errReason' => 'Version Check Failed !',
161-
'errStatus' => 'Cannot establish response with the server'
189+
'errReason' => 'Cannot establish response with the server',
190+
'errStatus' => 'Version Check Failed !'
162191
]);
163192
NotificationHelper::Instance()->sendVersioningErrNotify(
164193
null,
@@ -197,24 +226,59 @@ public function versioningFetch(Request $request) {
197226
]);
198227

199228
if (appHelper::instance()->checkWebAvailable($versionFetch)) {
200-
$response = Http::get($versionFetch);
201229
try {
202-
$data = $response->json();
203-
return $this->returnDataMesage(
204-
200,
205-
'OK',
206-
$data,
207-
null,
208-
null,
209-
null
210-
);
230+
$response = Http::timeout(30)
231+
->acceptJson()
232+
->get($versionFetch);
233+
if ($response->successful()) {
234+
$data = $response->json();
235+
return $this->returnDataMesage(
236+
200,
237+
'OK',
238+
$data,
239+
null,
240+
null,
241+
null
242+
);
243+
} else {
244+
appLogModel::where('groupId', '=', $Muuid)
245+
->update([
246+
'errReason' => 'Failed to parse response from request server !',
247+
'errStatus' => 'Version Fetch Failed !'
248+
]);
249+
NotificationHelper::Instance()->sendErrGlobalNotify(
250+
$endpoint,
251+
'Version Fetch',
252+
'FAIL',
253+
$Muuid,
254+
'Failed to parse response from request server !',
255+
null,
256+
false
257+
);
258+
return $this->returnDataMesage(
259+
400,
260+
'Failed to parse response from request server !',
261+
null,
262+
null,
263+
null,
264+
$e->getMessage()
265+
);
266+
}
211267
} catch (\Exception $e) {
212268
appLogModel::where('groupId', '=', $Muuid)
213269
->update([
214270
'errReason' => 'Failed to parsing JSON !',
215271
'errStatus' => $e->getMessage()
216272
]);
217-
NotificationHelper::Instance()->sendErrGlobalNotify($endpoint, 'Version Fetch', 'FAIL', $Muuid,'Failed to parsing JSON !', $e->getMessage(), false);
273+
NotificationHelper::Instance()->sendErrGlobalNotify(
274+
$endpoint,
275+
'Version Fetch',
276+
'FAIL',
277+
$Muuid,
278+
'Failed to parsing JSON !',
279+
$e->getMessage(),
280+
false
281+
);
218282
return $this->returnDataMesage(
219283
400,
220284
'Failed to parsing JSON !',

0 commit comments

Comments
 (0)