Commit graph

31 commits

Author SHA1 Message Date
Kunal Mehta
6e9b4f0e9c Convert all array() syntax to []
Per wikitech-l consensus:
 https://lists.wikimedia.org/pipermail/wikitech-l/2016-February/084821.html

Notes:
* Disabled CallTimePassByReference due to false positives (T127163)

Change-Id: I2c8ce713ce6600a0bb7bf67537c87044c7a45c4b
2016-02-17 01:33:00 -08:00
umherirrender
54c1e18eec Remove various double empty newlines
The double empty newline is not needed between functions, variable or at
end of file

Change-Id: Ib866a95084c4601ac150a2b402cfa184ebc18afa
2015-12-27 18:55:12 +00:00
Aaron Schulz
58cffd04b8 Pass __METHOD__ to load balancer commit/rollback methods
Change-Id: I3fd87908c2a493fae49de6a29efe79f8d433c112
2015-12-22 18:30:20 -08:00
Aaron Schulz
3a5c66c7dd Fix some MWExceptionHandler IDEA errors
Change-Id: I98b5aa4f29107185b2279ce4caf05ffe80fcd6b0
2015-12-13 04:26:01 -08:00
Alex Monk
9144554931 Handle $frame['function'] not being set in stack frames
Bug: T115107
Change-Id: I9fbfcd53fbcba1800a924acb1a1702c3c9037cc5
2015-10-14 13:05:29 +00:00
Timo Tijhof
9dcc8c872b resourceloader: Include exception log id in error message
This changes the current:

> Internal error.

To be:

> [89466ede] 2015-09-23 16:40: Fatal exception of type Less_Exception

This matches how exceptions are reported on HTML pages by MediaWiki
(via MWException::getHTML in OutputPage).

The IDs are okay to be public and exposed on HTML pages even when
$wgShowExceptionDetails is disabled.

Follows-up d478ffde10. Ref T110659.

Change-Id: I501eaa629161184ba89d44e53cdac20b39cb0903
2015-09-25 23:40:03 +00:00
jeroendedauw
8129cd9eca Make MWExceptionHandler work with PHP7's exception changes
See https://wiki.php.net/rfc/throwable-interface

Bug: T107933
Change-Id: I703c8710c8adeff14c1cbaab89f5688f6cb96c24
2015-09-16 11:22:38 +00:00
Bryan Davis
ba1835f159 Enhance debug log output for stacktraces
Make MediaWiki\Logger\LegacyLogger and
MediaWiki\Logger\Monolog\LineFormatter better at outputting stacktrace
information and provide support for 'exception' data in the logging
context that is a structured array in addition to the default Exception
object support. This works with MWExceptionHandler::handleFatalError
generated data that is provided by an HHVM interpreter and cannot be
delivered as an Exception class.

With this patch, a good value for LineFormatter's format would be:
"%datetime% %extra.host% %extra.wiki% %channel% %level_name%: %message%
%context% %exception%\n"

Bug: T89169
Bug: T107440
Change-Id: Ida01ed51c573e1654346e716723e543a1be63090
2015-09-08 07:03:52 +00:00
Bryan Davis
a6016137e8 Enhance stacktrace logging for fatals
Split fatal error handling out of MWExceptionHandler::handleError() and
move to MWExceptionHandler::handleFatalError() which has been updated to
work as a dual purpose error handler and shutdown function. Under HHVM
it will be called as an error handler and receive a stacktrace via an
undocumented extension of the error handler callback data. Under PHP5 it
will be called as a shutdown handler and attempt to gather data via
error_get_last().

Also update the error handler installed by Hooks::run() to delegate to
MWExceptionHandler::handleError() for most errors. This will allow us to
properly handle errors raised from within hooks.

Bug: T89169
Change-Id: I0f1c66f203b91fff9069520169ecc4a3b55c43d0
2015-09-08 07:03:36 +00:00
Ricordisamoa
df9ebe6f99 Fix some space-related phpcs warnings in includes/
Change-Id: I7cf7206696a5e77bc02e3630d1d88d4c176ea844
2015-08-15 08:56:03 +00:00
Ricordisamoa
7838fe300a Remove unused globals
* $wgLogExceptionBacktrace from MWExceptionHandler
  unused since 77a397125f

* $wgPasswordPolicy from WebInstallerName
  unused since 6a69a4eb73

Change-Id: Ibaac1bad05f4326a2602958a93d4d46135bdca63
2015-08-15 08:36:05 +00:00
Bryan Davis
77a397125f Convert MWExceptionHandler to use structured logging
Replace wfDebugLog() calls in MWExceptionHandler with direct use of
LoggerFactory and LoggerInterface. Logged exceptions are added to the
log message context.

LegacyLogger is also updated to append stack traces to any log event
when $wgLogExceptionBacktrace is true and the PSR-3 recommendation of
passing the exception as an 'exception' context item.

Handling of context data in LegacyLogger is expanded to support arrays,
exceptions and common object types.

Bug: T88649
Change-Id: I71499d895582bdea033a2516c902e23e38084080
2015-07-15 21:03:46 -05:00
Kunal Mehta
f6e5079a69 Use mediawiki/at-ease library for suppressing warnings
wfSuppressWarnings() and wfRestoreWarnings() were split out into a
separate library. All usages in core were replaced with the new
functions, and the wf* global functions are marked as deprecated.

Additionally, some uses of @ were replaced due to composer's autoloader
being loaded even earlier.

Ie1234f8c12693408de9b94bf6f84480a90bd4f8e adds the library to
mediawiki/vendor.

Bug: T100923
Change-Id: I5c35079a0a656180852be0ae6b1262d40f6534c4
2015-06-11 18:49:29 +00:00
Gergő Tisza
d0d539e6ba Add a hook for reporting exceptions
Bug: T100141
Change-Id: I893f8b93e09f9ef70beef46922d304fdb3600b78
2015-06-03 05:09:41 +00:00
jenkins-bot
c9a815608f Merge "Some cleanups to MWExceptionHandler::handleException" 2015-04-06 20:44:54 +00:00
Timo Tijhof
532337e6ff Use "string|false" as @return instead of "string|bool" where appropiate
This makes sure static analyzers don't warn for supposedly unsafe
code accessing variables as strings when they could be boolean after
having only checked against false.

https://github.com/scrutinizer-ci/php-analyzer/issues/605

Change-Id: Idb676de7587f1eccb46c12de0131bea4489a0785
2015-04-01 09:48:30 +01:00
Aaron Schulz
50b7a49e66 Some cleanups to MWExceptionHandler::handleException
* Do not bother with profiling data, which is just another
  thing that can go wrong.
* Catch DB rollback errors to avoid getting stuck in
  report() loops during network partitions.

Change-Id: I92293b2261c48cf49625ea14a51987e5619ab8d4
2015-03-31 16:29:20 -07:00
Kunal Mehta
039e19f1c7 exception: Log fatal errors to a new 'fatal' log group
'error' is currently disabled in Wikimedia production, but we still need
to log stack traces for fatals.

Bug: T89169
Change-Id: Id0255651f228037152b87022f5eb696c1050b9ec
2015-03-31 04:40:14 +00:00
Kunal Mehta
90f3ca0439 Fix phpcs errors and warnings in includes/exception
Change-Id: I979c94a41df67426e621a734d5a86d55b890d269
2015-03-14 19:36:51 -07:00
Timo Tijhof
b5efa72afd exception: Hide suppressed errors in 'error' log, flag in 'error-json'
Follows-up 399ba2f.

Bug: T75619
Bug: T45086
Change-Id: I1f312660c058a3940bf1e9425f86cfd531121ba3
2015-01-13 00:21:11 +00:00
jenkins-bot
8cddc9269b Merge "Tweaked the message for non-MW exceptions" 2015-01-13 00:20:14 +00:00
Aaron Schulz
6921770414 Updated some try-catch statements: MWException -> Exception
Change-Id: I76601a86e30f4984e3b1a8c8ec5ef5a0f652433a
2015-01-09 17:20:22 -08:00
Aaron Schulz
608ef0c625 Tweaked the message for non-MW exceptions
Change-Id: I46dae88d66b65aa596743bdbdbdee270d53ae803
2015-01-09 15:00:11 -08:00
Timo Tijhof
f86b759ac1 exception: Implement error-json log
Follows-up 399ba2f.

Bug: T75619
Bug: T45086
Change-Id: Ia7ba355d5925a6268ffa321ffc13cc6906b487f8
2015-01-05 20:17:00 +00:00
Bryan Davis
3ae8eb2416 Register a shutdown function to log fatal errors
MWExceptionHandler::handleFatalError() is installed as a shutdown
function to inspect `error_get_last()` output and log the error via
MWExceptionHandler::logError(). The error is examined to determine if it
is a missing class error so that a descriptive log message can be
provided instructing the server administrator on 3rd party library
installation methods.

Bug: T74777
Change-Id: I04748626487022c51050ffa7846236947a082d68
2014-12-09 23:27:40 +00:00
Timo Tijhof
164ac414fa exception: Prefix error type in front of error message
Follows-up 399ba2fecf which didn't include any translation of the error
type in the logged message (e.g. "PHP Notice" or "PHP Warning").

Before
 Error from line 2130 of mediawiki/includes/OutputPage.php: Undefined variable: bar
 Error from line 2130 of mediawiki/includes/OutputPage.php: strpos() expects at le..

After
 Error from line 2130 of mediawiki/includes/OutputPage.php: PHP Notice: Undefined variable: bar
 Error from line 2130 of mediawiki/includes/OutputPage.php: PHP Warning: strpos() expects at le..

Based on the log formatter in php
 https://github.com/php/php-src/blob/0f5858e3a328/main/main.c#L1086-L1119

Change-Id: I52f98e52caa64955050ed73e1acbc78b1116a9fd
2014-11-24 18:23:09 +00:00
Timo Tijhof
399ba2fecf MWException: Log stack traces for php errors (not exceptions)
* Remove use of 'error' where it's redundant.
* Remove call to logException from responsibility of MWException.
  Call from exception handler instead.

Change-Id: I8764cf5df87b226813c9b9cf99f9b4f3fa4b7c92
2014-11-16 14:37:15 +01:00
aude
3e87e7edf5 Log non-MediaWiki exceptions for requests via main entry point
Previously, non-MediaWiki exceptions were logged only for api requests,
job runner, resource loader, etc. but not for general requests
such as page views.

Bug: 61914
Change-Id: Id4de5cac0b9996a98cdaf5e73655d49fa55ea8c3
2014-10-06 23:57:49 +00:00
umherirrender
9c614ac02d Fixed some @params documentation
Swapped some "$var type" to "type $var" or added missing types
before the $var. Changed some other types to match the more common
spelling. Makes beginning of some text in captial.

Change-Id: I8c9f30128b46086064326708a4878228ba459447
2014-04-14 19:52:18 +00:00
Brad Jorsch
dc7d342d93 Improve handling of uncommitted DB txns with "uncaught" exceptions
One of the causes (if not the cause) of bug 56269 is if something
manages to throw an exception that makes it to MediaWiki::run's
last-resort exception catcher while having an open database transaction:
the transaction never gets committed or rolled back, so it gets
implicitly rolled back and a warning is raised.

The API has the opposite problem in bug 63145: it catches the exception
but then does the normal DB shutdown which *commits* the transaction.
This is certainly the Wrong Thing to do.

Ideally, neither of these would ever happen because any code using
transactions would have its own try-catch that would catch any
exception, rollback the transaction, and then rethrow the exception. But
it happens anyway, so let's have both of these last-resort exception
handlers do the rollback, and also log the exception so the throwing
code has a better chance of being properly fixed.

Bug: 56269
Bug: 63145
Change-Id: I8f1da51187b281fe4afc0d5a0c49f5caf3612e92
2014-03-27 12:46:07 -04:00
addshore
557af13086 Split Exception.php
Change-Id: I8273b342f8814887b65227457d0a461d7cd31e75
2014-02-24 21:17:59 +01:00