SlideShare una empresa de Scribd logo
1 de 46
The Art of the Upgrade
Kyle Adams
Solutions Engineer at Alfresco
@kylefadams

#SummitNow
Objectives
• Arm you with the strategy and tactics to
perform a successful upgrade of the core
Alfresco repository.

#SummitNow
#SummitNow
Strategy and Tactics
"Strategy without tactics is the slowest route
to victory.”
“Tactics without strategy is the noise before
defeat.”
– Sun Tzu, The Art of War

#SummitNow
#SummitNow
Strategy and Tactics
“...tactics are the actual means used to gain
an objective, while strategy is the overall
campaign plan…”
[1]

[1] http://en.wikipedia.org/wiki/Tactic_(method)

#SummitNow
#SummitNow
Upgrade Strategy
Strategy: Accurately predict how my Alfresco instance
will behave throughout the upgrade process.
Tactic:
Validate
Tactic:
Monitor

Tactic:
Execute
Tactic:
Prepare
#SummitNow
#SummitNow
Upgrade Strategy
Strategy: Accurately predict how my Alfresco instance
will behave throughout the upgrade process.
Tactic:
Validate
Tactic:
Monitor

80% of Work

Tactic:
Execute

Tactic:
Prepare
#SummitNow
#SummitNow
Prepare
"To ... not prepare is the greatest of crimes;
to be prepared beforehand for any
contingency is the greatest of virtues.”
[1]

[1] Sun Tzu, The Art of War

#SummitNow
#SummitNow
Prepare – Current State
•
•
•
•
•
•
•

Count of all database tables
Size and number of files in content store
Size of lucene or Solr indexes
Custom Content Models
Custom Process definitions
Installed modules
Customizations
#SummitNow
#SummitNow
Prepare – Upgrade Path
•

http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/concepts/up
grade-path.html

#SummitNow
#SummitNow
Prepare – Backup/Restore
• Backup Prod Database
• Restore into new instance
• Backup Prod lucene/solr indices
• Restore into new instance
• Backup Prod ContentStore
• Restore into new instance

#SummitNow
#SummitNow
Prepare – Backup/Restore
• Backup Prod ContentStore
• What if your ContentStore is too large to
restoring into a lower environment for
testing?

#SummitNow
#SummitNow
Prepare – Backup/Restore
• No excuse!
• We can mock up the ContentStore
against the database using small sample
files.
• https://github.com/kylefernandadams/alfre
sco-mock-content-generator
• CAUTION: Only use this for testing
purposes.
#SummitNow
#SummitNow
Prepare – Alfresco Instances
• Install an out-of-the-box Alfresco instance for
each upgrade segment
• Current Version: 3.3.4
• Target Version: 4.2.0
• Path: 3.3.4 -> 3.3.5 -> 4.2.0
• Don’t forget to request license files for each
minor version from Alfresco support!
• Point each instance to common content store,
database, and indices.
#SummitNow
• Do not perform an in-place upgrade!
#SummitNow
Prepare – Alfresco Instances
• Do not perform an in-place upgrade!

#SummitNow
#SummitNow
Prepare – Patches
• Know exactly which patches will run
during each segment of the upgrade.
• alfresco/WEBINF/classes/alfresco/patch/patchservices-context.xml
• Patch Java
docs:http://dev.alfresco.com/resource/docs/java/reposi
tory/org/alfresco/repo/admin/patch/impl/packagesummary.html
#SummitNow
#SummitNow
Prepare – Patches
• Still unsure?
• Perform a dry run of the upgrade with
OOTB installation.
• Set logging to debug for the following
packages
• org.alfresco.repo.admin.patch
• org.alfresco.repo.domain.patch
• Review the logging output
#SummitNow
#SummitNow
Prepare – Customizations
• Only include bare minimum extensions
and overrides (Example: content model)
• Restore a Prod backup into the
extensionRoot

#SummitNow
#SummitNow
Prepare – Tools for Monitoring
•
•
•

Logs
• tail, text editor, Splunk
JVM
• YourKit, JProfiler
DB Queries
• Vendor-specific tools (MySQL Workbench, SQL
Developer, PgAdmin, SQL Server Mgmt Studio)
• Quickly toggle log4j logging for java.sql.*

#SummitNow
#SummitNow
Prepare – Tools for Monitoring
• Hardware & OS (CPU, Memory, Disk, etc)
• top, nmon, ProcessExplorer

#SummitNow
#SummitNow
Upgrade Strategy
Strategy: Accurately predict how my Alfresco instance
will behave throughout the upgrade process.
Tactic:
Validate
Tactic:
Monitor

Tactic:
Execute
Tactic:
Prepare
#SummitNow
#SummitNow
Execute
• Validate your newly restored instance is
working as expected.
• Example: 3.3.4
• Shutdown the instance
• Startup the instance for the first segment
of the upgrade.
• Example: 3.3.4 -> 3.3.5
#SummitNow
#SummitNow
Upgrade Strategy
Strategy: Accurately predict how my Alfresco instance
will behave throughout the upgrade process.
Tactic:
Validate
Tactic:
Monitor

Tactic:
Execute
Tactic:
Prepare
#SummitNow
#SummitNow
Monitor - Logs
• Based on logging output from your dry
run, you should be able to determine the
overall progress of your upgrade.
• What if the logging output appears to be
stalled?

#SummitNow
#SummitNow
Monitor - Logs
• Stalled?

#SummitNow
#SummitNow
Monitor - JVM
• Leverage a Java profiling tool such as
YourKit
• YourKit will tell you exactly which
class and methods are being called.
• What if it appears that the upgrade has
stalled on a given method call?

#SummitNow
#SummitNow
Monitor – JVM
• Still Stalled???

#SummitNow
#SummitNow
Monitor – SQL Queries
• Use your DB vendor-specific tools to monitor
the queries being executed
• Don’t have MySQL Workbench, SQL Developer,
PgAdmin, or SQL Server Mgmt Studio?
• Quickly toggle log4j logger for java.sql.*
• You must add java.sql to customlog4j.properties

#SummitNow
#SummitNow
Upgrade Strategy
Strategy: Accurately predict how my Alfresco instance
will behave throughout the upgrade process.
Tactic:
Validate
Tactic:
Monitor

Tactic:
Execute
Tactic:
Prepare
#SummitNow
#SummitNow
Validate – Smoke Tests
• Test basic Alfresco functionality.
• Test one or more of your major use cases.
• For the latest 4.x versions, leverage
WebDrone.

#SummitNow
#SummitNow
Upgrade Strategy
Strategy: Accurately predict how my Alfresco instance
will behave throughout the upgrade process.
Tactic:
Validate

Repeat for
each segment

Tactic:
Monitor

Tactic:
Execute
Tactic:
Prepare
#SummitNow
#SummitNow
Gotchas – Cyclical ACL’s
• FixAclInheritancePatch could fail with
StackOverflowException during 3.4
upgrade.
• Added cyclical ACL detection in 3.4.13
• Jira: MNT-2580

#SummitNow
#SummitNow
Gotchas – Orphaned Nodes
• Orphaned Nodes and Associations to
deleted nodes
• Reindex could fail with
“InvalidNodeRefException: Node does not
exist”

#SummitNow
#SummitNow
Gotchas – Orphaned Nodes
• Find orphaned nodes:
SELECT n.*
FROM alf_node n, alf_qname q, alf_namespace ns
where q.id = n.type_qname_id
and ns.id = q.ns_id
and not (ns.uri = 'http://www.alfresco.org/model/system/1.0' AND q.local_name =
'deleted')
AND NOT EXISTS
(SELECT 1 FROM alf_store where root_node_id = n.id)
AND NOT EXISTS
(SELECT 1 FROM alf_child_assoc where child_node_id = n.id)

#SummitNow
#SummitNow
Gotchas – Orphaned Nodes
• Find associations to deleted nodes:
SELECT a.*
FROM alf_child_assoc a, alf_node n, alf_qname q, alf_namespace ns
where (n.id = a.child_node_id or n.id = a.parent_node_id)
and q.id = n.type_qname_id
and ns.id = q.ns_id
and ns.uri = 'http://www.alfresco.org/model/system/1.0' AND q.local_name =
'deleted'

#SummitNow
#SummitNow
Gotchas – Orphaned Nodes
• CAUTION: Do not attempt to fix these by
hacking the database!
• Detection and fix via Java has been
added as of 4.1.4
• Jira: MNT-8531

#SummitNow
#SummitNow
Gotchas – Nodes without Txn’s
• May cause schema updates to fail with
*ContraintViolationExceptions.

#SummitNow
#SummitNow
Gotchas – Nodes without Txn’s
• Find nodes without transactions:
SELECT *
FROM alf_node node
WHERE node.transaction_id
NOT IN (
SELECT id FROM alf_transaction
);

#SummitNow
#SummitNow
Gotchas – Nodes without Txn’s
• CAUTION: Do not alter the database
without the consent or the assistance of
Alfresco Support or Alfresco Consulting.
• Fix:
UPDATE alf_node set transaction_id = (SELECT MIN(id) from
alf_transaction)
WHERE transaction_id NOT IN (SELECT id FROM
alf_transaction);

#SummitNow
#SummitNow
Gotchas – Long-running
Patches

• MigrateVersionStorePatch (2.x  3.x)
• Run asynchronously as a scheduled job
#
Never:
* * * * * ? 2099
#
Once every thirty minutes: 0 0/30 * * * ?
version.store.migrateVersionStore.cronExpression=* * * * * ? 2099
# Limit number of version histories to migrate per job cycle, where -1 =
unlimited. Note: if limit > 0 then need to schedule job to run regularly in order to
complete the migration.
version.store.migrateVersionStore.limitPerJobCycle=-1
version.store.migrateVersionStore.runAsScheduledJob=false

#SummitNow
#SummitNow
Gotchas – Long-running
Patches

• ContentUrlConverterPatch (...  3.2.x)
• Run asynchronously as a scheduled job
#
Never:
* * * * * ? 2099
#
Once every thirty minutes: 0 0/30 * * * ?
system.content.contentUrlConverter.cronExpression=* * * * * ? 2099
system.content.contentUrlConverter.threadCount=2
system.content.contentUrlConverter.batchSize=500
system.content.contentUrlConverter.runAsScheduledJob=false

#SummitNow
#SummitNow
Gotchas – Long-running
Patches

• NodeDeleted.sql (…  4.1.x)
• Renames alf_node to t_alf_node
• Recreate the alf_node table without the
node_deleted column
• Insert all rows from t_alf_node into
alf_node
• Drop the temporary t_alf_node table
#SummitNow
#SummitNow
Gotchas – Database Statistics
• Don’t forget to recompute your database
statistics!
• Without histograms if you’re using
Oracle

#SummitNow
#SummitNow
Summary
• Be meticulous!
• Have attention to detail!
• Leave nothing up to mystery!
• There should be no surprises.
• “Know thy self, know thy enemy. A
thousand battles, a thousand victories”

•

[1] Sun Tzu, The Art of War

[1]

#SummitNow
#SummitNow
Summary
• “The supreme art of war is to subdue the
enemy without fighting.”
[1]

•

[1] Sun Tzu – The Art of War

#SummitNow
#SummitNow
Contact Information
•
•
•
•

Kyle Adams
Solutions Engineer at Alfresco
Email: kyle.adams@alfresco.com
Twitter: @kylefadams

#SummitNow
#SummitNow
#SummitNow

Más contenido relacionado

La actualidad más candente

Continuous Integration Testing Techniques to Improve Chef Cookbook Quality
Continuous Integration Testing Techniques to Improve Chef Cookbook QualityContinuous Integration Testing Techniques to Improve Chef Cookbook Quality
Continuous Integration Testing Techniques to Improve Chef Cookbook QualityJosiah Renaudin
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformTechsophy Inc.
 
Puppet in the Pipeline
Puppet in the PipelinePuppet in the Pipeline
Puppet in the PipelineAnna Kennedy
 
Effective Testing with Ansible and InSpec
Effective Testing with Ansible and InSpecEffective Testing with Ansible and InSpec
Effective Testing with Ansible and InSpecNathen Harvey
 
Prescriptive System Security with InSpec
Prescriptive System Security with InSpecPrescriptive System Security with InSpec
Prescriptive System Security with InSpecAll Things Open
 
40 square's git workflow
40 square's git workflow40 square's git workflow
40 square's git workflowRuben Tan
 
Introduction to Test Kitchen and InSpec
Introduction to Test Kitchen and InSpecIntroduction to Test Kitchen and InSpec
Introduction to Test Kitchen and InSpecNathen Harvey
 
Continuous delivery continuous integration 0.3
Continuous delivery continuous integration 0.3Continuous delivery continuous integration 0.3
Continuous delivery continuous integration 0.3Alex Tregubov
 
Setting advanced PHP development environment
Setting advanced PHP development environmentSetting advanced PHP development environment
Setting advanced PHP development environmentKapil Sharma
 
Introduction to Automated Deployments with Ansible
Introduction to Automated Deployments with AnsibleIntroduction to Automated Deployments with Ansible
Introduction to Automated Deployments with AnsibleMartin Etmajer
 
Distributed and Scalable JMeter
Distributed and Scalable JMeterDistributed and Scalable JMeter
Distributed and Scalable JMeterHepsiburada
 
Making the Agile Leap to Continuous Deployment
Making the Agile Leap to Continuous DeploymentMaking the Agile Leap to Continuous Deployment
Making the Agile Leap to Continuous DeploymentEthan Ram
 
Introduction to Test Kitchen
Introduction to Test KitchenIntroduction to Test Kitchen
Introduction to Test KitchenNathen Harvey
 
Executing.Bpmn.Eclipscon.2009
Executing.Bpmn.Eclipscon.2009Executing.Bpmn.Eclipscon.2009
Executing.Bpmn.Eclipscon.2009koentsje
 
Role of Pipelines in Continuous Delivery
Role of Pipelines in Continuous DeliveryRole of Pipelines in Continuous Delivery
Role of Pipelines in Continuous DeliveryMandi Walls
 
Perforce's Rich Client Framework
Perforce's Rich Client Framework  Perforce's Rich Client Framework
Perforce's Rich Client Framework Perforce
 
(R)Evolutionize APM - APM in Continuous Delivery and DevOps
(R)Evolutionize APM - APM in Continuous Delivery and DevOps(R)Evolutionize APM - APM in Continuous Delivery and DevOps
(R)Evolutionize APM - APM in Continuous Delivery and DevOpsMartin Etmajer
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD OverviewAn Nguyen
 
Perl Development Environment Tooling
Perl Development Environment ToolingPerl Development Environment Tooling
Perl Development Environment ToolingJason Crome
 

La actualidad más candente (20)

Continuous Integration Testing Techniques to Improve Chef Cookbook Quality
Continuous Integration Testing Techniques to Improve Chef Cookbook QualityContinuous Integration Testing Techniques to Improve Chef Cookbook Quality
Continuous Integration Testing Techniques to Improve Chef Cookbook Quality
 
Continuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 PlatformContinuous Integration for Salesforce1 Platform
Continuous Integration for Salesforce1 Platform
 
Puppet in the Pipeline
Puppet in the PipelinePuppet in the Pipeline
Puppet in the Pipeline
 
Effective Testing with Ansible and InSpec
Effective Testing with Ansible and InSpecEffective Testing with Ansible and InSpec
Effective Testing with Ansible and InSpec
 
Prescriptive System Security with InSpec
Prescriptive System Security with InSpecPrescriptive System Security with InSpec
Prescriptive System Security with InSpec
 
40 square's git workflow
40 square's git workflow40 square's git workflow
40 square's git workflow
 
Introduction to Test Kitchen and InSpec
Introduction to Test Kitchen and InSpecIntroduction to Test Kitchen and InSpec
Introduction to Test Kitchen and InSpec
 
Continuous delivery continuous integration 0.3
Continuous delivery continuous integration 0.3Continuous delivery continuous integration 0.3
Continuous delivery continuous integration 0.3
 
Setting advanced PHP development environment
Setting advanced PHP development environmentSetting advanced PHP development environment
Setting advanced PHP development environment
 
Introduction to Automated Deployments with Ansible
Introduction to Automated Deployments with AnsibleIntroduction to Automated Deployments with Ansible
Introduction to Automated Deployments with Ansible
 
Distributed and Scalable JMeter
Distributed and Scalable JMeterDistributed and Scalable JMeter
Distributed and Scalable JMeter
 
Making the Agile Leap to Continuous Deployment
Making the Agile Leap to Continuous DeploymentMaking the Agile Leap to Continuous Deployment
Making the Agile Leap to Continuous Deployment
 
Introduction to Test Kitchen
Introduction to Test KitchenIntroduction to Test Kitchen
Introduction to Test Kitchen
 
Executing.Bpmn.Eclipscon.2009
Executing.Bpmn.Eclipscon.2009Executing.Bpmn.Eclipscon.2009
Executing.Bpmn.Eclipscon.2009
 
Role of Pipelines in Continuous Delivery
Role of Pipelines in Continuous DeliveryRole of Pipelines in Continuous Delivery
Role of Pipelines in Continuous Delivery
 
Perforce's Rich Client Framework
Perforce's Rich Client Framework  Perforce's Rich Client Framework
Perforce's Rich Client Framework
 
(R)Evolutionize APM - APM in Continuous Delivery and DevOps
(R)Evolutionize APM - APM in Continuous Delivery and DevOps(R)Evolutionize APM - APM in Continuous Delivery and DevOps
(R)Evolutionize APM - APM in Continuous Delivery and DevOps
 
CI/CD Overview
CI/CD OverviewCI/CD Overview
CI/CD Overview
 
Perl Development Environment Tooling
Perl Development Environment ToolingPerl Development Environment Tooling
Perl Development Environment Tooling
 
Introduction to Go
Introduction to GoIntroduction to Go
Introduction to Go
 

Destacado

The CHANGE – TEST – UPGRADE Advantage
The CHANGE – TEST – UPGRADE AdvantageThe CHANGE – TEST – UPGRADE Advantage
The CHANGE – TEST – UPGRADE Advantageeprentise
 
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBA
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBADatabase Migration using Oracle SQL Developer: DBA Stuff for the Non-DBA
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBADanny Bryant
 
Introduction to beam division
Introduction to beam divisionIntroduction to beam division
Introduction to beam divisionMorg
 
Software test management overview for managers
Software test management overview for managersSoftware test management overview for managers
Software test management overview for managersTJamesLeDoux
 
Plan, prepare & overall process of upgrade and migrate to SharePoint 2013
Plan, prepare & overall process of upgrade and migrate to SharePoint 2013Plan, prepare & overall process of upgrade and migrate to SharePoint 2013
Plan, prepare & overall process of upgrade and migrate to SharePoint 2013Kashish Sukhija
 
hardware and software upgrade
hardware and software upgradehardware and software upgrade
hardware and software upgradeDana Popescu
 
Test Management introduction
Test Management introductionTest Management introduction
Test Management introductionOana Feidi
 

Destacado (8)

Upgrade strategy
Upgrade strategyUpgrade strategy
Upgrade strategy
 
The CHANGE – TEST – UPGRADE Advantage
The CHANGE – TEST – UPGRADE AdvantageThe CHANGE – TEST – UPGRADE Advantage
The CHANGE – TEST – UPGRADE Advantage
 
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBA
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBADatabase Migration using Oracle SQL Developer: DBA Stuff for the Non-DBA
Database Migration using Oracle SQL Developer: DBA Stuff for the Non-DBA
 
Introduction to beam division
Introduction to beam divisionIntroduction to beam division
Introduction to beam division
 
Software test management overview for managers
Software test management overview for managersSoftware test management overview for managers
Software test management overview for managers
 
Plan, prepare & overall process of upgrade and migrate to SharePoint 2013
Plan, prepare & overall process of upgrade and migrate to SharePoint 2013Plan, prepare & overall process of upgrade and migrate to SharePoint 2013
Plan, prepare & overall process of upgrade and migrate to SharePoint 2013
 
hardware and software upgrade
hardware and software upgradehardware and software upgrade
hardware and software upgrade
 
Test Management introduction
Test Management introductionTest Management introduction
Test Management introduction
 

Similar a Alfresco Summit 2013 - The Art of the Upgrade

Best practices for implementing CI/CD on Salesforce
Best practices for implementing CI/CD on SalesforceBest practices for implementing CI/CD on Salesforce
Best practices for implementing CI/CD on SalesforceAIMDek Technologies
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APIVictorSzoltysek
 
PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux Neotys
 
Adrian marinica continuous integration in the visual studio world
Adrian marinica   continuous integration in the visual studio worldAdrian marinica   continuous integration in the visual studio world
Adrian marinica continuous integration in the visual studio worldCodecamp Romania
 
Continuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyContinuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyRightScale
 
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterTaking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterMatt Tesauro
 
AWS Loft Talk: Behind the Scenes with SignalFx
AWS Loft Talk: Behind the Scenes with SignalFxAWS Loft Talk: Behind the Scenes with SignalFx
AWS Loft Talk: Behind the Scenes with SignalFxSignalFx
 
Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Matt Tesauro
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)CIVEL Benoit
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1CIVEL Benoit
 
10 things you need to know to deliver a successful Alfresco project
10 things you need to know to deliver a successful Alfresco project10 things you need to know to deliver a successful Alfresco project
10 things you need to know to deliver a successful Alfresco projectSymphony Software Foundation
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOpsEklove Mohan
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java binOlve Hansen
 
Salt conf 2014 - Using SaltStack in high availability environments
Salt conf 2014 - Using SaltStack in high availability environmentsSalt conf 2014 - Using SaltStack in high availability environments
Salt conf 2014 - Using SaltStack in high availability environmentsBenjamin Cane
 
Continuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinContinuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinDiego Garber
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Lean IT Consulting
 
Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"Fwdays
 
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...VMworld
 
Prescriptive Security with InSpec - All Things Open 2019
Prescriptive Security with InSpec - All Things Open 2019Prescriptive Security with InSpec - All Things Open 2019
Prescriptive Security with InSpec - All Things Open 2019Mandi Walls
 

Similar a Alfresco Summit 2013 - The Art of the Upgrade (20)

Best practices for implementing CI/CD on Salesforce
Best practices for implementing CI/CD on SalesforceBest practices for implementing CI/CD on Salesforce
Best practices for implementing CI/CD on Salesforce
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
 
PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux PAC 2019 virtual Bruno Audoux
PAC 2019 virtual Bruno Audoux
 
Adrian marinica continuous integration in the visual studio world
Adrian marinica   continuous integration in the visual studio worldAdrian marinica   continuous integration in the visual studio world
Adrian marinica continuous integration in the visual studio world
 
Continuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases WeeklyContinuous Delivery: How RightScale Releases Weekly
Continuous Delivery: How RightScale Releases Weekly
 
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things BetterTaking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
Taking AppSec to 11: AppSec Pipeline, DevOps and Making Things Better
 
AWS Loft Talk: Behind the Scenes with SignalFx
AWS Loft Talk: Behind the Scenes with SignalFxAWS Loft Talk: Behind the Scenes with SignalFx
AWS Loft Talk: Behind the Scenes with SignalFx
 
Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016Taking AppSec to 11 - BSides Austin 2016
Taking AppSec to 11 - BSides Austin 2016
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
10 things you need to know to deliver a successful Alfresco project
10 things you need to know to deliver a successful Alfresco project10 things you need to know to deliver a successful Alfresco project
10 things you need to know to deliver a successful Alfresco project
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Docker presentasjon java bin
Docker presentasjon java binDocker presentasjon java bin
Docker presentasjon java bin
 
Salt conf 2014 - Using SaltStack in high availability environments
Salt conf 2014 - Using SaltStack in high availability environmentsSalt conf 2014 - Using SaltStack in high availability environments
Salt conf 2014 - Using SaltStack in high availability environments
 
Continuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 MedellinContinuous Delivery Agiles 2014 Medellin
Continuous Delivery Agiles 2014 Medellin
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"Alexey Kupriyanenko "Release Early, Often, Stable"
Alexey Kupriyanenko "Release Early, Often, Stable"
 
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
VMworld Europe 2014: Taking Reporting and Command Line Automation to the Next...
 
Prescriptive Security with InSpec - All Things Open 2019
Prescriptive Security with InSpec - All Things Open 2019Prescriptive Security with InSpec - All Things Open 2019
Prescriptive Security with InSpec - All Things Open 2019
 

Último

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

Alfresco Summit 2013 - The Art of the Upgrade

  • 1. The Art of the Upgrade Kyle Adams Solutions Engineer at Alfresco @kylefadams #SummitNow
  • 2. Objectives • Arm you with the strategy and tactics to perform a successful upgrade of the core Alfresco repository. #SummitNow #SummitNow
  • 3. Strategy and Tactics "Strategy without tactics is the slowest route to victory.” “Tactics without strategy is the noise before defeat.” – Sun Tzu, The Art of War #SummitNow #SummitNow
  • 4. Strategy and Tactics “...tactics are the actual means used to gain an objective, while strategy is the overall campaign plan…” [1] [1] http://en.wikipedia.org/wiki/Tactic_(method) #SummitNow #SummitNow
  • 5. Upgrade Strategy Strategy: Accurately predict how my Alfresco instance will behave throughout the upgrade process. Tactic: Validate Tactic: Monitor Tactic: Execute Tactic: Prepare #SummitNow #SummitNow
  • 6. Upgrade Strategy Strategy: Accurately predict how my Alfresco instance will behave throughout the upgrade process. Tactic: Validate Tactic: Monitor 80% of Work Tactic: Execute Tactic: Prepare #SummitNow #SummitNow
  • 7. Prepare "To ... not prepare is the greatest of crimes; to be prepared beforehand for any contingency is the greatest of virtues.” [1] [1] Sun Tzu, The Art of War #SummitNow #SummitNow
  • 8. Prepare – Current State • • • • • • • Count of all database tables Size and number of files in content store Size of lucene or Solr indexes Custom Content Models Custom Process definitions Installed modules Customizations #SummitNow #SummitNow
  • 9. Prepare – Upgrade Path • http://docs.alfresco.com/4.2/topic/com.alfresco.enterprise.doc/concepts/up grade-path.html #SummitNow #SummitNow
  • 10. Prepare – Backup/Restore • Backup Prod Database • Restore into new instance • Backup Prod lucene/solr indices • Restore into new instance • Backup Prod ContentStore • Restore into new instance #SummitNow #SummitNow
  • 11. Prepare – Backup/Restore • Backup Prod ContentStore • What if your ContentStore is too large to restoring into a lower environment for testing? #SummitNow #SummitNow
  • 12. Prepare – Backup/Restore • No excuse! • We can mock up the ContentStore against the database using small sample files. • https://github.com/kylefernandadams/alfre sco-mock-content-generator • CAUTION: Only use this for testing purposes. #SummitNow #SummitNow
  • 13. Prepare – Alfresco Instances • Install an out-of-the-box Alfresco instance for each upgrade segment • Current Version: 3.3.4 • Target Version: 4.2.0 • Path: 3.3.4 -> 3.3.5 -> 4.2.0 • Don’t forget to request license files for each minor version from Alfresco support! • Point each instance to common content store, database, and indices. #SummitNow • Do not perform an in-place upgrade! #SummitNow
  • 14. Prepare – Alfresco Instances • Do not perform an in-place upgrade! #SummitNow #SummitNow
  • 15. Prepare – Patches • Know exactly which patches will run during each segment of the upgrade. • alfresco/WEBINF/classes/alfresco/patch/patchservices-context.xml • Patch Java docs:http://dev.alfresco.com/resource/docs/java/reposi tory/org/alfresco/repo/admin/patch/impl/packagesummary.html #SummitNow #SummitNow
  • 16. Prepare – Patches • Still unsure? • Perform a dry run of the upgrade with OOTB installation. • Set logging to debug for the following packages • org.alfresco.repo.admin.patch • org.alfresco.repo.domain.patch • Review the logging output #SummitNow #SummitNow
  • 17. Prepare – Customizations • Only include bare minimum extensions and overrides (Example: content model) • Restore a Prod backup into the extensionRoot #SummitNow #SummitNow
  • 18. Prepare – Tools for Monitoring • • • Logs • tail, text editor, Splunk JVM • YourKit, JProfiler DB Queries • Vendor-specific tools (MySQL Workbench, SQL Developer, PgAdmin, SQL Server Mgmt Studio) • Quickly toggle log4j logging for java.sql.* #SummitNow #SummitNow
  • 19. Prepare – Tools for Monitoring • Hardware & OS (CPU, Memory, Disk, etc) • top, nmon, ProcessExplorer #SummitNow #SummitNow
  • 20. Upgrade Strategy Strategy: Accurately predict how my Alfresco instance will behave throughout the upgrade process. Tactic: Validate Tactic: Monitor Tactic: Execute Tactic: Prepare #SummitNow #SummitNow
  • 21. Execute • Validate your newly restored instance is working as expected. • Example: 3.3.4 • Shutdown the instance • Startup the instance for the first segment of the upgrade. • Example: 3.3.4 -> 3.3.5 #SummitNow #SummitNow
  • 22. Upgrade Strategy Strategy: Accurately predict how my Alfresco instance will behave throughout the upgrade process. Tactic: Validate Tactic: Monitor Tactic: Execute Tactic: Prepare #SummitNow #SummitNow
  • 23. Monitor - Logs • Based on logging output from your dry run, you should be able to determine the overall progress of your upgrade. • What if the logging output appears to be stalled? #SummitNow #SummitNow
  • 24. Monitor - Logs • Stalled? #SummitNow #SummitNow
  • 25. Monitor - JVM • Leverage a Java profiling tool such as YourKit • YourKit will tell you exactly which class and methods are being called. • What if it appears that the upgrade has stalled on a given method call? #SummitNow #SummitNow
  • 26. Monitor – JVM • Still Stalled??? #SummitNow #SummitNow
  • 27. Monitor – SQL Queries • Use your DB vendor-specific tools to monitor the queries being executed • Don’t have MySQL Workbench, SQL Developer, PgAdmin, or SQL Server Mgmt Studio? • Quickly toggle log4j logger for java.sql.* • You must add java.sql to customlog4j.properties #SummitNow #SummitNow
  • 28. Upgrade Strategy Strategy: Accurately predict how my Alfresco instance will behave throughout the upgrade process. Tactic: Validate Tactic: Monitor Tactic: Execute Tactic: Prepare #SummitNow #SummitNow
  • 29. Validate – Smoke Tests • Test basic Alfresco functionality. • Test one or more of your major use cases. • For the latest 4.x versions, leverage WebDrone. #SummitNow #SummitNow
  • 30. Upgrade Strategy Strategy: Accurately predict how my Alfresco instance will behave throughout the upgrade process. Tactic: Validate Repeat for each segment Tactic: Monitor Tactic: Execute Tactic: Prepare #SummitNow #SummitNow
  • 31. Gotchas – Cyclical ACL’s • FixAclInheritancePatch could fail with StackOverflowException during 3.4 upgrade. • Added cyclical ACL detection in 3.4.13 • Jira: MNT-2580 #SummitNow #SummitNow
  • 32. Gotchas – Orphaned Nodes • Orphaned Nodes and Associations to deleted nodes • Reindex could fail with “InvalidNodeRefException: Node does not exist” #SummitNow #SummitNow
  • 33. Gotchas – Orphaned Nodes • Find orphaned nodes: SELECT n.* FROM alf_node n, alf_qname q, alf_namespace ns where q.id = n.type_qname_id and ns.id = q.ns_id and not (ns.uri = 'http://www.alfresco.org/model/system/1.0' AND q.local_name = 'deleted') AND NOT EXISTS (SELECT 1 FROM alf_store where root_node_id = n.id) AND NOT EXISTS (SELECT 1 FROM alf_child_assoc where child_node_id = n.id) #SummitNow #SummitNow
  • 34. Gotchas – Orphaned Nodes • Find associations to deleted nodes: SELECT a.* FROM alf_child_assoc a, alf_node n, alf_qname q, alf_namespace ns where (n.id = a.child_node_id or n.id = a.parent_node_id) and q.id = n.type_qname_id and ns.id = q.ns_id and ns.uri = 'http://www.alfresco.org/model/system/1.0' AND q.local_name = 'deleted' #SummitNow #SummitNow
  • 35. Gotchas – Orphaned Nodes • CAUTION: Do not attempt to fix these by hacking the database! • Detection and fix via Java has been added as of 4.1.4 • Jira: MNT-8531 #SummitNow #SummitNow
  • 36. Gotchas – Nodes without Txn’s • May cause schema updates to fail with *ContraintViolationExceptions. #SummitNow #SummitNow
  • 37. Gotchas – Nodes without Txn’s • Find nodes without transactions: SELECT * FROM alf_node node WHERE node.transaction_id NOT IN ( SELECT id FROM alf_transaction ); #SummitNow #SummitNow
  • 38. Gotchas – Nodes without Txn’s • CAUTION: Do not alter the database without the consent or the assistance of Alfresco Support or Alfresco Consulting. • Fix: UPDATE alf_node set transaction_id = (SELECT MIN(id) from alf_transaction) WHERE transaction_id NOT IN (SELECT id FROM alf_transaction); #SummitNow #SummitNow
  • 39. Gotchas – Long-running Patches • MigrateVersionStorePatch (2.x  3.x) • Run asynchronously as a scheduled job # Never: * * * * * ? 2099 # Once every thirty minutes: 0 0/30 * * * ? version.store.migrateVersionStore.cronExpression=* * * * * ? 2099 # Limit number of version histories to migrate per job cycle, where -1 = unlimited. Note: if limit > 0 then need to schedule job to run regularly in order to complete the migration. version.store.migrateVersionStore.limitPerJobCycle=-1 version.store.migrateVersionStore.runAsScheduledJob=false #SummitNow #SummitNow
  • 40. Gotchas – Long-running Patches • ContentUrlConverterPatch (...  3.2.x) • Run asynchronously as a scheduled job # Never: * * * * * ? 2099 # Once every thirty minutes: 0 0/30 * * * ? system.content.contentUrlConverter.cronExpression=* * * * * ? 2099 system.content.contentUrlConverter.threadCount=2 system.content.contentUrlConverter.batchSize=500 system.content.contentUrlConverter.runAsScheduledJob=false #SummitNow #SummitNow
  • 41. Gotchas – Long-running Patches • NodeDeleted.sql (…  4.1.x) • Renames alf_node to t_alf_node • Recreate the alf_node table without the node_deleted column • Insert all rows from t_alf_node into alf_node • Drop the temporary t_alf_node table #SummitNow #SummitNow
  • 42. Gotchas – Database Statistics • Don’t forget to recompute your database statistics! • Without histograms if you’re using Oracle #SummitNow #SummitNow
  • 43. Summary • Be meticulous! • Have attention to detail! • Leave nothing up to mystery! • There should be no surprises. • “Know thy self, know thy enemy. A thousand battles, a thousand victories” • [1] Sun Tzu, The Art of War [1] #SummitNow #SummitNow
  • 44. Summary • “The supreme art of war is to subdue the enemy without fighting.” [1] • [1] Sun Tzu – The Art of War #SummitNow #SummitNow
  • 45. Contact Information • • • • Kyle Adams Solutions Engineer at Alfresco Email: kyle.adams@alfresco.com Twitter: @kylefadams #SummitNow #SummitNow