public Snapshot createSnapshot(String header, int bufferSize, int perFileSize) { SnapshotRule rule = selectRule(properties.getRule(), new Quota(bufferSize, perFileSize)); SnapshotHeader sHeader = new SnapshotHeader(properties.getDir(), header); return new Snapshot(sHeader, rule); }
public SnapshotConfiguration(SnapshotProperties properties) { this.factory = new SnapshotFactory(properties); }
@Bean public Snapshot snapshot() { SnapshotProperties properties = factory.getProperties(); return factory.createSnapshot(properties.getBufferSize(), properties.getPerFileSize()); }
@Benchmark public void writeSnapshot() { SnapshotHeader header = new SnapshotHeader("/data/hulk", "snapshot.test.log"); SnapshotRule rule = new IncrementShardingRule(new Quota(10 * 1024, 1000)); Snapshot snapshot = new Snapshot(header, rule); snapshot.write(new OrderEntry("12345")); }
public boolean write(Object data) { FastFile ff = null; try { File file = rule.run(header); ff = new FastFile(file, "rw", rule.getQuota().getBufferSize()); KryoSerializer serializer = new KryoSerializer(); ff.write(serializer.serialize(data)); return true; } catch (Exception ex) { throw ex; } finally { ff.close(); } }
public <T> List<T> read(File file, Class<T> targetClass) throws Exception { FastFile ff = null; try { ff = new FastFile(file, "r", rule.getQuota().getBufferSize()); return ff.read(new KryoSerializer(), targetClass); } catch (Exception ex) { throw ex; } finally { ff.close(); } }
@Override public File run(SnapshotHeader header) { File snapshotFile = new File(header.getDir(), header.getFileName() + "." + AutoIncrementGenerator.getCurrentValue()); if (snapshotFile.length() >= (quota.getBufferSize() * quota.getPerFileSize())) { AutoIncrementGenerator.getFactor().increment(); AutoIncrementGenerator.setCurrentValue(AutoIncrementGenerator.getFactor().intValue()); snapshotFile = new File(header.getDir(), header.getFileName() + "." + AutoIncrementGenerator.getFactor()); } return snapshotFile; }
File logFileWriteDir = new File(HulkResourceManager.getSnapShot().getHeader().getDir()); File[] logFiles = logFileWriteDir.listFiles(); BusinessActivityLogger bal = BusinessActivityLoggerFactory.getStorage(properties); logger.info("Scanning File: {}", f.getName()); runFile = f; List<HulkContext> datas = HulkResourceManager.getSnapShot().read(f, HulkContext.class); if (datas != null) { if (bal.write(datas)) {
private synchronized Snapshot getCurrentSnapshot() { String[] transaction = ctx.getRc().getActivity().getId().formatString().split("_"); SnapshotHeader header = HulkResourceManager.getSnapShot().getHeader(); header.setFileName(Constants.TX_LOG_FILE_PREFIX + "." + transaction[0] + "_" + transaction[1]); return HulkResourceManager.getSnapShot(); }
/** * 异步记录事务日志 */ @Override public void run() { logger.info("Writing Transaction Snapshot......"); Snapshot logSnapshot = null; synchronized (writeSnapshotLock) { logSnapshot = getCurrentSnapshot(); } try { ctx.getRc().setException(new HulkException()); logSnapshot.write(ctx); logger.info("Writing Transaction Snapshot End!"); } catch (Exception e) { logger.error("Hulk Log Write Exception", e); } }
public Snapshot createSnapshot(int bufferSize, int perFileSize) { SnapshotRule rule = selectRule(properties.getRule(), new Quota(bufferSize, perFileSize)); return new Snapshot(new SnapshotHeader(properties.getDir()), rule); }