rbarman 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,6 +13,9 @@ module RBarman
13
13
  # @return [String, nil] name of the server to which the backup belongs.
14
14
  attr_accessor :server
15
15
 
16
+ # @return [Integer, nil] the backup's PostgreSQL version
17
+ attr_accessor :pg_version
18
+
16
19
  # @overload id
17
20
  # @return [String, nil] id (like '20130304T080002') which identifies
18
21
  # the backup and is unique among all backups of a server.
@@ -211,7 +214,14 @@ module RBarman
211
214
  if @begin_wal.xlog == xlog.to_s.rjust(8,'0')
212
215
  start = @begin_wal.segment.to_i(16)
213
216
  end
214
- (start..254).each do |seg|
217
+
218
+ # http://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3#WAL_filenames_may_end_in_FF
219
+ end_segment = 255
220
+ if @pg_version.nil? || @pg_version < 90300
221
+ end_segment = 254
222
+ end
223
+
224
+ (start..end_segment).each do |seg|
215
225
  w = WalFile.new
216
226
  w.timeline = @begin_wal.timeline
217
227
  w.xlog = xlog.rjust(8,'0')
@@ -117,13 +117,13 @@ module RBarman
117
117
  def wal_files(server, backup_id)
118
118
  lines = run_barman_command("list-files --target wal #{server} #{backup_id}")
119
119
  wal_files = parse_wal_files_list(lines)
120
- xlog_db_lines = file_content("#{@barman_home}/#{server}/wals/xlog.db")
120
+ xlog_db = read_xlog_db(server)
121
121
  wal_files.each do |w|
122
122
  wal = "#{w.timeline}#{w.xlog}#{w.segment}"
123
- lines = xlog_db_lines.grep(/^#{wal}\t.+/)
124
- raise(RuntimeError, "Found more than one wal file entry in xlog.db for #{wal}") if lines.count > 1
125
- raise(RuntimeError, "Could not find any entry for #{wal} in xlog.db") if lines.count == 0
126
- wal_file_info_from_xlog_db_line(w, lines[0])
123
+ entry = xlog_db[wal]
124
+ w.size = entry[:size]
125
+ w.compression = entry[:compression].downcase.to_sym
126
+ w.created = entry[:created].to_i
127
127
  end
128
128
  return wal_files
129
129
  end
@@ -162,6 +162,8 @@ module RBarman
162
162
  s.base_backups_dir = value
163
163
  when "wals_directory"
164
164
  s.wals_dir = value
165
+ when "server_txt_version"
166
+ s.pg_version = value
165
167
  end
166
168
  end
167
169
  return s
@@ -249,21 +251,12 @@ module RBarman
249
251
  backup.end_wal = WalFile.parse(value)
250
252
  when "pgdata"
251
253
  backup.pgdata = value
254
+ when "version"
255
+ backup.pg_version = value.to_i
252
256
  end
253
257
  end
254
258
  end
255
259
 
256
- # Assigns size, created and compression values to a {WalFile} by parsing a line from xlog.db
257
- # @param [WalFile] wal_file the wal file
258
- # @param [String] line a string like '00000001000005A9000000BC\\t4684503\t1360568429.0\\tbzip2'
259
- # @return [void]
260
- def wal_file_info_from_xlog_db_line(wal_file, line)
261
- splitted = line.split("\t")
262
- wal_file.size = splitted[1]
263
- wal_file.created = splitted[2].to_i
264
- wal_file.compression = splitted[3].downcase.to_sym
265
- end
266
-
267
260
  # Converts the size according to the unit to bytes
268
261
  # @param [Numeric] size the size
269
262
  # @param [String] unit the unit, like `B`, `KiB`, `MiB`, `GiB` or `TiB`
@@ -356,5 +349,18 @@ module RBarman
356
349
  def file_content(path)
357
350
  return File.readlines(path).map { |l| l.chomp }
358
351
  end
352
+
353
+ def read_xlog_db(server)
354
+ result = Hash.new
355
+ File.readlines("#{@barman_home}/#{server}/wals/xlog.db").each do |line|
356
+ splitted = line.chomp.split("\t")
357
+ result[splitted[0]] = {
358
+ :size => splitted[1],
359
+ :created => splitted[2],
360
+ :compression => splitted[3].downcase.to_sym
361
+ }
362
+ end
363
+ result
364
+ end
359
365
  end
360
366
  end
@@ -45,6 +45,10 @@ module RBarman
45
45
  # @return [Backups, nil] server backups
46
46
  attr_accessor :backups
47
47
 
48
+ # @param [String] PostgreSQL version
49
+ # @return [String] PostgreSQL version
50
+ attr_accessor :pg_version
51
+
48
52
 
49
53
  # Creates a new instance of {Server}
50
54
  def initialize(name)
@@ -1,3 +1,3 @@
1
1
  module RBarman
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -60,6 +60,10 @@ module RBarman
60
60
  def initialize
61
61
  end
62
62
 
63
+ def to_s
64
+ "#{timeline}#{xlog}#{segment}"
65
+ end
66
+
63
67
  def timeline=(timeline)
64
68
  validate(timeline)
65
69
  @timeline = timeline
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbarman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Holger Amann
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-10-19 00:00:00.000000000 Z
12
+ date: 2013-10-21 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - '>='
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - '>='
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: mixlib-shellout
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -88,25 +97,32 @@ files:
88
97
  homepage: https://github.com/sauspiel/rbarman
89
98
  licenses:
90
99
  - MIT
91
- metadata: {}
92
100
  post_install_message:
93
101
  rdoc_options: []
94
102
  require_paths:
95
103
  - lib
96
104
  required_ruby_version: !ruby/object:Gem::Requirement
105
+ none: false
97
106
  requirements:
98
107
  - - '>='
99
108
  - !ruby/object:Gem::Version
100
109
  version: '0'
110
+ segments:
111
+ - 0
112
+ hash: -547344130825939559
101
113
  required_rubygems_version: !ruby/object:Gem::Requirement
114
+ none: false
102
115
  requirements:
103
116
  - - '>='
104
117
  - !ruby/object:Gem::Version
105
118
  version: '0'
119
+ segments:
120
+ - 0
121
+ hash: -547344130825939559
106
122
  requirements: []
107
123
  rubyforge_project:
108
- rubygems_version: 2.1.8
124
+ rubygems_version: 1.8.25
109
125
  signing_key:
110
- specification_version: 4
126
+ specification_version: 3
111
127
  summary: Wrapper for 2ndQuadrant's PostgreSQL backup tool 'barman'
112
128
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 51204ed022e1cb170e2b95a345423251ce9cfbfb
4
- data.tar.gz: 02c0228594aaea19f4e6526645b74212ca55d895
5
- SHA512:
6
- metadata.gz: 2f0e62639147bab58e67c0067f8590217dc267337ca40d72362d4e90eeb9372db410937627e4cb57012369fc2a625c2c782fc463237efb772667e2ae1815ef65
7
- data.tar.gz: fb0fc2ff0e19e5d5a711ac03add7a53a2f1ff740140c9d8d11ff9e49747de6295e8c5a5fcd3a9899b2f8e5b3b43e2d66f40ceb370cfb5b387fd2fae5ac9629bd