1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.server.core.partition.impl.btree.jdbm;
21
22 import java.io.IOException;
23
24 import org.apache.directory.server.core.api.partition.PartitionWriteTxn;
25
26 import jdbm.RecordManager;
27 import jdbm.recman.BaseRecordManager;
28 import jdbm.recman.CacheRecordManager;
29
30
31
32
33
34
35 public class JdbmPartitionWriteTxn extends PartitionWriteTxn
36 {
37
38 private RecordManager recordManager;
39
40
41 private boolean syncOnWrite = false;
42
43
44
45
46
47
48
49 public JdbmPartitionWriteTxn( RecordManager recordManager, boolean syncOnWrite )
50 {
51 this.recordManager = recordManager;
52 this.syncOnWrite = syncOnWrite;
53 }
54
55
56
57
58
59 @Override
60 public void commit() throws IOException
61 {
62 recordManager.commit();
63
64
65 BaseRecordManager baseRecordManager = null;
66
67 if ( recordManager instanceof CacheRecordManager )
68 {
69 baseRecordManager = ( ( BaseRecordManager ) ( ( CacheRecordManager ) recordManager ).getRecordManager() );
70 }
71 else
72 {
73 baseRecordManager = ( ( BaseRecordManager ) recordManager );
74 }
75
76
77 if ( syncOnWrite )
78 {
79 baseRecordManager.getTransactionManager().synchronizeLog();
80 }
81 }
82
83
84
85
86
87 @Override
88 public void abort() throws IOException
89 {
90 recordManager.rollback();
91 }
92
93
94
95
96
97 @Override
98 public boolean isClosed()
99 {
100 return false;
101 }
102
103
104
105
106
107 @Override
108 public void close() throws IOException
109 {
110 commit();
111 }
112 }