thevisad / DayZ-Private-master

Reality DayZ - replaced Bliss for DayZ servers
GNU General Public License v2.0
44 stars 84 forks source link

Survivor / tent item not saving all the time #26

Closed humangenome closed 11 years ago

humangenome commented 11 years ago

I drop bandage. Log out. Log in. I have the bandage still and the bandage is on the ground.

Fresh database, migrated from 1.7.4.4 on Bliss latest following the migration steps towards Reality.

Skaronator commented 11 years ago

Duplicate of #11

humangenome commented 11 years ago

Believe this is an issue with the HiveExt.dll

I used the R4Z0R49/DayZMod schema and do not have the issue.

ghost commented 11 years ago

I can confirm this issue. As stated by humengenome this is an intermittend issue so it is not a general issue for all tents. http://opendayz.net/index.php?threads/dayz-1-7-5-1.7592/#post-16773 was applied ofc.

No errors regarding failed updates in the RPT

ghost commented 11 years ago

Ok we have analyzed this and we have found some interesting things.

  1. This issue only occurs on Databases which where in use before 1.7.5.1
  2. This issue only occurs for tents which were placed before switching to 1.7.5.1
  3. The commands sent to HiveExt.dll differ for those "old" tents (which do not update) and the "new" ones which work fine:

Pitching a "new" tent: 2013/02/07, 0:39:39 "HIVE: WRITE: "CHILD:309:36390368540227:[[[],[]],[[],[]],[[],[]]]:""

Putting an additional DMR into an "old" tent. Call gets executed, but DB is not updated (count stays at 4) 2013/02/07, 0:40:02 "HIVE: WRITE: "2013/02/07, 0:40:02 "HIVE: WRITE: "CHILD:303:5323:[[["M14_EP1","DMR","Mk_48_DZ"],[3,5,2]].....

Putting a M14 into the "new" tent. Then exchanging it with a DMR. Both updates are correctly written to the database: 2013/02/07, 0:40:12 "HIVE: WRITE: "CHILD:309:36390368540227:[[["M14_EP1"],[1]],[[],[]],[[],[]]]:"" 2013/02/07, 0:40:55 "HIVE: WRITE: "CHILD:309:36390368540227:[[["DMR"],[1]],[[],[]],[[],[]]]:""

Putting the M14 in the "old" tent and removing the DRM from the "old" tent. Again the correct call is executed but the DB entry of the tent is not touched 2013/02/07, 0:41:01 "HIVE: WRITE: "CHILD:303:5323:[[["M14_EP1","DMR","Mk_48_DZ"],[4,4,2]]......

Removing the remaining DMR from the "new" tent. Syncs fine to DB: 2013/02/07, 0:41:04 "HIVE: WRITE: "CHILD:309:36390368540227:[[[],[]],[[],[]],[[],[]]]:""

Hope this helps to resolve the issue

p-schneider commented 11 years ago

I know this issue from p-schneider/DayZ-Private#21

Right now tents might mess with existing vehicles on the map, because it tries to update the inventory of vehicle id 5323 instead of deployable id 5323.

I know the bug and how to fix it and I will look into it shortly.

xyberviri commented 11 years ago

Can you check which table the new tents are going into those keys look like they should be appearing in the vehicle table On Feb 6, 2013 6:23 PM, "leepfrog" notifications@github.com wrote:

Ok we have analyzed this and we have found some interesting things.

  1. This issue only occurs on Databases which where in use before 1.7.5.1
  2. This issue only occurs for tents which were placed before switching to 1.7.5.1
  3. The commands sent to HiveExt.dll differ for those "old" tents (which do not update) and the "new" ones which work fine:

Pitching a "new" tent: 2013/02/07, 0:39:39 "HIVE: WRITE: "CHILD:309:36390368540227:[[[],[]],[[],[]],[[],[]]]:""

Putting an additional DMR into an "old" tent. Call gets executed, but DB is not updated (count stays at 4) 2013/02/07, 0:40:02 "HIVE: WRITE: "2013/02/07, 0:40:02 "HIVE: WRITE: "CHILD:303:5323:[[["M14_EP1","DMR","Mk_48_DZ"],[3,5,2]].....

Putting a M14 into the "new" tent. Then exchanging it with a DMR. Both updates are correctly written to the database: 2013/02/07, 0:40:12 "HIVE: WRITE: "CHILD:309:36390368540227:[[["M14_EP1"],[1]],[[],[]],[[],[]]]:"" 2013/02/07, 0:40:55 "HIVE: WRITE: "CHILD:309:36390368540227:[[["DMR"],[1]],[[],[]],[[],[]]]:""

Putting the M14 in the "old" tent and removing the DRM from the "old" tent. Again the correct call is executed but the DB entry of the tent is not touched 2013/02/07, 0:41:01 "HIVE: WRITE: "CHILD:303:5323:[[["M14_EP1","DMR","Mk_48_DZ"],[4,4,2]]......

Removing the remaining DMR from the "new" tent. Syncs fine to DB: 2013/02/07, 0:41:04 "HIVE: WRITE: "CHILD:309:36390368540227:[[[],[]],[[],[]],[[],[]]]:""

Hope this helps to resolve the issue

— Reply to this email directly or view it on GitHubhttps://github.com/thevisad/DayZ-Private-master/issues/26#issuecomment-13213998.

humangenome commented 11 years ago

This issue is NOT just tents only. Try dropping a painkiller, logging out, log back in, it will dupe the item most of the time. It does not apply to all items and I've yet to find a pattern. It's been relatively easy to dupe this way.

p-schneider commented 11 years ago

Can someone please test this: https://gist.github.com/p-schneider/4727637 (download into \pkg\reality)

This is only a small fix. I'm sure there have to be added many more fixes to the \pkg\reality folder to make 1.7.5 run stable with reality. Normally the normal untouched dayz_server code 1.7.5.1 should be in \util\dayz_server while all reality related changes would be in \pkg\reality. build.pl takes the files from \util\dayz_server first and then overrides the files with the changed ones from \pkg\reality. After that it merges packages specified by the --with-parameter from \pkg\packagename and world related server fixes from \pkg\world\worldname. (But @thevisad decided to delete this folder in 5f8b5246885d65411cfb941baefeddde0f23e6b1. [why?])

thevisad commented 11 years ago

I was trying to clean up as much of the code as possible so that it is as close to the official as we can make it. I understand some changes will be needed, but for the most part we should try to stay within the range of the official mods. I am trying to test this; however, some of the ugly bugs of the perl script are rearing its head (duplicating multiple lines of code depending on which order the --build switches are used)

thevisad commented 11 years ago

That doesn't seem to have any effect at this moment. The tent is saving out to the database properly and it is even loading up the tent from the database as well. The server is not showing any tents at this moment.

on pitch 0:24:13 "DEBUG: Checking if Object: 1cf02400# 1055178: a_tent.p3d REMOTE is allowed published by Server" 0:24:13 "DEBUG: Object: 1cf02400# 1055178: a_tent.p3d REMOTE published by Server is Safe"

on server load 0:14:39 "READ/WRITE: "["OBJ","1","TentStorage","1",[300,[5995.55,2591.41,0.01]],[[[],[]],[[],[]],[[],[]]],[],0.0,0.0]"" 0:14:39 "READ/WRITE: "["OBJ","2","TentStorage","1",[265,[5996.33,2593.41,0.011]],[[[],[]],[[],[]],[[],[]]],[],0.0,0.0]""

I am getting database writes to the tents. 4 6891032509063 1 1 1 [63,[6891.04,3250.86,1.478e-05]] [[["DMR"],[1]],[[],[]],[[],[]]] 2013-02-07 00:38:40 2013-02-07 00:36:40

thevisad commented 11 years ago

I believe we have found the issue and we are looking into it now trying to resolve the problem completely.

thevisad commented 11 years ago

Looks like this IS affecting official as well, so it's not all us at the moment. https://github.com/R4Z0R49/DayZMod/issues/354

Cur commented 11 years ago

as of this patch, if you drop ALL your gear, weapons, tools, EVERYTHING, your inventory should be completely empty. Log out, Log in, you have all your gear back, and the pile of everything you dropped is still there. as in the other thread, is this triggerd by data loss/corruption prevention on the database?

thevisad commented 11 years ago

Found issue with tents/vehicles and have corrected the problem within the database/hive/scripts as they are currently in Reality. A new schema/hive update will be passed shortly on this, currently finalizing some testing of the changes now.

thevisad commented 11 years ago

Closing issue at this time as resolved.

Peep commented 11 years ago

This issue has not been fixed for me after the update. I ensured I was using the new schema, database.dll and server.pbo change.

Placing a tent, it saves fine until the server restarts. After the restart, it does not save at all. Packing the tent and then restarting the server also makes it appear after restart, duping the tent itself.

jamaicada commented 11 years ago

Same here. Update hiveext.dll, db schema (manually) and pbos. Put painkiller in the tent and it wasnt saved.

Peep commented 11 years ago

Good to know I'm not the only one with this issue, let's hope a proper fix comes around!

Thank you for the effort, thevisad.

thevisad commented 11 years ago

Ill look it after I make dinner here, I had all of my tents on my servers loading, maybe I did miss something in it.

thevisad commented 11 years ago

This issue has been resolved with the latest version, update to the latest schema and the latest hive. All tents are saving properly and loading with the server properly.

ghost commented 11 years ago

This issue is not resolved.

Pitch a tent adding/removing items works restart the server tent does not update any more

Peep commented 11 years ago

What are you using to build your server with? If you use the buildings package, try building without it.

ghost commented 11 years ago

Nope, only bare chernarus

jamaicada commented 11 years ago

Can someone approve the bug if fixed? Its kinda problem to update 40/40 server without making sure problem is fixed. Thank you

Peep commented 11 years ago

It's working fine for us and we host three very active 50 slot servers.

jamaicada commented 11 years ago

Nice :) Thank you!

Peep commented 11 years ago

No problem. Make sure you don't build with Buildings as it's going to overwrite the fix until the Buildings package is updated.

If you really need it, make sure you merge the code in manually rather than doing it with build.pl.

jamaicada commented 11 years ago

Yeah, I already read your bug report and I dont need buildings package