Presentation is loading. Please wait.

Presentation is loading. Please wait.

CIFS in Alfresco 4.0 Mark Rogers Senior Software Engineer, Alfresco.

Similar presentations


Presentation on theme: "CIFS in Alfresco 4.0 Mark Rogers Senior Software Engineer, Alfresco."— Presentation transcript:

1 CIFS in Alfresco 4.0 Mark Rogers Senior Software Engineer, Alfresco

2 Introduction

3 CIFS and Alfresco in 4.0 Overview Explain some of the issues in previous versions Present the options for changes How you configure shuffle scenarios Q & A Lunch!

4 CIFS and JLAN and Alfresco JLAN Alfresco DB Driver FTP NFS CIFS

5 CIFS and JLAN File State Cache Packet level metadata Last modified File size Locks Session Information Protocol Handler Alfresco CIFS File State Cache

6 CIFS v Alfresco CIFS File/Folder Hard coded metadata No Versioning Packet Level Protocol Create, Read, Write, Delete, Rename Many levels of locking Multiple separate operations. Body Level Two Body Level Three Body Level Four Alfresco Content and metadata Versioning Stream Based Optimistic locking Many associations Coarse transactions

7 CIFS Create Shuffle CIFS Operations File Exists File A

8 CIFS Create Shuffle CIFS Operations File Exists Create Temp File File A Temp File

9 CIFS Create Shuffle CIFS Operations File Exists Create Temp File Renamed File A Temp File Old File

10 CIFS Create Shuffle CIFS Operations File Exists Create Temp File Renamed Temp File moved into place File A Temp File Old File

11 CIFS Create Shuffle CIFS Operations File Exists Create Temp File Renamed Temp File moved into place Existing file deleted File A Temp File Old File

12 Issues

13 CIFS and Alfresco Issues Automated Testing Transaction boundary Scenario Handling Alfresco Clustering Error Handling Logging

14 Issues Automated testing Starting with Alfresco 3.4 there are an increasing set of tests for the Alfresco Content Disk Driver. Issues Automated Testing Clustering Transaction boundary Error Handling Logging Shuffle Scenarios

15 Issues Clustering Alfresco dependency upon file state cache reduced/removed. JLAN clustered file state cache. Fixed Node Monitor Issues Automated Testing Clustering Transaction boundary Error Handling Logging Shuffle Scenarios

16 Issues Transaction boundary Moved transaction boundary down to alfresco Removed all dependency on transactional data from the file state cache Issues Automated Testing Clustering Transaction boundary Error Handling Logging Shuffle Scenarios

17 Issues Error Handling Rework Issues Automated Testing Clustering Transaction boundary Error Handling Logging Shuffle Scenarios

18 Issues Logging “Alfresco style” log4j logging for Disk Driver and other alfresco code. Issues Automated Testing Clustering Transaction boundary Error Handling Logging Shuffle Scenarios

19 Issues Shuffle A new framework/engine for dealing with “shuffle scenarios” Remove all hard coded “shuffle logic Move all shuffle state out of the transactional layers. Issues Automated Testing Clustering Transaction boundary Error Handling Logging Shuffle Scenarios

20 CIFS Shuffles

21 CIFS Create Shuffle CIFS Operations File Exists Create Temp File Renamed Temp File moved into place Existing file deleted File A Temp File Old File

22 CIFS Rename Shuffle CIFS Operations File Exists Rename File Create New File Delete Temp File Scenario Fires File A File A ~

23 CIFS Shuffles Approaches The sausage machine The “watchers”

24 CIFS Shuffles Shuffle Simple operations such as “does file A exist” need to read the cached instructions in the pipeline in addition to getting the state from the repo… Data loss on crashing! The sausage machine CIFS Commands go into a pipeline and once we have a complete scenario we update the repo with a complete coarse grained transaction.

25 CIFS Shuffles Shuffle Scenarios compete At the end of each command alfresco is in a known persistent state. As and when scenarios fire they can “counter transact” previous behaviour. The watchers CIFS Commands go through a set of scenarios which say what to do. The highest priority scenario wins. The scenarios contain their own state. Many scenarios run at once

26 CIFS Create Shuffle CIFS Operations File Exists File A

27 CIFS Create Shuffle CIFS Operations File Exists Create Temp File File A Temp File

28 CIFS Create Shuffle CIFS Operations File Exists Create Temp File Rename Scenario Fires File A Temp File Old File 1.Copy Content 2.Rename temp file to Old File 3.Rename File A to Temp File

29 CIFS Create Shuffle CIFS Operations File Exists Create Temp File Rename Scenario Fires Temp File moved into place Existing file deleted File A Temp File Old File 1.Copy Content 2.Rename temp file 3.Rename File A

30 CIFS Create Shuffle CIFS Operations File Exists Create Temp File Rename Scenario Fires Temp File moved into place File A Temp File Old File

31 CIFS Create Shuffle CIFS Operations File Exists Create Temp File Rename Scenario Fires Temp File moved into place Old file deleted File A Old File

32 Architecture JLAN Buffered Content Disk Driver Non Transactional Disk Driver Content Disk Driver 2 Filesystem Command Executor Rule Evaluator Scenario

33 CIFS Shuffles Scenarios Scenario Create Scenario Rename Scenario Create Delete Rename Scenario Double Rename Scenario Open File Scenario Simple Non Buffered And others …

34 Configuration

35 Network-protocol-context.xml ^.*\.txt$.*(\\\..*\\)+.* 60000 HIGH [0-9A-F]{8}+$ 60000 HIGH ~WRD.*.TMP 60000 HIGH

36 Scenario Instance /** * A scenario is a factory for scenario instances. * */ public interface Scenario { /** * Create a new ScenarioInstance * * If the scenario is interested in the specified operation then * return a new scenario instance. * @param currentInstances the current instances of all scenarios. * @param operation the operation to be performed * @return the scenario instance or null if a new instance is not required. */ ScenarioInstance createInstance(EvaluatorContext ctx, Operation operation); }

37 Scenario /** * A scenario instance is an active scenario. It has a ranking, an * evaluate method and knows whether it is complete. * * The evaluate method is called repeatedly as operations are processed. */ public interface ScenarioInstance { /** * Get the Ranking * @return */ public Ranking getRanking(); /** * evaluate the scenario against the current operation * * @param operation */ public Command evaluate(Operation operation); /** * Is the scenario complete? * * @return */ public boolean isComplete(); }

38 Lunch !


Download ppt "CIFS in Alfresco 4.0 Mark Rogers Senior Software Engineer, Alfresco."

Similar presentations


Ads by Google