Bug #51234

Exception with EXT:sys_note is installed

Added by Philipp Gampe over 6 years ago. Updated over 1 year ago.

Status:
Closed
Priority:
Must have
Assignee:
Category:
Backend API
Target version:
-
Start date:
2013-03-13
Due date:
% Done:

100%

TYPO3 Version:
6.1
PHP Version:
5.4
Tags:
Complexity:
medium
Is Regression:
No
Sprint Focus:

Description

As soon as the system extension "sys_note" installed, the following exception is shown in the right column of the backend, whenever I open the page or list module:

 #1247602160: Table 'typo3-master.tx_extbase_domain_model_backenduser' doesn't exist:
SELECT tx_extbase_domain_model_backenduser.* FROM tx_extbase_domain_model_backenduser WHERE
tx_extbase_domain_model_backenduser.uid = '1' LIMIT 1 (More information)

Seems that the mapping for the BackendUser-Modul to the "be_users" table is not made within sys_note.

Disabling the extension solves the issue, re-enabling it brings the issue back, reproducable. Tested on 6.1-dev based on rev. 75ee5d8f209

sql_error.jpg View - SQL-error (89.8 KB) Kurt Gusbeth, 2013-09-18 14:13


Related issues

Related to TYPO3 Core - Bug #52453: Backend / Uncaught exception 'RuntimeException' with message 'No settings detected. This usually happens if there is no frontend TypoScript template with root flag set. Please create one.' Closed 2013-10-02
Related to TYPO3 Core - Bug #51546: FILE:EXT:extbase/ext_typoscript_setup.txt not included by default Closed 2013-08-30
Duplicates TYPO3 Core - Bug #46250: Exception with EXT:sys_note is installed Closed 2013-03-13

Associated revisions

Revision 68e91cca (diff)
Added by Philipp Gampe over 6 years ago

[BUGFIX] Move beuser property mappings to global scope

Currently the persistence settings for all tx_beuser models are defined
in module.tx_beuser.persistence.classes.
If any other module tries to access the corresponding backend user
repository from tx_beuser, then no mappings will be loaded by extbase,
resulting in a wrong cache entry for the model and the attempt to
access a nonexisting table.

Move the class mapping part of the TS template into
config.tx_extbase.persistence.classes
to make them available for all extensions and modules.

Resolves: #51234
Releases: 6.2, 6.1, 6.0
Change-Id: I0b39c96c9db89c379e5613231a215f27b2dfbcde
Reviewed-on: https://review.typo3.org/23967
Reviewed-by: Wouter Wolters
Tested-by: Wouter Wolters
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind

Revision c65640dd (diff)
Added by Philipp Gampe over 6 years ago

[BUGFIX] Move beuser property mappings to global scope

Currently the persistence settings for all tx_beuser models are defined
in module.tx_beuser.persistence.classes.
If any other module tries to access the corresponding backend user
repository from tx_beuser, then no mappings will be loaded by extbase,
resulting in a wrong cache entry for the model and the attempt to
access a nonexisting table.

Move the class mapping part of the TS template into
config.tx_extbase.persistence.classes
to make them available for all extensions and modules.

Resolves: #51234
Releases: 6.2, 6.1, 6.0
Change-Id: I0b39c96c9db89c379e5613231a215f27b2dfbcde
Reviewed-on: https://review.typo3.org/24005
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind

Revision 2fef8add (diff)
Added by Philipp Gampe over 6 years ago

[BUGFIX] Move beuser property mappings to global scope

Currently the persistence settings for all tx_beuser models are defined
in module.tx_beuser.persistence.classes.
If any other module tries to access the corresponding backend user
repository from tx_beuser, then no mappings will be loaded by extbase,
resulting in a wrong cache entry for the model and the attempt to
access a nonexisting table.

Move the class mapping part of the TS template into
config.tx_extbase.persistence.classes
to make them available for all extensions and modules.

Resolves: #51234
Releases: 6.2, 6.1, 6.0
Change-Id: I0b39c96c9db89c379e5613231a215f27b2dfbcde
Reviewed-on: https://review.typo3.org/24006
Reviewed-by: Stefan Neufeind
Tested-by: Stefan Neufeind

History

#1 Updated by Philipp Gampe over 6 years ago

I copied this one, as I cannot reopen it. But we need to find a way to reproduce the issue. Apparently, sometimes there is a wrong cache entry written. We really need to find out when and why this happens.

#2 Updated by aimcom no-lastname-given over 6 years ago

I'm having trouble with a similar issue: In one of my extensions exists a mapping for the tableName tt_address to another class. This works most of the time, but sometimes the mapping is not correct and the related cache entry in the table cf_extbase_datamapfactory_datamap is created with a wrong table name - something like tx_example_domain_model_address instead of tt_address. It is quite hard to reproduce this error as it only occurs randomly. My TYPO3 version is 6.1.3.

#3 Updated by Kurt Gusbeth over 6 years ago

I updatet from the version 6.1.1 to 6.1.5 and now I get this error message too.
I was not there in the version 6.1.1.

#4 Updated by Philipp Gampe over 6 years ago

  • Is Regression set to No

This seems to be some caching issue. I had an extension that used the backend user model too and this had the same problem.

What works in most cases is to visit the backend users module right after clearing the cache.

#5 Updated by Philipp Gampe over 6 years ago

  • Status changed from Needs Feedback to Accepted

#6 Updated by Markus Klein over 6 years ago

I can't reproduce this in 6.2

#7 Updated by Stefan Neufeind over 6 years ago

Unfortunately I also can't reproduce this on master. Have been running with sys_note enabled for quite a while now.

On the pages you encounter these errors with, do they have some special content-elements maybe?

#8 Updated by Wouter Wolters over 6 years ago

I can also not reproduce this on my environments (master, 6.1 and 6.0). Have it running since it is rewritten and never had an exception.

#9 Updated by Philipp Gampe over 6 years ago

It must be some kind of extbase caching issue. Somehow the TS settings for the table and properties mapping are not loaded which results in this issue.
It does not happen in the page or list module for me, nor in the backend users module, but in a custom module. Most likely this is some kind of race condition and a cache entry is written with too few information and later taken as granted.

#10 Updated by Stefan Neufeind over 6 years ago

When it happens (reproducible), could you maybe:
  • extract a list of cache-files loaded for that request
  • move away the files one-by-one (hope that works) and perform the request again to narrow it down which cache-file might cause this

Let's hope we don't end up with a huge file for "everything" :-)

#11 Updated by Philipp Gampe over 6 years ago

It is the cf_extbase_datamapfactory_datamap cache. Somehow the the datamap is not populated with the configuration form modules.tx_beuser., but only with config.tx_extbase..
This seems to work with the backend users module, and then the cache entry is populated correctly, but if you call another BE module first (which uses the be users repository), then there is a wrong cache entry for that model.

#12 Updated by Philipp Gampe over 6 years ago

The modules key of the template is only loaded for the specific plugin. Thus modules.tx_beuser. is only available if you actually call the beuser module.

The persistence settings need to be moved to the global config.tx_extbase. key that is available to all extensions.

#13 Updated by Philipp Gampe over 6 years ago

  • Assignee set to Philipp Gampe

Will prepare a patch for this.

#14 Updated by Gerrit Code Review over 6 years ago

  • Status changed from Accepted to Under Review

Patch set 1 for branch master has been pushed to the review server.
It is available at https://review.typo3.org/23967

#15 Updated by Gerrit Code Review over 6 years ago

Patch set 2 for branch master has been pushed to the review server.
It is available at https://review.typo3.org/23967

#16 Updated by Gerrit Code Review over 6 years ago

Patch set 3 for branch master has been pushed to the review server.
It is available at https://review.typo3.org/23967

#17 Updated by Gerrit Code Review over 6 years ago

Patch set 1 for branch TYPO3_6-1 has been pushed to the review server.
It is available at https://review.typo3.org/24005

#18 Updated by Gerrit Code Review over 6 years ago

Patch set 1 for branch TYPO3_6-0 has been pushed to the review server.
It is available at https://review.typo3.org/24006

#19 Updated by Philipp Gampe over 6 years ago

  • Status changed from Under Review to Resolved
  • % Done changed from 50 to 100

#20 Updated by Frank no-lastname-given over 6 years ago

Thanks for the patch! I copied the patch Set No. 4 (https://review.typo3.org/#/c/23967/4/typo3/sysext/beuser/Configuration/TypoScript/setup.txt) into my 6.1.5 installation, deleted cache via Install Tool, had a look into the TSOB (could expand config.tx_extbase-branch to BackendUser/BackendUserGroup, not any further), but them same error occurs using eg. list/page module. Did I apply the patch like it should?

I also insert the TS-Code into my main template (http://wiki.typo3.org/Exception/CMS/1247602160). This doesn't work.
As a workaround I deactivated sys_note. Works.

#21 Updated by Bernhard Kraft about 6 years ago

This bug still occurs in 6.2.0beta4.

Can it have to do with charset/collation being set to latin1 instead of utf-8?

I changed database charset to utf8_general_ci and dropped/recreated all "cf_" cache tables. Still doesn't work. I get:

#1247602160: Table 't3_ffmoerbisch.tx_extbase_domain_model_backenduser' doesn't exist: SELECT tx_extbase_domain_model_backenduser.* FROM tx_extbase_domain_model_backenduser WHERE tx_extbase_domain_model_backenduser.uid = '2' LIMIT 1 (More information)

Uninstalling sys_note helped.

#22 Updated by Philipp Gampe about 6 years ago

@Bernard, are you sure that you cleared all caches and that you do not override the TS template somehow?

#23 Updated by Daniel Minder almost 6 years ago

(deleted - see below)

#24 Updated by Daniel Minder almost 6 years ago

After some hours of debugging I found out that the error was sitting in front of the computer :)
Indeed, there was a "config <..." sitting in a template... Now, I see the "config.tx_extbase" settings in the TypoScript Object Browser and everything works fine - even with sys_notes :-)

#25 Updated by Bernhard Kraft over 5 years ago

Yeah. But at what end of the line? :)

In my opinion it is still strange to have TypoScript parsed in Backend. TypoScript was something intended purely for the frontend. By purpose.

Anyways. When I remove the "config < page.config" the mentioned error is gone but now I have:

Oops, an error occurred!

More than one request handler with the same priority can handle the request, but only one handler may be active at a time!

#26 Updated by Benni Mack over 1 year ago

  • Status changed from Resolved to Closed

Also available in: Atom PDF