rbarman 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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