@@ -59,7 +59,7 @@ public void writeUserData(String sessionId, String userId) {
59
59
writer .write (userIdJson );
60
60
writer .flush ();
61
61
} catch (Exception e ) {
62
- Logger .getLogger ().e ("Error serializing user metadata." , e );
62
+ Logger .getLogger ().w ("Error serializing user metadata." , e );
63
63
} finally {
64
64
CommonUtils .closeOrLog (writer , "Failed to close user metadata file." );
65
65
}
@@ -70,6 +70,7 @@ public String readUserId(String sessionId) {
70
70
final File f = getUserDataFileForSession (sessionId );
71
71
if (!f .exists () || f .length () == 0 ) {
72
72
Logger .getLogger ().d ("No userId set for session " + sessionId );
73
+ safeDeleteCorruptFile (f );
73
74
return null ;
74
75
}
75
76
@@ -80,7 +81,8 @@ public String readUserId(String sessionId) {
80
81
Logger .getLogger ().d ("Loaded userId " + userId + " for session " + sessionId );
81
82
return userId ;
82
83
} catch (Exception e ) {
83
- Logger .getLogger ().e ("Error deserializing user metadata." , e );
84
+ Logger .getLogger ().w ("Error deserializing user metadata." , e );
85
+ safeDeleteCorruptFile (f );
84
86
} finally {
85
87
CommonUtils .closeOrLog (is , "Failed to close user metadata file." );
86
88
}
@@ -101,7 +103,8 @@ public void writeKeyData(String sessionId, Map<String, String> keyData, boolean
101
103
writer .write (keyDataString );
102
104
writer .flush ();
103
105
} catch (Exception e ) {
104
- Logger .getLogger ().e ("Error serializing key/value metadata." , e );
106
+ Logger .getLogger ().w ("Error serializing key/value metadata." , e );
107
+ safeDeleteCorruptFile (f );
105
108
} finally {
106
109
CommonUtils .closeOrLog (writer , "Failed to close key/value metadata file." );
107
110
}
@@ -115,6 +118,7 @@ Map<String, String> readKeyData(String sessionId, boolean isInternal) {
115
118
final File f =
116
119
isInternal ? getInternalKeysFileForSession (sessionId ) : getKeysFileForSession (sessionId );
117
120
if (!f .exists () || f .length () == 0 ) {
121
+ safeDeleteCorruptFile (f );
118
122
return Collections .emptyMap ();
119
123
}
120
124
@@ -123,7 +127,8 @@ Map<String, String> readKeyData(String sessionId, boolean isInternal) {
123
127
is = new FileInputStream (f );
124
128
return jsonToKeysData (CommonUtils .streamToString (is ));
125
129
} catch (Exception e ) {
126
- Logger .getLogger ().e ("Error deserializing user metadata." , e );
130
+ Logger .getLogger ().w ("Error deserializing user metadata." , e );
131
+ safeDeleteCorruptFile (f );
127
132
} finally {
128
133
CommonUtils .closeOrLog (is , "Failed to close user metadata file." );
129
134
}
@@ -177,4 +182,10 @@ private static String keysDataToJson(final Map<String, String> keyData) {
177
182
private static String valueOrNull (JSONObject json , String key ) {
178
183
return !json .isNull (key ) ? json .optString (key , null ) : null ;
179
184
}
185
+
186
+ private static void safeDeleteCorruptFile (File file ) {
187
+ if (file .exists () && file .delete ()) {
188
+ Logger .getLogger ().i ("Deleted corrupt file: " + file .getAbsolutePath ());
189
+ }
190
+ }
180
191
}
0 commit comments