cachethq / cachet

🚦 The open-source status page system.
https://cachethq.io
MIT License
13.79k stars 1.55k forks source link

Problem with new v3 install - Undefined property: stdClass::$majorOutage #4397

Closed PBXForums closed 2 weeks ago

PBXForums commented 3 weeks ago

Hi all, I have just installed version 3.x and after creating a component my status page now gives the above error.

Any ideas where I can begin to look?

TIA Daz

PBXForums commented 3 weeks ago

Maybe this helps:

[previous exception] [object] (ErrorException(code: 0): Undefined property: stdClass::$majorOutage at /var/www/Cachet/vendor/cachethq/core/src/Status.php:57) [stacktrace]

0 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/HandleExceptions.php(255): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError()

1 /var/www/Cachet/vendor/cachethq/core/src/Status.php(57): Illuminate\Foundation\Bootstrap\HandleExceptions->Illuminate\Foundation\Bootstrap\{closure}()

2 /var/www/Cachet/vendor/cachethq/core/src/Status.php(22): Cachet\Status->majorOutage()

3 /var/www/Cachet/vendor/cachethq/core/src/View/Components/StatusBar.php(18): Cachet\Status->current()

4 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/View/Component.php(135): Cachet\View\Components\StatusBar->render()

5 /var/www/Cachet/storage/framework/views/b29c17fee5685ace755096dfc31a7fc7.php(60): Illuminate\View\Component->resolveView()

6 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(123): require('...')

7 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php(124): Illuminate\Filesystem\Filesystem::Illuminate\Filesystem\{closure}()

8 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php(58): Illuminate\Filesystem\Filesystem->getRequire()

9 /var/www/Cachet/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendedCompilerEngine.php(22): Illuminate\View\Engines\PhpEngine->evaluatePath()

10 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php(72): Livewire\Mechanisms\ExtendBlade\ExtendedCompilerEngine->evaluatePath()

11 /var/www/Cachet/vendor/livewire/livewire/src/Mechanisms/ExtendBlade/ExtendedCompilerEngine.php(10): Illuminate\View\Engines\CompilerEngine->get()

12 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/View/View.php(207): Livewire\Mechanisms\ExtendBlade\ExtendedCompilerEngine->get()

13 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/View/View.php(190): Illuminate\View\View->getContents()

14 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/View/View.php(159): Illuminate\View\View->renderContents()

15 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Http/Response.php(69): Illuminate\View\View->render()

16 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Http/Response.php(35): Illuminate\Http\Response->setContent()

17 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(918): Illuminate\Http\Response->__construct()

18 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(885): Illuminate\Routing\Router::toResponse()

19 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(805): Illuminate\Routing\Router->prepareResponse()

20 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Routing\Router->Illuminate\Routing\{closure}()

21 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

22 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Routing\Middleware\SubstituteBindings->handle()

23 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

24 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle()

25 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

26 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\View\Middleware\ShareErrorsFromSession->handle()

27 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

28 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Session\Middleware\StartSession->handleStatefulRequest()

29 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Session\Middleware\StartSession->handle()

30 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

31 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle()

32 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

33 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Cookie\Middleware\EncryptCookies->handle()

34 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

35 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(805): Illuminate\Pipeline\Pipeline->then()

36 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(784): Illuminate\Routing\Router->runRouteWithinStack()

37 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(748): Illuminate\Routing\Router->runRoute()

38 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Routing/Router.php(737): Illuminate\Routing\Router->dispatchToRoute()

39 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(200): Illuminate\Routing\Router->dispatch()

40 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(144): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}()

41 /var/www/Cachet/vendor/livewire/livewire/src/Features/SupportDisablingBackButtonCache/DisableBackButtonCacheMiddleware.php(19): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

42 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Livewire\Features\SupportDisablingBackButtonCache\DisableBackButtonCacheMiddleware->handle()

43 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

44 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()

45 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle()

46 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

47 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle()

48 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\TrimStrings->handle()

49 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

50 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle()

51 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(99): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

52 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle()

53 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Http/Middleware/HandleCors.php(49): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

54 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\HandleCors->handle()

55 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

56 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(183): Illuminate\Http\Middleware\TrustProxies->handle()

57 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(119): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}()

58 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(175): Illuminate\Pipeline\Pipeline->then()

59 /var/www/Cachet/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(144): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter()

60 /var/www/Cachet/public/index.php(60): Illuminate\Foundation\Http\Kernel->handle()

61 {main}

jbrooksuk commented 3 weeks ago

Hey @PBXForums, sorry you're having this issue! Do you have any components currently configured?

PBXForums commented 3 weeks ago

Hi,

Yes, I created one component group and one component to test with.

PBXForums commented 3 weeks ago

I can confirm that deleting the component fixes it.

jbrooksuk commented 3 weeks ago

Interesting. Can you provide more information on the group and component you're creating that causes this exception? What status does the component have etc?

PBXForums commented 3 weeks ago

component I have recreated another without adding it to a component group and get an error.

As simple as can be really.

PBXForums commented 2 weeks ago

Just to come back on this issue...

I'm not a programmer but manage to find the following call seemed to have the problem:

return ($this->components()->majorOutage / $this->components()->total) * 100 >= $majorOutageRate;

Looking at the following function I could see that it was an sql query of some sort

    public function components()
    {
        return $this->components ??= Component::query()
            ->toBase()
            ->selectRaw('count(*) as total')
            ->selectRaw('sum(case when status = ? then 1 else 0 end) as operational', [ComponentStatusEnum::operational])
            ->selectRaw('sum(case when status = ? then 1 else 0 end) as performanceIssues', [ComponentStatusEnum::performance_issues])
            ->selectRaw('sum(case when status = ? then 1 else 0 end) as partialOutage', [ComponentStatusEnum::partial_outage])
            ->selectRaw('sum(case when status = ? then 1 else 0 end) as majorOutage', [ComponentStatusEnum::major_outage])
            // @todo Handle authenticated users.
            ->first();
    }

I am using postgresql and way back in my memory, I remember something about case sensitivity I had from a problem years ago and so I changed the previous call to:

return ($this->components()->majoroutage / $this->components()->total) * 100 >= $majorOutageRate;

This now seems to work just fine.

I'm probably barking up the wrong tree but it may help.

jbrooksuk commented 2 weeks ago

@PBXForums that sounds like it's the issue! I'll fix this.

jbrooksuk commented 2 weeks ago

This was fixed in cachethq/core.