Nette 2.4: chyba s Nette Database v souvislosti s obnovou cache

Kcko
Člen | 468
+
0
-

Po několika hodinách analýzy kódu a simulací na webu, jsem zjistil, že se mi děje poněkud zvláštní chování.

Pokud je web zakešovaný a já provedu insert do DB, tak se provedou očekávané dotazy
viz obrázek https://bit.ly/2XybGyX

<?php

$order = $this->order->save($data);

//což je

	public function save($data)
	{
		$row = $this->database
			->table('order')
			->insert($data);

		return $row;
	}

?>

Pokud ovšem smažu keš (ručně) nebo se maže v nějaké periodě a to způsobuje právě ty nahodilé „výpadky“ co mi hlásí klient, kdy dochází ke špatnému insertu nebo updatu nebo vrácení hodnoty, která je potřeba pro další insert / update
tak jsem si všiml, že se provádí tato sada https://bit.ly/3dEbmV2 a výsledkem je tedy to, že mi insert sice uloží data (v tomto případě, v jiném nemusí), ale nedokáže mi je už vrátit, viz poslední řádek ve videu, LAST INSERT ID je 0, díky tomu mám narušenou konzistenci dat; porušené vazby a aplikace mi vůbec nefunguje.

Neví někdo co je to za chybu? Problém s Nette database; nějaký bug, nebo dělám něco blbě (moc se mie nezdá teda).

EDIT: Našel jsem tento topic → https://forum.nette.org/…vnullstorage
, který se zdá, že to řeší. Já ale DEV NULL storage nepoužívám. A proč je to až v 3.x verzi a ne alespoň ve 2.4 když je stále je mi záhadou.

Editoval Kcko (5. 6. 2020 0:49)

Pavel Kravčík
Člen | 1196
+
+1
-

@Kcko: Předpokládám, že to bude tím, že podpora Nette 2.4 (2016) skončila, proto se to neopravuje zpětně – viz kompabilita.

Tohle je nemilá situace, protože před supportem se déle čekalo na v3 a většina projektů stále běží na 2.4 a asi ještě dlouho bude.

Možná poprosit @DavidGrudl a pochválit mu dnešní oblečení nebo něco co ho obměkčí jestli by neudělal výjimku. ;)

Radu od Matěje Kmínka bych možná rozšířil – udělat si vlastní fork klidně privátní a nechat ho dojet v projektech s 2.4 – stejně už nic nového do 2.4 pravděpodobně nepřibude.

Editoval Pavel Kravčík (5. 6. 2020 8:28)

David Matějka
Moderator | 6445
+
+1
-

související issue: https://github.com/…e/issues/216 a PR: https://github.com/…ase/pull/217

hotfixem by mohlo být zavolání (asi) toho getPrimaryAutoincrementKey před samotným insertem

Kcko
Člen | 468
+
0
-

Použil jsem ten fix a zasadil přímo do vendoru a chyba ustala.
Používám konvenční reflexi a v tom může být tak ten problém (většinou lidí používají tu druhou s FK).

David Grudl
Nette Core | 8227
+
+1
-

Ono to v 2.4-dev opravené je, takže "nette/database": "v2.4.x-dev" by měla fungovat.

Kcko
Člen | 468
+
0
-

@DavidGrudl Nette 2.4 už není vyvíjené a udržované, tohle je tedy navíc, díky!
Zeptám se postfix dev znamená co? Sémantickému verzování rozumím (major-minor-patch), ale „dev“ postfixu ne.

Marek Bartoš
Nette Blogger | 1274
+
0
-

Zeptám se postfix dev znamená co?

Stáhne i unstable verzi, bez tagu. V tomhle případě poslední commit z větve, která má definovaný v composer.json branch alias 2.4-dev

https://getcomposer.org/…s/aliases.md#…

{
	"extra": {
		"branch-alias": {
			"dev-master": "2.4-dev"
		}
	}
}

Editoval Mabar (9. 6. 2020 11:07)

Kcko
Člen | 468
+
0
-

Mabar napsal(a):

Zeptám se postfix dev znamená co?

Stáhne i unstable verzi, bez tagu. V tomhle případě poslední commit z větve, která má definovaný v composer.json branch alias 2.4-dev

https://getcomposer.org/…s/aliases.md#…

{
	"extra": {
		"branch-alias": {
			"dev-master": "2.4-dev"
		}
	}
}

Děkuju za vysvětlení.