Skip to content

Commit

Permalink
Fixed bug cursor not closed
Browse files Browse the repository at this point in the history
  • Loading branch information
alanvan0502 authored and minbi committed Apr 3, 2019
1 parent 474ea01 commit be2e8a0
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -119,19 +119,28 @@ boolean deleteRecord(Long id) {
DeltaSyncRecord getRecordByID(long id) {
DeltaSyncRecord record = null;

Cursor cursor = database.query(AWSAppSyncDeltaSyncSqlHelper.TABLE_DELTA_SYNC,
allColumns, AWSAppSyncDeltaSyncSqlHelper.COLUMN_ID + " = ?",
new String[]{"" + id},
null,
null,
null);

if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) {
record.id = cursor.getLong(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_ID));
record.key = cursor.getString(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_DELTA_SYNC_KEY));
record.lastRunTimeInMilliSeconds = cursor.getLong(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_LAST_RUN_TIME));
Cursor cursor = null;

try {
cursor = database.query(AWSAppSyncDeltaSyncSqlHelper.TABLE_DELTA_SYNC,
allColumns, AWSAppSyncDeltaSyncSqlHelper.COLUMN_ID + " = ?",
new String[]{"" + id},
null,
null,
null);

if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) {
record.id = cursor.getLong(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_ID));
record.key = cursor.getString(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_DELTA_SYNC_KEY));
record.lastRunTimeInMilliSeconds = cursor.getLong(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_LAST_RUN_TIME));
}
} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}

}
cursor.close();

return record;
}

Expand All @@ -142,20 +151,28 @@ DeltaSyncRecord getRecordByID(long id) {
DeltaSyncRecord getRecordByKey(String key) {
DeltaSyncRecord record = null;

Cursor cursor = database.query(AWSAppSyncDeltaSyncSqlHelper.TABLE_DELTA_SYNC,
allColumns, AWSAppSyncDeltaSyncSqlHelper.COLUMN_DELTA_SYNC_KEY + " = ?",
new String[]{key},
null,
null,
null);

if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) {
record = new DeltaSyncRecord();
record.id = cursor.getLong(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_ID));
record.key = cursor.getString(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_DELTA_SYNC_KEY));
record.lastRunTimeInMilliSeconds = cursor.getLong(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_LAST_RUN_TIME));
Cursor cursor = null;

try {
cursor = database.query(AWSAppSyncDeltaSyncSqlHelper.TABLE_DELTA_SYNC,
allColumns, AWSAppSyncDeltaSyncSqlHelper.COLUMN_DELTA_SYNC_KEY + " = ?",
new String[]{key},
null,
null,
null);

if (cursor != null && cursor.getCount() > 0 && cursor.moveToNext()) {
record = new DeltaSyncRecord();
record.id = cursor.getLong(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_ID));
record.key = cursor.getString(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_DELTA_SYNC_KEY));
record.lastRunTimeInMilliSeconds = cursor.getLong(cursor.getColumnIndex(AWSAppSyncDeltaSyncSqlHelper.COLUMN_LAST_RUN_TIME));
}
} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}
cursor.close();

return record;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,39 +96,50 @@ boolean deleteRecord(String recordIdentifier) {

List<PersistentOfflineMutationObject> fetchAllRecords() {
LinkedList<PersistentOfflineMutationObject> mutationObjects = new LinkedList<>();
Cursor cursor = database.query(AppSyncMutationsSqlHelper.TABLE_MUTATION_RECORDS,
allColumns, null, null,
null, null, AppSyncMutationsSqlHelper.COLUMN_ID);
if (cursor == null || !cursor.moveToFirst()) {
return mutationObjects;
}

if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {
String recordIdentifier = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.RECORD_IDENTIFIER));
String record = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_RECORD));
String responseClass = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.RESPONSE_CLASS));
String clientState = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_CLIENT_STATE));
String bucket = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_BUCKET));
String key = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_KEY));
String region = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_REGION));
String localUri = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_LOCAL_URI));
String mimeType = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_MIME_TYPE));
PersistentOfflineMutationObject mutationObject = new PersistentOfflineMutationObject(recordIdentifier,
record,
responseClass,
clientState,
bucket,
key,
region,
localUri,
mimeType);
mutationObjects.add(mutationObject);
cursor.moveToNext();
Cursor cursor = null;

try {
cursor = database.query(AppSyncMutationsSqlHelper.TABLE_MUTATION_RECORDS,
allColumns, null, null,
null, null, AppSyncMutationsSqlHelper.COLUMN_ID);

if (cursor == null || !cursor.moveToFirst()) {
return mutationObjects;
}

if (cursor.moveToFirst()) {
while (!cursor.isAfterLast()) {

String recordIdentifier = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.RECORD_IDENTIFIER));
String record = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_RECORD));
String responseClass = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.RESPONSE_CLASS));
String clientState = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_CLIENT_STATE));
String bucket = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_BUCKET));
String key = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_KEY));
String region = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_REGION));
String localUri = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_LOCAL_URI));
String mimeType = cursor.getString(cursor.getColumnIndex(AppSyncMutationsSqlHelper.COLUMN_MIME_TYPE));
PersistentOfflineMutationObject mutationObject = new PersistentOfflineMutationObject(recordIdentifier,
record,
responseClass,
clientState,
bucket,
key,
region,
localUri,
mimeType);
mutationObjects.add(mutationObject);
cursor.moveToNext();
}
}

} finally {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
}

cursor.close();
return mutationObjects;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,14 +216,21 @@ Optional<Record> selectRecordForKey(String key) {
allColumns, AppSyncSqlHelper.COLUMN_KEY + " = ?", new String[]{key},
null, null, null);
if (cursor == null || !cursor.moveToFirst()) {
if (cursor != null && !cursor.isClosed()) {
cursor.close();
}
return Optional.absent();
}

try {
return Optional.of(cursorToRecord(cursor));
Record rec = cursorToRecord(cursor);
return Optional.of(rec);
} catch (IOException exception) {
return Optional.absent();
} finally {
cursor.close();
if (!cursor.isClosed()) {
cursor.close();
}
}
}

Expand Down

0 comments on commit be2e8a0

Please sign in to comment.