S: Gedupte DB + Trade etc

01/22/2015 19:37 Terrat#1
Hey ho,
hätte da mal 3 Sachen.

1:
könnte mal jemand eine DB hochladen wo so 5-10 Items gedupet sind ?

2:
Man kann ja Dupes an doppelter serial erkennen, wird beim Trade zuerst das Item gelöscht und dan wd. eingefügt oder exestiert das Item dann Kurzzeitig 2 mal?(Wegen autobann versteht sich ;))

3:
Deadlock's ? Kann man die irgend wie verhindern könnte man die nicht aber in einen vector packen und abarbeiten?
Bei zu vielen Packets könnte es denn ja aber den ram sprengen auf dauer.
01/22/2015 19:38 Мarvіn#2
Quote:
Originally Posted by Dreamsläps View Post
Hey ho,
könnte mal jemand eine DB hochladen wo so 5-10 Items gedupet sind ?
Geh auf deinen Testserver/whatever und dupe dir selber ein paar.
Ist ja wohl nicht so schwer :rolleyes:
01/22/2015 19:40 Terrat#3
Quote:
Originally Posted by Мarvіn View Post
Geh auf deinen Testserver/whatever und dupe dir selber ein paar.
Ist ja wohl nicht so schwer :rolleyes:
Bin kein Dupe pro <3
01/22/2015 19:50 Мarvіn#4
Quote:
Originally Posted by Dreamsläps View Post
Bin kein Dupe pro <3
1. Server online stellen.
2. Zwei Charaktere einloggen.
3. Items tauschen von User A nach User B.
4. User B loggt sich aus und User A bleibt online.
5. WorldServer einfach schließen (für Rollback).
6. User B ist gespeichert wegen Logout, User A hat Rollback und Items wieder.

Zack hast du die Items doppelt vorhanden.
01/23/2015 07:11 xTwiLightx#5
Erstelle eine BASE_VALUE_TBL mit Items, die bereits eine SerialNum enthalten.
Wenn du dann ganz ganz ganz viele Chars erstellst, hast du ganz ganz ganz viele Dupes in der Datenbank. ;p
01/23/2015 11:53 Terrat#6
Hat jemand noch ne antwort zu Frage 2 oder 3?
01/23/2015 12:37 WurstbrotQT#7
Deadlocks kannste auch im source verhindern (critical section/lock ist da das Stichwort).
Die Abfragen sind btw gequeued also in nem "Vektor" (um flames zu verhindern, es ist kein vektor sondern wirklich eine queue, deshalb die "").
Mit ram wirst du keine Probleme bekommen, wir reden hier von maximal nem kb pro abfrage (wirklich MAXIMAL) was bei 1024*1024 immerhin 1 gb ist aber ich denke nicht dass das so viel wird

Dupen geht so: Du tradest das item und logst dich mit dem character aus, der das item bekommen hat (wird direkt gespeichert) der character der noch eingeloggt ist hat das item nicht mehr (wurde mitsamt serial zum andern übertragen) aber wurde auch noch nicht gespeichert. Dann wird der Server von den beiden gecrasht ( wie auch immer), server hat keine Möglichkeit mehr, alle character zu speichern (crash, abrupte Terminierung des Prozesses) und beide character existieren in der db mit dem identischen item. Im Klartext heißt das, dass das item nie zur gleichen Zeit während des Handels mehrmals existiert, du also nur wirklich durch abfragen der Datenbank gedupte items auslesen kannst
01/23/2015 14:11 xTwiLightx#8
Quote:
2:
Man kann ja Dupes an doppelter serial erkennen, wird beim Trade zuerst das Item gelöscht und dan wd. eingefügt oder exestiert das Item dann Kurzzeitig 2 mal?(Wegen autobann versteht sich )
Es wird getradet -> Char 1 loggt sich aus (damit wird dieser gespeichert), Worldserver crasht (muss innerhalb von 900 Sekunden passieren) -> Rollback -> beide haben die getradeten Items
Quote:
3:
Deadlock's ? Kann man die irgend wie verhindern könnte man die nicht aber in einen vector packen und abarbeiten?
Bei zu vielen Packets könnte es denn ja aber den ram sprengen auf dauer.
Naja, was Wurstbrot da sagt, ist nicht wirklich notwendig.
Da Deadlocks ein SQL Server Problem sind und nichts mit der Anwendung zu tun haben (außer sie fragt im Sekundentakt Gigabytes von Daten ab), muss man in den Datenbanken daran arbeiten.

Der Server braucht länger für eine Abfrage, lockt für diesen Zeitraum den Zugriff, währenddessen will ein anderer Prozess darauf zugreifen -> Deadlock.
Hat also NICHTS mit dem Sourcecode zu tun.

Indizes auf Tables setzen und fertig.
01/23/2015 16:09 Terrat#9
Quote:
Originally Posted by xTwiLightx View Post
Da Deadlocks ein SQL Server Problem sind und nichts mit der Anwendung zu tun haben (außer sie fragt im Sekundentakt Gigabytes von Daten ab), muss man in den Datenbanken daran arbeiten.

Der Server braucht länger für eine Abfrage, lockt für diesen Zeitraum den Zugriff, währenddessen will ein anderer Prozess darauf zugreifen -> Deadlock.
Hat also NICHTS mit dem Sourcecode zu tun.

Indizes auf Tables setzen und fertig.
Explain please

2:
Das heißt ich sollte kein auto bann geben ? Den so wie ich verstehe könnten accs bei crashes gebannt werden oder allgemein.
?
01/23/2015 18:49 WurstbrotQT#10
Quote:
Originally Posted by Dreamsläps View Post
Explain please

2:
Das heißt ich sollte kein auto bann geben ? Den so wie ich verstehe könnten accs bei crashes gebannt werden oder allgemein.
?
[Only registered and activated users can see links. Click Here To Register...]

Du kannst niemals zu einer 100% Wahrscheinlichkeit sagen, dass ein Item vosaetzlich geduped ist. (Es sei denn, es kommt zig mal mit den gleichen Accounts/Characteren vor)
01/23/2015 18:53 Terrat#11
Hm, da wäre es ja fast sinvoller dann einfach beide Items zu löschen oder ?
01/23/2015 19:16 xTwiLightx#12
Quote:
Originally Posted by Dreamsläps View Post
Hm, da wäre es ja fast sinvoller dann einfach beide Items zu löschen oder ?
Nein, einfach beide Chars nach dem Handel abspeichern (CHARACTER_STR 'U1' bzw 'C1' call).
01/23/2015 19:17 Terrat#13
Das ist ja aber nicht die einzigste Dupe möglichkeit.
01/23/2015 19:24 xTwiLightx#14
Für die Dupemöglichkeit mit der Gildenbank gibt es bereits einen Fix, den mootie vor x Monaten/Jahren gepostet hat.
01/23/2015 19:29 Terrat#15
Gibt ja aber so weit ich weiß auch Bag dupe etc...