jsondb-core icon indicating copy to clipboard operation
jsondb-core copied to clipboard

JsonParseException deletes db file

Open alpercoskun opened this issue 7 years ago • 2 comments

When there is a problem in JSON file, it gets JsonParseException and it deletes this entry. But it should leave the file untouched, it is much better, otherwise we lost all the data because of a simple problem in JSON file.

com.fasterxml.jackson.core.JsonParseException: Unexpected character ('6' (code 54)): was expecting a colon to separate field name and value at [Source: ...; line: 1, column: 150] at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702) ~[jackson-core-2.8.3.jar:2.8.3] at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558) ~[jackson-core-2.8.3.jar:2.8.3] at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:456) ~[jackson-core-2.8.3.jar:2.8.3] at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipColon2(ReaderBasedJsonParser.java:2212) ~[jackson-core-2.8.3.jar:2.8.3] at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._skipColon(ReaderBasedJsonParser.java:2191) ~[jackson-core-2.8.3.jar:2.8.3] at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName(ReaderBasedJsonParser.java:924) ~[jackson-core-2.8.3.jar:2.8.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:283) ~[jackson-databind-2.8.3.jar:2.8.3] at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) ~[jackson-databind-2.8.3.jar:2.8.3] at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3789) ~[jackson-databind-2.8.3.jar:2.8.3] at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2833) ~[jackson-databind-2.8.3.jar:2.8.3] at io.jsondb.JsonDBTemplate.loadCollection(JsonDBTemplate.java:204) [jsondb-core-1.0.64.jar:?] at io.jsondb.JsonDBTemplate.reloadCollection(JsonDBTemplate.java:170) [jsondb-core-1.0.64.jar:?] at io.jsondb.JsonDBTemplate.loadDB(JsonDBTemplate.java:140) [jsondb-core-1.0.64.jar:?] at io.jsondb.JsonDBTemplate.initialize(JsonDBTemplate.java:117) [jsondb-core-1.0.64.jar:?] at io.jsondb.JsonDBTemplate.(JsonDBTemplate.java:95) [jsondb-core-1.0.64.jar:?] at io.jsondb.JsonDBTemplate.(JsonDBTemplate.java:81) [jsondb-core-1.0.64.jar:?]

alpercoskun avatar Feb 12 '18 07:02 alpercoskun

Make sense, I will try to fix this soon

FarooqKhan avatar Feb 12 '18 10:02 FarooqKhan

@alpercoskun i tried to reproduce this bug, and added a unit test for it LoadInvalidJsonTests.java however i could not reproduce this problem, I think i had seen this problem but once but dont remember when it had happened. If you comment the lines inside tearDown() you will see the temporary file src/test/resources/dbfiles/loadInvalidJsonTests/instances.json does have the invalid json entry

Can you help me reproduce this so i can try to fix it

FarooqKhan avatar Oct 19 '18 21:10 FarooqKhan