Du bist nicht angemeldet. [Anmelden]
Optionen
Thema bewerten
FATAL: Error on getData() for User - #2889579 - 18.02.2018, 14:36:55
Niveau und Vorurteil
Forumuser

Registriert: 17.04.2011
Beiträge: 3
Hallo,
Ich beschäftige mich mal wieder nach längerer Pause mit den User Apps.
Allerdings bekomme ich recht oft Fehler auf dem Entwicklungsserver Fehler zu nicht verfügbaren User Daten, wenn meine App im onAppStart oder onUserJoined über die User iteriert.

Warnung! Spoiler!
Code:
class Server
{
	mainScreenHtml = new HTMLFile(
		'main-screen.html', {
		openView: {
			width: 300,
			height: 500,
		},
		closedView: {
			width: 300,
			height: 50,
		}
	});
	logger = KnuddelsServer.getDefaultLogger();

	constructor()
	{
		[
			"onAppStart",
			"onUserJoined",
		].forEach( fn => this[fn] = this[fn].bind(this))
	}

	onAppStart() {
		KnuddelsServer.getChannel().getOnlineUsers( UserType.Human).forEach( this.onUserJoined);
	}

	onUserJoined( user)
	{
		if ( user.getUserType() == UserType.Human) {
			let {widht, height} = this.mainScreenHtml.getPageData().openView;
			user.sendAppContent( AppContent.overlayContent( this.mainScreenHtml, widht, height));
		}
	}
}

App = new Server();


Beim starten der App kommt in etwa 50% der Fälle folgende Fehlermeldung:
Zitat:
App-Logs (privat): TheGame: FATAL: Error on getData() for User.userType: userId: 30563534, nick: USER(30563534)
(no stacktrace)


Wenn ich dem Test Channel beitrete und sie läuft, kommt in etwa 50% der Fälle folgende Fehlermeldung:
Zitat:
App-Logs (privat): TheGame: STATUS: App gestoppt.

App-Logs (privat): TheGame: STATUS: User-Cache-Fehler. Probiere es später noch einmal. (Joined User nicht gefunden: 30563534 / USER(30563534))


Sonderlich was abfangen scheine ich nicht zu können.

[zum Seitenanfang]  
Re: FATAL: Error on getData() for User [Re: Niveau und Vorurteil] - #2889906 - 20.02.2018, 16:41:41
Dave20009
​Der King!

Registriert: 27.07.2006
Beiträge: 1.196
Ort: Königlicher Palast
Hallo, den Fehler, den du da beschreibst, kenne ich leider zur Genüge.

Wenn die App den User 123456789 nicht mehr finden kann, dann hat sich der User inzwischen gelöscht, warum diese gelöschten User trotzdem noch in der Persistence oder DB oder was auch immer gespeichert bleiben und da unnötig Platz wegnehmen, ist mir unverständlich! Ich finde, wenn ein User im Chat, aus der Chat DB gelöscht ist, sollte er auch automatisch aus allen anderen DB's / Persistencen gelöscht werden, da die gelöschten User nicht nur Platz wegnehmen sondern auch ständig nervige Fehler verursachen.

Ich seh das auch oft in Toplisten, dass dort steht: User(123456789). Das NERVT! Weil man auch die User nicht mehr einzeln löschen kann (hab es mehrfach versucht) sondern die ganze Persi deleten muss, was zum Nachteil aller anderen User ist.
_________________________
» Ich werde immer sagen, was ich denke. Wer die Wahrheit nicht verträgt, soll mir nicht meine Zeit stehlen. «


[zum Seitenanfang]  
Re: FATAL: Error on getData() for User [Re: Dave20009] - #2892112 - 06.03.2018, 00:31:06
Codex
Forumuser

Registriert: 31.03.2017
Beiträge: 8
Ort: Hagen
Antwort auf: Dave20009

Ich seh das auch oft in Toplisten, dass dort steht: User(123456789). Das NERVT! Weil man auch die User nicht mehr einzeln löschen kann (hab es mehrfach versucht) sondern die ganze Persi deleten muss, was zum Nachteil aller anderen User ist.


Aehm... Du loescht die ganze Persistenz? ?-)

Versuch es mal mit: http://developer.knuddels.de/docs/classes/UserAccess.html#method_exists

[zum Seitenanfang]