Skip to content
This repository was archived by the owner on Dec 20, 2024. It is now read-only.

Commit dcc2013

Browse files
Oleg TarakanovOleg Tarakanov
authored andcommitted
fox deleting large columns in Fs store
1 parent f3d37c6 commit dcc2013

File tree

5 files changed

+19
-18
lines changed

5 files changed

+19
-18
lines changed

doradus-server/src/main/java/com/dell/doradus/service/db/fs/FsMemStore.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@
1010

1111
public class FsMemStore {
1212
private String m_name;
13-
private FsDataStore m_dataStore;
1413
private HashMap<BSTR, FsRow> m_rows = new HashMap<>();
1514

16-
public FsMemStore(String name, FsDataStore dataStore) {
15+
public FsMemStore(String name) {
1716
m_name = name;
18-
m_dataStore = dataStore;
1917
}
2018

2119
public String getName() { return m_name; }
@@ -27,7 +25,7 @@ public FsMemStore(String name, FsDataStore dataStore) {
2725
public FsRow getOrCreateRow(BSTR row) {
2826
FsRow r = m_rows.get(row);
2927
if(r == null) {
30-
r = new FsRow(row, m_dataStore);
28+
r = new FsRow(row);
3129
m_rows.put(row, r);
3230
}
3331
return r;

doradus-server/src/main/java/com/dell/doradus/service/db/fs/FsMemTable.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
public class FsMemTable {
1111
private FsMemStore m_memStore;
1212

13-
public FsMemTable(String store, FsDataStore dataStore) {
14-
m_memStore = new FsMemStore(store, dataStore);
13+
public FsMemTable(String store) {
14+
m_memStore = new FsMemStore(store);
1515
}
1616

1717
public void deleteRow(BSTR row) {

doradus-server/src/main/java/com/dell/doradus/service/db/fs/FsRow.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,13 @@
1010

1111
public class FsRow implements Comparable<FsRow> {
1212
private BSTR m_name;
13-
private FsDataStore m_dataStore;
1413
private HashMap<BSTR, FsColumn> m_columnsMap = new HashMap<>();
1514
private List<FsColumn> m_columnsList = new ArrayList<>();
1615
private boolean m_bSorted = true;
1716
private boolean m_bDeleted;
1817

19-
public FsRow(BSTR name, FsDataStore dataStore) {
18+
public FsRow(BSTR name) {
2019
m_name = name;
21-
m_dataStore = dataStore;
2220
}
2321

2422
public BSTR getName() { return m_name; }
@@ -81,9 +79,6 @@ public FsColumn createColumn(int operation, BSTR columnName, byte[] value) {
8179
m_columnsList.add(c);
8280
m_bSorted = false;
8381
} else {
84-
if(c.isExternalValue() && operation != FsMutation.UPDATE_LARGE_COLUMN) {
85-
m_dataStore.delete(m_name.toString(), columnName.toString());
86-
}
8782
c.set(operation, columnName, value);
8883
}
8984
return c;
@@ -94,7 +89,6 @@ public void deleteRow() {
9489
m_columnsList.clear();
9590
m_bSorted = true;
9691
m_bDeleted = true;
97-
m_dataStore.deleteRow(m_name.toString());
9892
}
9993

10094
public boolean isDeleted() { return m_bDeleted; }

doradus-server/src/main/java/com/dell/doradus/service/db/fs/FsStore.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public FsStore(File tenant, String storeName) {
3838
if(!m_root.exists()) m_root.mkdir();
3939
m_logFile = new File(m_root, "Log");
4040
m_dataStore = new FsDataStore(m_root);
41-
m_memTable = new FsMemTable(storeName, m_dataStore);
41+
m_memTable = new FsMemTable(storeName);
4242
for(File f: m_root.listFiles()) {
4343
if(f.getName().startsWith("table") && !f.getName().endsWith(".idx")) {
4444
m_tables.add(new FsTable(f, m_dataStore));
@@ -100,8 +100,18 @@ public void addMutations(Map<String, List<DColumn>> columnUpdates, Map<String, L
100100
if(m_logFile.length() > LOGFILE_THRESHOLD) {
101101
flushTable();
102102
}
103+
104+
//delete all files after we committed the transactions
105+
for(String row: columnDeletes.keySet()) {
106+
for(String columnName: columnDeletes.get(row)) {
107+
m_dataStore.delete(row, columnName);
108+
}
109+
}
110+
for(String row: rowDeletes) {
111+
m_dataStore.deleteRow(row);
112+
}
103113
}
104-
114+
105115
}catch(IOException e) {
106116
throw new RuntimeException(e);
107117
}
@@ -132,7 +142,7 @@ public void flushTable() throws IOException {
132142
index.write(indexFile);
133143
m_tables.add(new FsTable(tableFile, m_dataStore));
134144
m_logFile.delete();
135-
m_memTable = new FsMemTable(m_name, m_dataStore);
145+
m_memTable = new FsMemTable(m_name);
136146
m_log.info("Store {} flushed table in {}", m_name, t);
137147
}
138148

doradus-server/src/main/java/com/dell/doradus/service/db/fs/FsTable.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
public class FsTable {
1616
private FsTableIndex m_index;
1717
private File m_tableFile;
18-
private FsDataStore m_dataStore;
1918

2019
private List<FsColumn> m_lastRead;
2120
private long m_lastPosition = -1;
@@ -83,7 +82,7 @@ public void getColumns(BSTR rowKey, FsReadColumns columns, FsColumn startColumn,
8382

8483
public void getRows(Set<FsRow> rows, BSTR continuationToken) {
8584
for(FsTableIndex.Row row: m_index.getRows()) {
86-
FsRow fsr = new FsRow(row.getKey(), m_dataStore);
85+
FsRow fsr = new FsRow(row.getKey());
8786
if(row.isDeleted()) fsr.deleteRow();
8887
if(rows.contains(fsr)) continue;
8988
if(continuationToken != null && continuationToken.compareTo(fsr.getName()) >= 0) continue;

0 commit comments

Comments
 (0)