Skip to content

Commit 466f507

Browse files
Merge pull request #24 from yuriy-glotanov/2020.1beta
fix wrong rsync behaviour
2 parents 843b5a6 + 956b435 commit 466f507

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/main/java/su/interference/core/SyncFrame.java

+4
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ this software and associated documentation files (the "Software"), to deal in
2424

2525
package su.interference.core;
2626

27+
import org.slf4j.Logger;
28+
import org.slf4j.LoggerFactory;
2729
import su.interference.exception.InternalException;
2830
import su.interference.persistent.*;
2931

@@ -38,6 +40,7 @@ this software and associated documentation files (the "Software"), to deal in
3840

3941
public class SyncFrame implements Comparable, Serializable, AllowRPredicate {
4042

43+
private final static Logger logger = LoggerFactory.getLogger(SyncFrame.class);
4144
private final byte[] b;
4245
private final long frameId;
4346
private final long allocId;
@@ -64,6 +67,7 @@ public SyncFrame(Frame frame, Session s, FreeFrame fb) throws Exception {
6467
if (bd == null) {
6568
final FreeFrame fframe = Instance.getInstance().getFreeFrameById(frame.getPtr());
6669
if (fframe == null) {
70+
logger.error(frame.getClass().getSimpleName()+" does not match any system objects");
6771
throw new InternalException();
6872
}
6973
fframe.setPassed(1);

src/main/java/su/interference/transport/SyncFrameEvent.java

+18-2
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ public synchronized int rframe2(SyncFrame[] sb) throws Exception {
120120
//tframes.addAll(b.getTframes());
121121
}
122122
}
123-
llt.commit();
124123
//updateTransFrames(tframes, hmap2, s);
125124

126125
final Map<Long, List<Chunk>> umap = new ConcurrentHashMap<>();
@@ -188,6 +187,8 @@ public synchronized int rframe2(SyncFrame[] sb) throws Exception {
188187
//b.getBd().setFrame(null);
189188
}
190189

190+
List<SyncFrame> nframes = new ArrayList<>();
191+
List<SyncFrame> lframes = new ArrayList<>();
191192
for (SyncFrame b : sb) {
192193
try {
193194
if (b.isAllowR()) {
@@ -208,8 +209,14 @@ public synchronized int rframe2(SyncFrame[] sb) throws Exception {
208209
frame.setRes05(lcF);
209210
frame.setRes06(parentB);
210211
frame.setRes07(lcB);
211-
b.getDf().writeFrame(b.getBd(), b.getBd().getPtr(), frame.getFrame(), llt, s);
212+
//b.getDf().writeFrame(b.getBd(), b.getBd().getPtr(), frame.getFrame(), llt, s);
212213
b.getBd().setFrame(frame);
214+
if (b.getFrameType() == 1) {
215+
lframes.add(b);
216+
}
217+
if (b.getFrameType() == 2) {
218+
nframes.add(b);
219+
}
213220
logger.info("write index frame with allocId "+b.getAllocId()+" ptr "+b.getBd().getPtr());
214221
}
215222
}
@@ -220,6 +227,15 @@ public synchronized int rframe2(SyncFrame[] sb) throws Exception {
220227
//b.getBd().setFrame(null);
221228
}
222229

230+
for (SyncFrame b : lframes) {
231+
b.getDf().writeFrame(b.getBd(), b.getBd().getPtr(), b.getBd().getFrame().getFrame(), llt, s);
232+
}
233+
for (SyncFrame b : nframes) {
234+
b.getDf().writeFrame(b.getBd(), b.getBd().getPtr(), b.getBd().getFrame().getFrame(), llt, s);
235+
}
236+
237+
llt.commit();
238+
223239
final Map<Integer, List<FrameApi>> frames_ = new HashMap<>();
224240
for (SyncFrame f : sb) {
225241
if (frames_.get(f.getObjectId()) == null) {

0 commit comments

Comments
 (0)