Projects
home:rottame:rubygems
rubygem-ygg_provisioner
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 10
View file
rubygem-ygg_provisioner.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Thu Jun 4 06:51:32 UTC 2026 - Angelo Grossini <rottame@intercom.it> + +- update to version 1.5.2 + +------------------------------------------------------------------- Thu Jan 15 16:23:20 UTC 2026 - Angelo Grossini <rottame@intercom.it> - update to version 1.5.1
View file
rubygem-ygg_provisioner.spec
Changed
@@ -1,7 +1,7 @@ %define mod_name ygg_provisioner %define mod_full_name %{mod_name}-%{version} Name: rubygem-ygg_provisioner -Version: 1.5.1 +Version: 1.5.2 Release: 0 Summary: Yggdra base provisioner License: Apache-2.0
View file
ygg_provisioner-1.5.1.gem/checksums.yaml.gz -> ygg_provisioner-1.5.2.gem/checksums.yaml.gz
Changed
@@ -1,7 +1,7 @@ --- SHA256: - metadata.gz: cc9cddf53486ff84cceab134fad2fa63fdcd9f8df73da00dde290a1ba42c1301 - data.tar.gz: ac55e93f4711ace0ce768deb6048c84619429548e7274e190c69dfb0ef842ea8 + metadata.gz: 4d1c10957e5a55056b8b09dee1f0ab9ed7e7e26025603c8deeaebd73433d7972 + data.tar.gz: 71e7a1992b1680cea353a89859728886e20387c21336a8254a7557023e6a57c8 SHA512: - metadata.gz: 54515cf7b602d890652dc2e4c570861d9a2ef2be45ecda2778727c39c0fb4c36753050e64a5bb4dccbf5541ce2396c1f9dd05c89eee114520a6b1d4fa17e033e - data.tar.gz: bbf606aad91c5331f354e64ec5f9d8a93232f675780ba219f32fbb41d7f6fbb8a6aca41a70e4a5b7ea749dfa11d5891a17648bba98723c8113c9a2bd8f5c7575 + metadata.gz: 2580f18465f7c52bd5890f25751eed6d78ce45cb859ab2eebaf013957e5570eb025071bb6cd3a31d3e9d8e9cba1b5ea06d70dbda75089789f0133f56e40e14d0 + data.tar.gz: 7aaf8919dfb4437466c6d156b25614de290e5f35c695c80ec3b9bdce3a7abb3445a3b5ecff480ac5cfbbe4406515f5bafd64ce6bfd5a0a74a4299e86e41ad3c6
View file
ygg_provisioner-1.5.1.gem/data/Gemfile.lock -> ygg_provisioner-1.5.2.gem/data/Gemfile.lock
Changed
@@ -1,7 +1,7 @@ PATH remote: . specs: - ygg_provisioner (1.5.0) + ygg_provisioner (1.5.2) eventmachine (~> 1.2.3) publisher tomte-agents (~> 1.1, >= 1.1.1)
View file
ygg_provisioner-1.5.1.gem/data/build/rubygem-ygg_provisioner.changes -> ygg_provisioner-1.5.2.gem/data/build/rubygem-ygg_provisioner.changes
Changed
@@ -1,4 +1,9 @@ ------------------------------------------------------------------- +Thu Jan 15 16:23:20 UTC 2026 - Angelo Grossini <rottame@intercom.it> + +- update to version 1.5.1 + +------------------------------------------------------------------- Mon Dec 1 16:51:03 UTC 2025 - Angelo Grossini <rottame@intercom.it> - update to 1.5.0
View file
ygg_provisioner-1.5.1.gem/data/lib/ygg/provisioner/model_store.rb -> ygg_provisioner-1.5.2.gem/data/lib/ygg/provisioner/model_store.rb
Changed
@@ -7,12 +7,11 @@ class << self def instantiate(spec) - case - #when spec.is_a?(String) && spec.end_with?('.kch') + #if spec.is_a?(String) && spec.end_with?('.kch') # Kyotocabinet.new(spec) - when spec.is_a?(String) && spec.end_with?('.sqlite3', '.sqlite', '.db') + if spec.is_a?(String) && spec.end_with?('.sqlite3', '.sqlite', '.db') Sqlite3.new(spec) - when spec.is_a?(String) && spec.end_with?('.lmdb', '.mdb') + elsif spec.is_a?(String) && spec.end_with?('.lmdb', '.mdb') Lmdb.new(spec) else raise ArgumentError, "Unsupported store specification: #{spec.inspect}"
View file
ygg_provisioner-1.5.1.gem/data/lib/ygg/provisioner/model_store/lmdb.rb -> ygg_provisioner-1.5.2.gem/data/lib/ygg/provisioner/model_store/lmdb.rb
Changed
@@ -1,6 +1,7 @@ require 'ygg/provisioner/model_store/base' require 'lmdb' require 'fileutils' +require 'active_support/core_ext/numeric/bytes' module Ygg module Provisioner @@ -12,6 +13,8 @@ # l'interfaccia {Ygg::Provisioner::ModelStore::Base}, memorizzando # un semplice key/value con valori marshal‑izzati. class Lmdb < Base + MAPSIZE = 4.kilobytes * 255 + def initialize(spec) super @env = nil @@ -20,24 +23,32 @@ # Restituisce il valore opaco associato a +key+ o +nil+ se assente. def get(key) + key = key.to_s with_db do |db| - raw = dbkey.to_s + raw = dbkey raw && unmarshal(raw) end end # Imposta il valore opaco associato a +key+. def put(key, value) + key = key.to_s with_db do |db| - dbkey.to_s = marshal(value) + transaction do + db.delete(key) if db.has?(key) + dbkey = marshal(value) + end end end # Elimina la chiave indicata, restituendo true se esisteva. def delete(key) + key = key.to_s with_db do |db| - existed = db.has?(key.to_s) - db.delete(key.to_s) if existed + existed = db.has?(key) + transaction do + db.delete(key) if existed + end existed end end @@ -57,7 +68,9 @@ db.cursor do |cursor| record = cursor.first while record do - block.call(*record) + transaction do + block.call(*record) + end record = cursor.next end end @@ -67,25 +80,31 @@ private + def open_lmdb_env(mapsize = nil) + # Crea la directory se non esiste + db_path = database_configuration + FileUtils.mkdir_p(db_path) unless File.directory?(db_path) + options = { maxdbs: 1 } + options:mapsize = mapsize if mapsize + LMDB.new(db_path, options) + end + # Apre il DB, esegue il blocco e lo chiude. - def with_db + def with_db(&block) if @db - @env.transaction do - yield @db - end + yield @db else - # Crea la directory se non esiste - db_path = database_configuration - FileUtils.mkdir_p(db_path) unless File.directory?(db_path) - - # Apri l'ambiente LMDB - @env = LMDB.new(db_path, maxdbs: 1) + @env = open_lmdb_env + usage = lmdb_usage(@env.info, @env.stat) + if usage:used_bytes + MAPSIZE >= usage:map_size + new_size = usage:map_size + MAPSIZE + @env.close + @env = open_lmdb_env(new_size) + end @db = @env.database begin - @env.transaction do - yield @db - end + yield @db ensure @env.close if @env @db = nil @@ -93,6 +112,23 @@ end end end + + def transaction(&block) + @env.transaction do + yield + end + end + + def lmdb_usage(info, stat) + info = @env.info + stat = @env.stat + { + map_size: info:mapsize, + page_size: stat:psize, + last_page_number: info:last_pgno + 1, + used_bytes: stat:psize * (info:last_pgno + 1), + } + end end end
View file
ygg_provisioner-1.5.1.gem/data/lib/ygg/provisioner/model_store/sqlite3.rb -> ygg_provisioner-1.5.2.gem/data/lib/ygg/provisioner/model_store/sqlite3.rb
Changed
@@ -19,7 +19,7 @@ # Restituisce il valore opaco associato a +key+ o +nil+ se assente. def get(key) with_db do |db| - raw = db.get_first_value('SELECT value FROM kv_store WHERE key = ?', key) + raw = db.get_first_value('SELECT value FROM kv_store WHERE key = ?', normalize_key(key)) raw && unmarshal(raw) end end @@ -29,7 +29,7 @@ with_db do |db| db.execute( 'INSERT OR REPLACE INTO kv_store(key, value) VALUES(?, ?)', - key, SQLite3::Blob.new(marshal(value)), + normalize_key(key), SQLite3::Blob.new(marshal(value)) ) end end @@ -37,7 +37,7 @@ # Elimina la chiave indicata, restituendo true se esisteva. def delete(key) with_db do |db| - db.execute('DELETE FROM kv_store WHERE key = ?', key) + db.execute('DELETE FROM kv_store WHERE key = ?', normalize_key(key)) db.changes > 0 end end @@ -56,6 +56,7 @@ with_db do |db| db.execute('SELECT key, value FROM kv_store') do |row| key, raw = row + key = key.to_s.b block.call(key, raw) end end @@ -89,6 +90,10 @@ end end end + + def normalize_key(key) + SQLite3::Blob.new(key.to_s.b) + end end end
View file
ygg_provisioner-1.5.1.gem/data/lib/ygg/provisioner/version.rb -> ygg_provisioner-1.5.2.gem/data/lib/ygg/provisioner/version.rb
Changed
@@ -11,7 +11,7 @@ module Ygg module Provisioner - VERSION = '1.5.1' + VERSION = '1.5.2' end end
View file
ygg_provisioner-1.5.1.gem/data/spec/ygg/provisioner/model_store_shared_examples.rb -> ygg_provisioner-1.5.2.gem/data/spec/ygg/provisioner/model_store_shared_examples.rb
Changed
@@ -57,4 +57,20 @@ expect(seen).to eq(data) end + + it 'normalizes keys' do + store.put(100, 'foo') + expect(store.get(100)).to eq('foo') + expect(store.get('100')).to eq('foo') + expect(store.get(:'100')).to eq('foo') + expect(store.get('100'.force_encoding('UTF-8'))).to eq('foo') + expect(store.get('100'.force_encoding('ASCII-8BIT'))).to eq('foo') + + expect { + store.put('€', 'bar') + store.put(:'€', 'bar') + store.put('€'.force_encoding('UTF-8'), 'bar') + store.put('€'.force_encoding('ASCII-8BIT'), 'bar') + }.to change(store, :count).by(1) + end end
View file
ygg_provisioner-1.5.1.gem/metadata.gz -> ygg_provisioner-1.5.2.gem/metadata.gz
Changed
@@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: ygg_provisioner version: !ruby/object:Gem::Version - version: 1.5.1 + version: 1.5.2 platform: ruby authors: - Daniele Orlandi
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.